Wstęp do Informatyki
Wykład 7
Podstawy
systemu
operacyjnego
Autor: Dr hab. Marek J. Greniewski
Podział na części architektoniczną i
układową współczesnego komputera
Układy we-wy
Procesor
Kompilator
System
operacyjny
(np. Windows 2K)
Aplikacje (np. Netscape)
Układy cyfrowe
Obwody
scalone
Lista rozkazów
określająca architekturę
Ścieżki danych i sterowanie
Bramki i
elementy
pamięci
Pamięć
Hardware
Software
Assemble
r
Magistrala
Komputery pierwszej
generacji
• Pierwsza generacja komputerów charakteryzowała się strukturą,
w której wszystkie moduły, włączając w to moduł wejścia-wyjścia
były sterowane przez jedno urządzenie.
• Nakładanie się operacji różnych urządzeń zewnętrznych było
dozwolone, jednak wysłanie rozkazu do urządzenia
przetwarzającego jeszcze poprzedni rozkaz – powodowało
wstrzymanie całego systemu aż do zakończenia poprzedniego
rozkazu.
• Oznaczało to, że prędkość całego komputera była ograniczana
przez najwolniejsze używane w danej chwili urządzenie lub
moduł.
• Prowadziło to niskiego wykorzystania mocy komputera.
• Wraz z rozwojem liczby użytkowników i zakresu zastosowań
komputerów w wielu dziedzinach, z jednej strony sformułowane
zostały wymagania użytkownika, z drugiej strony wymyślono
rozwiązania sprzętowe oraz programowe umożliwiające
zaspokojenie wymagań użytkowników systemów
komputerowych.
Wymagania użytkowania komputera
• Projektowanie, programowanie i wykonywanie algorytmów musi
być jak najbardziej ułatwione dlatego:
– Zapotrzebowanie na odpowiednie języki
– Zapotrzebowanie na odpowiednie mechanizmy pisania, modyfikowania
oraz testowania algorytmów – umożliwiające potwierdzenie ich
poprawności
– Zapotrzebowanie na podstawowe procedury wielokrotnego wykorzystania
• System musi funkcjonować niezawodnie, co należy rozumieć
jako:
– Z chwilą zakończenia prac nad uruchamianiem programu należy mieć
zaufanie do otrzymywanych rezultatów
– Nie powinny zdarzać się „katastrofy”, które mogłyby uszkodzić lub
zniszczyć informacje nie dające się natychmiast odtworzyć
• Zasoby zużywane przez program muszą być kontrolowane, co
należy rozumieć:
– Nie można dopuścić aby program przekroczył granicę przydzielonego
czasu
– Podział zasobów pomiędzy programy musi być zgodny z przyjętymi
priorytetami.
Rozwiązania
zapotrzebowania
• Większość potrzeb użytkowania systemów komputerowych
jest zaspakajana przez
specjalnie zaprojektowane
oprogramowanie
.
• Oprogramowanie to wprowadzone pomiędzy użytkownika
systemu komputerowego, a sprzęt komputerowy
(hardware) nazwano
systemem operacyjnym (Operating
System)
.
• W skład systemu operacyjnego,wykorzystując podstawowe
mechanizmy tego ostatniego, wchodzi szereg programów
pomocniczych lub usługowych zwanych
utilities
.
• Dodatkowym składnikiem systemu operacyjnego jest
specjalizowany język, który zapewnia komunikację
pomiędzy systemem operacyjnym – a użytkownikiem
systemu komputerowego, który początkowo nazywano
Job
Control Language
.
Cele i funkcje systemu
operacyjnego
•
System operacyjny jest programem – sterującym
wykonywaniem programów aplikacyjnych i działającym
jako interfejs pomiędzy użytkownikiem i sprzętem
(hardware) komputera.
•
System operacyjny realizuje dwojakie cele:
– Ułatwienia w użytkowaniu komputera
– Zapewnienie sprawności wykorzystania komputera.
Programy
aplikacyjne
Programy
narzędziowe
System operacyjny
Sprzęt komputera
Użytkownik
końcowy
Programista
aplikacji
Projektant
systemu
operacyjnego
Programy
aplikacyjne
Programy
narzędziowe
(
utilities
)
System operacyjny
Sprzęt komputera
(
hardware
)
Programy i procesy I
• Podczas wykonywania można wyróżnić trzy niezależne byty:
– Zbiór instrukcji, czyli
procedurę
– składający się na dany program
– Procesor, to jest urządzenie realizujące daną procedurę
– Środowisko, czyli tą część otoczenia, na której zmiany stanów
procesor może bezpośrednio reagować lub które może zmieniać.
• Program idealny
- rozpatrywany jest jako wykonanie
sekwencji rozkazów określonych przez procedurę programu,
w pewnym określonym czasie.
• Podstawowe własności
programu idealnego to
:
– Operacje określone przez procedurę wykonywane są w ścisłym
porządku sekwencyjnym, gdzie po zakończeniu każdego kroku
procedury następuje aktywizacja kroku następnego
– Środowisko znajduje się całkowicie pod kontrolą programu i nie
podlega żadnym zmianom, chyba że zmiany te są wynikiem
rezultatu wykonania programu.
– Z wyjątkiem sytuacji, w których wyniki programu mają być uzyskane
we wskazanym czasie, rzeczywisty czas zużyty na wykonanie każdej
z operacji nie jest istotny z punktu widzenia programu.
• Z powyższego wynika, że
program idealny jest systemem
zamkniętym
, czyli jest wykonywany niezależnie od zdarzeń
występujących poza jego środowiskiem.
Programy i procesy II
• Większość programów aplikacyjnych napisanych w języku
wysokiego rzędu stanowi przybliżenie programu idealnego.
• Różnica jest zwykle trywialna i wiąże się z dostępem do
zegara czasu rzeczywistego lub poleceń dawanych za
pośrednictwem wyrażeń Job Control Language przez
operatora systemu lub użytkownika.
• Programy idealne nie nadają się do zarządzania przez
system operacyjny, z następujących przyczyn:
– Systemowi operacyjnemu stawia się wymaganie efektywnego
wykorzystywania wszystkich składowych systemu komputerowego
– System operacyjny musi zapewnić określony czas rekcji na
otrzymywane polecenia lub zapytania.
• Pierwsze próby stworzenia oprogramowania, które mogły
zapewnić współbieżność operacji i obsłużyć nie dające się
przewidzieć żądania były czynione bez żadnych podstaw
teoretycznych, a w konsekwencji powstawały sytuacje
prowadzące do pewnych niepowtarzalnych błędów o
trudnych do zlokalizowania przyczynach.
Programy i procesy III
• Trudności te doprowadziły do wprowadzania pojęcia „
procesu
”.
• Proces
jest pod wieloma względami podobny pojedynczemu
wykonaniu programu idealnego, składa się również z szeregu
nie współbieżnych kroków, z których każdy w określony
sposób bada lub zmienia środowisko.
• Proces
jest zwykle kontrolowany przez procedurę, która sama
jest częścią środowiska (jest w nim zapamiętana).
• Proces
bez żadnych konsekwencji może być przerywany,
można też zmieniać procesory w w trakcie jego wykonywania.
• Zasadnicza różnica pomiędzy procesem a programem
idealnym polega na tym, że
proces nie jest układem
zamkniętym
, może się komunikować z innymi procesami w
sposób jawny lub niejawny przez zmianę lub badanie swojego
środowiska, które to środowisko jest wspólne dla zbiorowiska
procesów.
• Dzielone pomiędzy procesy środowisko
często jest nazywane
środowiskiem globalnym
, w odróżnieniu od środowiska
pojedynczego procesu - zwanym środowiskiem lokalnym.
Programy i procesy IV
•
We współczesnych systemach komputerowych
wiele
procesorów
może być jednocześnie
aktywnych
.
•
Z drugiej strony jeśli przyjmiemy, że
proces jest jednostką
aktywności procedury
- wykonywaną przez jeden z
procesorów. Inaczej mówiąc,
proces jest pojedynczym
wykonaniem procedury
.
•
Oznacza to, że każdy
proces
jest czymś co ma tymczasowy
„
żywot
”, a zatem istnieje moment kiedy proces się „
rodzi
”
lub jest zainicjowany oraz inny moment, kiedy proces
„
umiera
” po wykonaniu swojego zadania.
•
Ogólnie można powiedzieć, że
poszczególne procesy są
inicjowane przez inne procesy
i że musi istnieć jeden
„
proces główny
”, od którego zaczyna się łańcuch inicjacji.
Ten
główny proces jest aktywizowany uruchomieniem
systemu operacyjnego
.
Stany procesu i
ekstrakody
• W dowolnym momencie życia procesu jego funkcjonowanie
jest opisane przez „stan procesu”.
• Stan procesu wskazuje na to, czy proces jest aktywizowany
– czyli jest
nowym
procesem, czy jest procesem
gotowym
oczekującym na realizację, czy jest aktualnie
realizowany
,
czy z jakichś przyczyn systemowych jest procesem
oczekującym
na dalszą realizację, czy wreszcie jest
procesem, który już wykonał zadanie i został
zatrzymany
.
• Proces komunikuje się z innymi procesami za pomocą tzw.
ekstrakodu
, odwołując się w tym celu do systemu
operacyjnego.
• Ekstrakody dzielą się na dwie grupy:
– Pierwsza zajmuje się
inicjowaniem i kończeniem procesów
– Druga zajmuje się manipulowaniem specjalnymi znacznikami,
zwanymi „
semaforami
”.
Graf stanów procesu
Nowy
Gotowy
Realizowany
Zatrzymany
Oczekujący
Cykl życia procesu
Przykłady stanów procesu
• Proces nowy
. Zadanie zostało przyjęte przez program
szeregujący wysokiego poziomu, lecz nie jest gotowy do
realizacji. System operacyjny inicjuje proces
odpowiadający zadaniu, przesuwając go tym samym do
stanu gotowości.
• Proces gotowy
. Proces jest gotowy do wykonywania i
oczekuje na dostęp do procesora.
• Proces realizowany
. Proces realizowany przez procesor.
• Proces oczekujący
. Realizacja procesu została
zawieszona ze względu na oczekiwanie na dostęp do
wskazanych przez proces zasobów komputera, np.
wejścia-wyjścia.
• Proces zatrzymany
. Proces albo został zakończony z
sukcesem, albo zakończony na skutek błędu
strukturalnego i zostanie zniszczony przez system
operacyjny.
Semafory I
• Jak już powiedzieliśmy ekstrakody dzielą się na dwie grupy:
– Pierwsza zajmuje się
inicjowaniem i kończeniem procesów
– Druga zajmuje się manipulowaniem specjalnymi znacznikami, zwanymi
„
semaforami
” i testowaniu stanu tych ostatnich.
• Każdy fragment środowiska procesu może być określany jako
semafor
.
• Istnieją trzy typy ekstrakodów operujących na semaforach:
– Zmieniania wartości
wskazanego
semafora
w określony sposób
– Zawieszania procesu
wydającego ekstrakod (czyli przestawienie procesu
w stan oczekiwania) na tak długo,
póki określony wartość z semafora
nie jest osiągnięta. Jeśli semafor ma określoną wartość, proces nie jest
zawieszany
– Sprawdzania, czy semafor ma określoną wartość
. Jeśli ma –
wykonywana jest podana operacja na semaforze i kontynuowany jest
proces od następnej instrukcji. Natomiast jeśli semafor niema określonej
wartości, to następuje przekazanie sterowania pod wskazany adres.
• Ostatni z wymienionych ekstrakodów jest operacją
nieprzerywalną.
Semafory II
•
Nazwa „
semafor
” została wybrana w związku z analogią
pomiędzy nadzorowaniem procesów a sygnalizacją w
kolejnictwie.
•
Załóżmy, że
liczne pociągi przybywają
do węzła
A
i muszą
przemieścić się
n-torową
linią do węzła
B
. Linia łącząca
A
z
B
może równocześnie obsłużyć
n
pociągów. Sygnał semafor
S
w
węźle
A
pokazuje w każdej chwili liczbę pociągów na trasie.
Procedura postępowania maszynisty jest następująca:
1. Przybądź do
A
2. Zatrzymaj się jeśli wartość
S
nie jest mniejsze od
n
3. Jeśli
S
nie jest mniejsze od
n
idź do 2. W przeciwnym razie dodaj
1
do
S
4. Przebądź trasę
AB
5. Po dojechaniu do
B
odejmij
1
od
S
6. Udaj się do miejsca przeznaczenia.
•
Kroki
2
,
3
i
5
procedury są ekstrakodami.
•
Jeśli pociąg przybywa do
A
, gdy na linii
AB
jest mniej
pociągów niż
n
, to niema opóźnienia. Jeśli linia jest
zapełniona, to każdy pociąg będzie czekał na bocznicy. Gdy
pociąg opuści w
B
linię, wszyscy maszyniści będą
„aktywizowani”, ale tylko jednemu uda się wjechać na linię. W
tym momencie sygnał
S
powróci do wartości
n
, a pozostali
maszyniści wrócą do stanu oczekiwania – zgodnie z krokiem 2
procedury.
Schemat semafora
Węzeł A Węzeł B
Semafor
Semafory III
• Jako inny przykład użycia semafora rozpatrzmy „bufor danych”.
• Bufory są używane w każdym miejscu, do którego informacje są
dostarczane w innym tempie, od tego w jakim opuszczają to
miejsce.
• Dobrym przykładem jest proces, który przełącza się z bardzo
szybkiego wyprowadzania wyników, np. na drukarkę laserową, w
długi okres przetwarzania, podczas którego nie emituje żadnych
wyników.
• Gdyby takiemu procesowi na stałe przydzielić drukarkę, jego faza
wyprowadzenia wyników uległaby istotnemu spowolnieniu, zaś
podczas fazy przetwarzania – drukarka nie byłaby wykorzystywana.
• Wprowadzając bufor – czyli odpowiednio duży obszar pamięci
komputera, pomiędzy proces a drukarkę, dopasowujemy szybkość
procesu i drukarki. W fazie wyprowadzania wyników, proces
dokonuje zapisu w buforze, z którego następnie odbywa się
drukowanie z maksymalną szybkością.
Bufor drukarki
• Przyjmijmy, że bufor składa się z obszaru pamięci o
pojemności
n
rekordów (linii wydruku), oznaczonych numerami
0
,
1
, ... (
n-1
).
• Obszar jest cykliczny, czyli że rekord
0
przylega do rekordu (
n-
1
).
• Z buforem związane są dwa
wskaźniki
(strzałki)
p
i
q
. Przy
czym
p
jest wskaźnikiem wejściowym, według którego proces
wpisuje do rekordu wygenerowaną linię,
q
jest wskaźnikiem
wyjściowym i wskazuje rekord zawierający następną linię
oczekującą na wydruk.
• Wskaźniki zmieniają swoją wartość tylko po zakończeniu
operacji wprowadzania i wyprowadzania z bufora.
• Dodawanie
1
do wskaźników
p
i
q
odbywa się modulo
n
.
• Z buforem współpracują dwa procesy. Jeden z nich stanowi
wykonanie procedury generującej kolejne linie, drugi jest
odpowiedzialny za wydruk z bufora.
• Zadaniem procesu drukowania jest utrzymanie drukarki w
ciągłej pracy, chyba że bufor jest pusty. Ta sytuacja zaistnieje,
gdy
p
=
q
+
1
(mod
n
).
Schemat blokowy ładowania
bufora
Ustaw semafory
p:= 1 q:=0
Dodaj 1 do p
(mod n)
Zapamiętaj
linię pod p
Zawieś się
jeśli p=q
Aktywuj proces
drukowania
Generuj wiersz
wyników
start
Schemat procesu drukowania
Zawieś się
jeśli p=q+1
Dodaj 1 do q
(mod n)
Drukuj
linię q
Start
Sterowanie procesami I
• Jak zostało wcześniej powiedziane, każdy
proces składa się z
sekwencji prostych operacji
– w określony sposób zmieniających
środowisko.
• Proces
może być
przerywany
pomiędzy kolejnymi operacjami i
następnie wznawiany
bez żadnych niezamierzonych
konsekwencji, o ile
lokalnemu środowisku zostanie przywrócony
stan sprzed przerwania
.
• W działającym systemie komputerowym mamy do czynienia z
wieloma procesami. Część z nich jest
zawieszona
(
oczekująca
),
część jest
gotowa
, a część jest
realizowana
. Zakończony proces
nie istnieje dalej, bo jest po prostu usuwany (tak jak spektakl
teatralny z chwilą opadnięcia kurtyny).
• Rozpatrzmy pierwszy nadmiarowy system komputerowy zdolny
do wykonywania procesów współbieżnych. System ten zawiera:
– Środowisko
– Procesory
– Linie sygnałowe i sterujące
Struktura sterowania
Pamięć
Procedura
sterująca
Procesor
sterujący
Procesor A
Procesor B
Procesor C
Tablice
procesów
Środowisko
Procesory
Linie sterujące
Linie sygnałowe
Sterowanie procesami II
• Środowisko
obejmuje to wszystko, co komputer może zbadać
lub zmienić, włączając w to pamięci wszelkich typów, dane w
urządzeniach wejścia-wyjścia, a nawet puste formularze i
papier w tych urządzeniach.
• Procesory
obejmują wszystkie urządzenia, które mogą
wywierać wpływ na środowisko. Dzielą się one na dwie grupy:
– Procesory „centralne”
sterowane przez zapamiętane instrukcje
pobierane ze wskazanego miejsca środowiska
– „Urządzenia wejścia-wyjścia”
działające zgodnie z określonymi
sekwencjami sterującymi.
• Oba typy procesorów
mają tę własność, że począwszy od
wskazania im odpowiednich danych (takich jak adres pierwszej
instrukcji w zapamiętanej sekwencji lub adres obszaru pamięci,
którego zawartość ma zostać przemieszczona)
mogą być
aktywizowane i działać autonomicznie
.
• Stwarza to możliwość
jednoczesnego działania wielu
procesorów
, o ile tylko kolizje występujące przy jednoczesnym
dostępie do pamięci rozstrzygane będą przez układ arbitrażu
(zrealizowany sprzętowo).
Sterowanie procesami III
• Przyjmijmy, że jest
dostatecznie dużo procesorów różnych
typów
, tak aby można było
obsłużyć każdy nowo utworzony
proces
.
• Załóżmy, że
steruje pracą komputera
wyspecjalizowany
procesor centralny, zwany dalej
procesorem sterującym
,
działający zgodnie z
procedurą sterowania
przechowywaną w
pamięci.
• Procesor sterujący ma specjalne
linie komunikacyjne
z
pozostałymi procesorami (są to linie:
sygnałowe
i
sterujące
).
Może on aktywizować te procesory ustalając w nich dowolne
warunki początkowe. Jest ponadto informowany gdy tylko
któryś z procesorów zakończy wykonywanie procesu lub
wykona ekstrakod komunikacyjny.
• Procesor sterujący prowadzi
rejestr
(tablica procesów)
wszystkich
istniejących procesów oraz powodów zmiany ich
stanów
. Procesor sterujący oczekuje na zdarzenia i określa ich
przyczyny, aktualizując zapisy w tablicy procesów.
Sterowanie procesami IV
• Jeśli
zdarzeniem
jest pojawienie się ekstrakodu
żądającego
utworzenia nowego procesu
, procesor sterujący
tworzy nowy
proces i go aktywizuje
.
• Każdy proces
po wykonaniu przez procesor centralny ekstrakodu
komunikacji
musi być
zawieszony
, do czasu wznowienia go przez
procesor sterujący.
• W odróżnieniu jednak od każdego z procesorów realizujących
przy-porządkowany mu proces,
procesor sterujący nie panuje nad
nad wykonywaniem procesów przez poszczególne procesory
.
• Natomiast pozostałe
procesory mogą zażądać obsługi
ze strony
procesora sterującego
w dowolnym momencie
.
• Nie jest do pomyślenia sytuacja, w której
procesor sterujący
zaniechałby obsługi
jednego z procesorów,
gdy żądanie obsługi
przyjdzie
od innego. Dlatego też
wszystkie zdarzenia
, które
wystąpią wtedy gdy procesor sterowania jest zajęty,
są
umieszczane w kolejce oczekiwania
na obsługę. Po zakończeniu
wykonywanej obsługi,
procesor sterujący pobiera kolejne zadanie
z kolejki
oczekiwania na obsługę.
Sterowanie procesami V
•
W omawianej organizacji komputera, jest
nierealnym
rozwiązanie
zapewnienia tak wielu procesorów, aby
zawsze
istniał choć jeden gotowy
dla każdego nowego procesu
.
•
W rzeczywistości należy przyjąć, że
niekiedy procesy muszą
zostać wstrzymane, ponieważ nie będzie dostępnych
procesorów
. Co z kolei stwarza problem przydziału,
ponieważ za każdym razem kiedy procesor zostaje
zwolniony,
należy podjąć decyzję któremu procesowi
przydzielić zwolniony procesor
.
•
Wyboru tego procesor sterujący dokonuje posługując się
„
algorytmem szeregowania procesów
”.
•
Jak widać z powyższego,
procesor sterujący jest mało
obciążony
. Można zatem
pozbyć się go
całkowicie i
rozłożyć
jego funkcję
pomiędzy pozostałe
procesory centralne
.
Sterowanie procesami VI
•
Wynika stąd, że każdy procesor centralny będzie odgrywał
dwie role (działając w dwu różnych trybach: „normalnym” i
„sterującym”) oraz będzie zmuszony dokonywać
odpowiednich przełączeń pomiędzy nimi.
•
W trybie „normalnym” będzie realizował proces i będzie
narażony na przerwania.
•
W trybie „sterującym” zaś, otrzyma prawa nadzoru nad
pozostałymi procesorami i nie będzie narażony na
przerwania. Tryb sterujący często nazywany jest trybem
„obsługi przerwań”. Wszystkie procesory centralne działając
w trybie „sterującym” realizują kopie procedury sterowania
systemem komputerowym.
•
Jest rzeczą możliwą, że kilka procesorów równocześnie
działa w trybie „sterującym”, należy więc zapewnić, aby nie
przeszkadzały sobie wzajemnie podczas wykonywania
operacji na tablicach stanów procesów.
Sterowanie procesami VII
• Aktywowanie procesu sterowania dokonywane jest następująco:
– Za każdym razem gdy wykonywany jest ekstrakod komunikacji w procesie
realizowanym na procesorze centralnym, procesor zostaje przełączony na
tryb sterujący, po zapamiętaniu stanu procesu, ten ostatni jest
zawieszany.
– Za każdym razem gdy proces wejścia-wyjścia kończy się, urządzenie
sygnalizuje zdarzenie wysłaniem przerwania. Przerwanie jest kierowane
do jednego z centralnych procesorów, a ten po przełączeniu z trybu
normalnego na tryb sterujący, obsługuje to zdarzenie. Wiąże się to
zwykle, z tak szybkim jak to jest możliwe, obsłużeniem urządzenia.
– Wyznaczanie procesora centralnego do obsługi przerwania może
odbywać się za pomocą tzw. wybieraka, który przejrzy kolejno procesory
centralne, aż znajdzie taki, który nie działa, w danym momencie, w trybie
sterującym. Jeśli wszystkie procesory działają w trybie sterującym –
przerwanie jest umieszczane w kolejce.
• Gdy tylko któryś procesor centralny zakończy pracę w trybie
sterującym, przechodzi w tryb normalny i zostanie przydzielony
do realizowania procesu gotowego – oczekującego w kolejce na
realizację. Przydzielony proces nie musi być tym samym, który
został przerwany.
Sterowanie procesami VIII
• Odmiennym od rodzajem komputera z kilkoma centralnymi
procesorami jest system kierujący wszystkie przerwania do
jednego tylko procesora.
– Rozwiązanie to odznacza się prostotą, ponieważ tylko jeden musi
pracować w dwu trybach i sterować procesami.
– Z drugiej stronny czas obsługi zdarzeń jest zwykle dłuższy, a komputer
taki jest bardziej wrażliwy na awarię niż system z rozproszoną funkcją
sterowania.
• Skrajnym przypadkiem
jest
komputer z jednym procesorem
centralnym
. Przypadek ten jest istotny, bo jest typowy dla
większości komputerów.
• Rozważmy z kolei bardzo uproszczony komputer, który nie
odpowiada żadnej rzeczywistemu rozwiązaniu, lecz pozwoli
wyjaśnić podstawowe zasady działania.
• Przyjmijmy, że
komputer
ten ma
pamięci operacyjną i dyskową
oraz
czytnik dokumentów
i
drukarkę laserową
.
• W chwili początkowej wszystkie urządzenie wejścia-wyjścia nie
pracują, a procesor realizuje proces, który w pewnym momencie
wykonuje ekstrakod żądający aktywizacji, któregoś z urządzeń
wejścia-wyjścia. Procesor przełącza się w tryb sterowania i
posługując się jedną z linii
A
1
do
A
3
, aktywizuje odpowiednie
urządzenie zewnętrzne po czym powróci do uprzednio
wykonywanego procesu. Jak urządzenie zakończy transmisję, co
zasygnalizuje po linii
B
„
rejestr przerwań
”. Co znowu spowoduje
zmianę trybu pracy procesora.
Sterowanie procesami w
systemie
jednoprocesorowym
Pamięć
operacyjna
Drukarka
laserowa
Pamięć
dyskowa
Czytnik
dokumentów
Procesor
centralny
Rejestr przerwań
B
B
1
A
1
A
3
B
3
A
2
B
2
A
i
– linie sterowania
B
i
– linie przerwań
B – stan rejestru
przerwań
• Ekstrakod inicjuje nowy
proces
• Ekstrakod kończy proces
• Ekstrakod zawiesza proces
aż do spełnienia warunku
• Ekstrakod zmienia wartość
semafora
• Po każdym zdarzeniu
• Procedura konstruuje nowy rekord
stanu
• Procedura znajduje i usuwa rekord
stanu
• Procedura sprawdza warunek. Jeśli
nie spełniony zawiesza proces
• Procedura zmienia stan i przegląda
listę rekordów procesów
oczekujących, jeśli trzeba zmienia
stan na gotowy
• Procedura przegląda listę rekordów i
wybiera jeden proces w stanie
gotowy aby realizować (uruchomić)
Zdarzenia: Działania:
Działania na liście rekordów
procesów
Podstawowy rekord każdego procesu składa się z kilku odrębnych
pól. Rekordy procesów tworzą listę procesów. Każdy rekord
zawiera stan procesu (nowy, gotowy, realizowany, zawierzony).
Przejście procesu do stanu zakończony - powoduje usunięcie
rekordu procesu z listy procesów.
Wczesne systemy operacyjne
• Systemy operacyjne wsadowe pojawiły się na przełomie lat 50-
60 XX wieku, podlegając dalszemu rozwojowi.
• Początkowo miały postać „
monitora wsadowego
”, czyli
programu rezydentnego zarządzającego zadaniami
pojedynczego wsadu. Rozwojowi funkcjonalności monitorów
towarzyszyło powstanie nowych mechanizmów komputera, a
między innymi:
– Rejestru bariery adresowej
pomiędzy programem monitor, a programem
aplikacyjnym.
– Rozkazów uprzywilejowanych
, które mogły występować tylko w
programie monitor.
– Czasomierza
– dla zapobiegania monopolizacji komputera przez zadanie.
• Monitor wczytywał po jednym zadania wsadu, poczym lokował
je w obszarze programu aplikacyjnego, a następnie przekazywał
sterowanie załadowanemu programowi aplikacyjnemu.
• Po zakończeniu wykonywania zadania, pojawiało się przerwanie,
np. wywoływane przez rozkaz stop programu aplikacyjnego,
które powoduje przekazanie sterowania programowi monitor.
Podział pamięci dla
wczesnego monitora
wsadowego
Obszar pamięci
wykorzystywany
przez kompilator
lub program aplikacyjny
po kompilacji
Obszar pamięci
przydzielony na stałe
monitorowi wsadowemu
Przetwarzanie wsadowe
Kolejka
zadań
Wykonywanie
zadań
Domena
komputera
Wyniki
Zadania:
program aplikacyjny,
dane i dyrektywy
Domena
użytkownika
Cykl pracy monitora
wsadowego
Czy są jeszcze
prace?
Czy praca
zawiera błędy?
Wykonaj
program
wynikowy
Kompiluj
następną
pracę
Start
Stop
Tak
Nie
Tak
Nie
Wady monitora
wsadowego I
• Monitor wsadowy posiadał szereg wad, które powodowały, że
pracował on znacznie mniej sprawnie, niż sugerował to opis
działania.
• Główną wadą tradycyjnego przetwarzania wsadowego jest to,
że użytkownik nie ma możliwości interakcji z programem po
dostarczeniu go do kolejki zadań. Wprawdzie takie
rozwiązanie jest akceptowane w przypadku niektórych
zastosowań, takich jak np. listy płac, w których dane i decyzje
dotyczące przetwarzania są ustalone z góry.
• Metody wsadowej nie daje się stosować, jeśli użytkownik musi
porozumiewać się z programem w czasie jego wykonywania.
Przykładem może tu być system rezerwacji miejsc, który musi
podawać na bieżąco informacje o dokonanych i
odwoływanych rezerwacjach, w miarę ich pojawiania się.
Wady monitora
wsadowego II
• Przyczyna braków leżała w tym, że monitor nie ma nad
wykonaniem programu większej kontroli niż jakikolwiek
inny program nad swoimi podprogramami.
– Jeśli program wynikowy (aplikacyjny) próbuje wykonać rozkaz
nielegalny, to system komputerowy zostaje zatrzymany;
– Jeśli program wynikowy (aplikacyjny) wpadnie w martwą pętlę, to
wciąga w nią cały system komputerowy;
– Nie istnieje żadna możliwość powstrzymania błędnego programu
wynikowego (aplikacyjnego) przed zniszczeniem części monitora.
• W praktyce oznaczało to konieczność interwencji
operatora, w celu usunięcia martwej pętli lub efektów
„kolizji” (na ogół raz na 10-12 prac).
• Dodatkowo monitory nakładały szereg ograniczeń na
programy aplikacyjne.
Dyrektywy – Job Control
Language
• We wczesnych monitorach wsadowych z każdym zadaniem
dostarczano zbiór instrukcji opisujących kroki, które należy
wykonać w celu przygotowania komputera do realizacji danego
zadania.
• Instrukcje te zapisywano w specjalnym języku sterowania
zadaniami (
Job Control Language
) i umieszczano je razem z
zadaniem w kolejce zadań.
• Po wybraniu zadania do wykonania przez monitor, na drukarce
konsoli operatorskiej monitor drukował , dzięki czemu mógł je
przeczytać i wykonać operator. Instrukcje, które wymagały
podjęcia pewnych czynności przez operatora np. załadowanie
taśmy magnetycznej z kompilatorem języka FORTRAN, musiały
być wykonane aby komputer mógł zrealizować zadanie.
• Zadaniem języka sterowania zadaniami, było między innymi,
komunikacja z operatorem komputera.
• Dzisiaj języki sterowania zadaniami, służą do komunikacji z
systemem operacyjnym, zaś sama funkcja operatora
komputera stała się czymś rzadko spotykanym. Funkcje
operatora częściowo przejął użytkownik, a częściowo
administrator systemu operacyjnego.
Przykład wsadu z rozkazami JCL
(Job Control Language)
• Rozkaz początku wsadu
$JOB
• Polecenie uruchomienia kompilatora języka Fortran
$FTN
• Plik kart z instrukcjami programu w języku Fortran
• Polecenie załadowania skompilowanego programu
$LOAD
• Polecenie wykonania załadowanego programu
$RUN
• Plik kart z danymi dla programu
• Rozkaz zakończenia wsadu
$END
Podział pamięci dla zaawansowanego
monitora
Programy – sterowniki urządzeń
wejścia-wyjścia
Programy obsługi przerwań
Program szeregowania zadań
Interpreter języka sterowania JCL
Obszar kompilatorów lub
programów aplikacyjnych
oraz danych tych programów
Monitor
Bariera
Niedostatki wczesnych systemów
operacyjnych
• Planowanie. W większości systemów używano kartki papieru
w celu zarezerwowania czasu komputera, zwykle w
wielokrotnościach pół godziny. Użytkownik mógł wystąpić o
godzinę, a zakończyć pracę w ciągu 45 minut; wynikiem tego
był stracony czas komputera. Użytkownik mógł też natrafić na
problemy, nie ukończyć pracy w przydzielonym czasie i
przerwać ją przed rozwiązaniem zadania.
• Czas na przygotowanie. Pojedynczy program, nazywany
zadaniem, mógł obejmować ładowanie do pamięci kompilatora
oraz programu w języku wysokiego poziomu (program
źródłowy), zachowanie programu skompilowanego (program
wynikowy), a następnie ładowanie i łączenie ze sobą programu
wynikowego i funkcji standardowych. Każdy z tych kroków mógł
zawierać zakładanie i wyjmowanie taśm magnetycznych oraz
przygotowanie paczek kart perforowanych. W wyniku tracono
wiele czasu komputera na przygotowanie programu
aplikacyjnego do pracy.
Przetwarzanie
interakcyjne
Wykonywanie
programów aplikacyjnych
Domena
komputera
Programy, dane, dyrektywy i wyniki
Domena
użytkowników
Interakcyjne systemy
operacyjne
• Dla zapewnienia możliwości przetwarzania interakcyjnego
(
interactive processing
), opracowano systemy operacyjne
nowego typu.
• W opracowaniach tych wykorzystano nowe rozwiązania
sprzętowe oraz programowych, takie jak:
– Rejestr bariery adresowej
pomiędzy programami.
– Rozkazy uprzywilejowane
, które mogły występować tylko w trybie
pracy system operacyjny, przy czym programy aplikacyjne działają
w trybie zadanie.
– Czasomierza wraz z mechanizmem
podziału czasu
– dla
zapobiegania monopolizacji komputera przez zadanie.
–
Układ multipleksera
– umożliwiający quasi równoczesne
podłączenie wielu użytkowników do komputera.
– Pamięci dyskowych o wielkich pojemnościach
– eliminujących
konieczność częstych interwencji operatora.
– Pojęć procesu, semafora, współbieżności, kolejki zadań oraz
przetwarzania wsadowego realizowanego w tle
przetwarzania
interakcyjnego.
Usługi dostarczane przez system
operacyjny
• Tworzenie programów
. System operacyjny dostarcza szereg
ułatwień, narzędzi i usług wspomagających programistę przy pisaniu
programów. Do tego celu wykorzystywane są programy zwane utilities.
• Wykonywanie programów
. Wykonywanie programu wymaga
realizacji wielu zadań. Należy przydzielić odpowiedni obszar w pamięci
operacyjnej. Rozkazy i dane należy załadować do tegoż obszaru
pamięci operacyjnej, urządzenia wejścia-wyjścia i pliki muszą zostać
zainicjowane.
• Dostęp do urządzeń wejścia-wyjścia
. Każde urządzenie wejścia-
wyjścia posiada własny, specyficzny zestaw instrukcji lub sygnałów
sterowania. System operacyjny zajmuje się obsługą dostępu programu
aplikacyjnego do urządzeń wejścia-wyjścia, dzięki czemu programista
może posługiwać się standaryzowanymi instrukcjami odczytu i zapisu.
• Kontrolowany dostęp do plików
. Obok dostępu za pośrednictwem
urządzeń wejścia-wyjścia, koniecznym jest posługiwanie się formatami
plików na nośniku i zapewnieniem bezpiecznego korzystania z plików.
• Dostęp do systemu
. System operacyjny kontroluje dostęp do
komputera oraz zarządza zasobami komputera wraz z przydzielaniem
zasobów poszczególnym użytkownikom i programom aplikacyjnym.
Zarządzanie zasobami przez system
operacyjny
• Komputer jest zbiorem zasobów służących do
przenoszenia, przechowywania i przetwarzania
danych oraz sterowania tymi funkcjami.
• System operacyjny jest dość specyficznym
mechanizmem sterowania, ponieważ:
– Funkcjonuje w ten sam sposób, jak zwykłe programy
aplikacyjne, ponieważ jest programem wykonywanym przez
procesor.
– Często jednak rezygnuje ze swojej roli mechanizmu
sterującego, przekazując sterowanie procesorowi, powierzając
mu wykonywanie określonych zadań sterowania, aby po
jakimś czasie ponownie odzyskać sterowanie komputerem.
• System operacyjny nie jest w rzeczywistości niczym
więcej, jak tylko programem komputerowym.
System operacyjny jako program
komputerowy
• Podobnie jak inne programy, system operacyjny dostarcza
rozkazy do procesora.
• Jedynym co go różni od innych programów jest cel
działania systemu operacyjnego – kieruje on procesorem w
zakresie użytkowania pozostałych zasobów komputera oraz
synchronizacją wykonywania innych programów.
• Żeby jednak procesor mógł wykonywać powierzone
czynności, musi zaprzestać realizowanie programu
systemu operacyjnego i zacząć wykonywać inne programy.
• System operacyjny zrzeka się sterowania bezpośredniego
procesorem, aby umożliwić procesorowi wykonywanie innej
pracy, a następnie wznawia sterowanie z wyprzedzeniem
wystarczającym do przygotowania dalszej pracy.
• System operacyjny może używać niedostępnych dla
programów aplikacyjnych - tzw. rozkazów
uprzywilejowanych.
System operacyjny – zarządca
zasobów
Komputer
Urządzenia wejścia-wyjścia
Pamięć
Sterowniki
wejścia-wyjścia
Program
systemu
operacyjnego
Programy
aplikacyjne
i dane
Proceso
r
Pamięć
Syste
m
Aplikacja
Dane
Rodzaje systemów operacyjnych
• Systemy operacyjne ze względu na sposób
współdziałania z użytkownikiem dzielą się na dwie klasy:
– Systemy wsadowe (batch). Programy wielu użytkowników są
grupowane w tzw. wsad, uruchamiany przez operatora. Po
zakończeniu wykonywania wyniki są np. drukowane i
przekazywane użytkownikom.
– Systemy interakcyjne (interactive). Ma miejsce konwersacja
pomiędzy użytkownikiem a komputerem, zwykle za
pośrednictwem terminala klawiatura/monitor, mająca na celu
zgłoszenie zapotrzebowania na wykonanie określonej pracy lub
przeprowadzenie transakcji. Ponadto użytkownik może
komunikować się z komputerem podczas wykonywanej pracy.
• Wyróżniamy jednozadaniowe systemy operacyjne
– Pojedynczy wsad – rodzaj systemu należący dziś do rzadkości.
– Interakcyjny wyspecjalizowany system jednozadaniowy.
• Wyróżniamy wielozadaniowe systemy operacyjne
– Złożony wsad.
– Interakcyjny z podziałem czasu system wielozadaniowy.
Nowy mechanizm – podział
czasu
a) Jeden program
b) Trzy programy działające w podziale czasu
Praca
Praca
Oczekiwanie
Oczekiwanie
t
Praca A
Praca A
Oczekiwanie
Oczekiwanie
t
Praca B
Praca B
t
Praca C
Praca C
t
t
Praca A
Praca B
Praca C
Praca A
Praca B
Oczekiwanie
Praca C
Charakterystyka przykładowego
wsadu
Praca A
Praca B
Praca C
Rodzaj pracy
Intensywn
a
obliczenia
Konwersa
cja
Drukowa
nie
z dysku
Czas trwania
5 min
15 min
10 min
Pamięć
operacyjna
150 k
100 k
80 k
Pamięć dyskowa
Nie
Tak
Tak
Terminal
Nie
Tak
Nie
Drukarka
Nie
Nie
Tak
Wieloprogramowy system
operacyjny
• Wieloprogramowy system operacyjny, podobnie jak jednoprogramowy
system operacyjny, jest programem.
• Wieloprogramowe systemy operacyjne są znacznie bardziej złożone, w
porównaniu z jednozadaniowymi, wykorzystując mechanizm podziału
czasu (time sharing).
• Aby dysponować kilkoma zadaniami gotowymi do uruchomienia, muszą
one być przechowywane w pamięci, wymagany jest tym samym
funkcjonalność zarządzania pamięcią.
• Jeśli kilka zadań czeka w stanie gotowości wielozadaniowy system
operacyjny musi zdecydować, które z zadań ma być realizowane, co
wymaga funkcjonalności szeregowania zadań.
• Wieloprogramowy system operacyjny powinien w sobie łączyć
funkcjonalności przetwarzania wsadowego i przetwarzania
interakcyjnego.
• Wieloprogramowe systemy operacyjne interakcyjno-wsadowe
korzystają z trzech poziomów uprzywilejowania i jednego poziomu
aplikacyjnego.
Wpływ wieloprogramowości
na wykorzystanie zasobów
komputera
Przetwarzanie
jednoprogram
owe
Przetwarzanie
wieloprogram
owe
Wykorzystanie
procesora
17%
33%
Wykorzystanie
pamięci
30%
67%
Wykorzystanie
dysku
33%
67%
Wykorzystanie
drukarki
33%
67%
Czas realizacji
30 min
15 min
Przepustowość
6 zadań na
godz.
12 zadań na
godz.
Średni czas
odpowiedzi
18 min
10 min
Szeregowanie czasowe zadań
Szeregowanie
wysokiego
poziomu
Decyzje typu dodania nowego
zadania do puli zadań
oczekujących na wykonanie, wraz z
określeniem priorytetów
poszczególnych zadań.
Zadanie o najwyższym priorytecie
jest ładowane, a tym samym
przekształcane w tzw. nowy
proces.
Szeregowanie
krótkookresowe
Wybór z pośród dostępnych
procesów (zadań załadowanych do
pamięci komputera), tego procesu
który będzie realizowany przez
procesor.
Szeregowanie
operacji
wejścia-wyjścia
Wybór tego z pośród zawieszonych
(oczekujących na wykonanie)
żądań dostępu do urządzeń
wejścia-wyjścia, które ma być
realizowane przez dostępne
urządzenie wejścia-wyjścia.
Blok kontrolny procesu
• Identyfikator procesu
. Każdy proces ma unikalny identyfikator.
• Stan procesu
. Jeden ze stanów: nowy, gotowy, realizowany,
oczekujący, zakończony.
• Priorytet procesu
. Względny poziom priorytetu procesu.
• Licznik programu
. Adres następnego rozkazu programu procesu,
który ma być wykonywany.
• Znaczniki pamięci
. Adresy początkowej i końcowej komórki
obszaru zajmowanego przez proces w pamięci komputera.
• Dane kontekstowe procesu
. Są to dane znajdujące się w
rejestrach procesora – ładowane do rejestrów procesora w
momencie przejścia procesu do stanu realizowany, a zapamiętywane
w momencie przejścia procesu w stan oczekiwania.
• Informacje o stanach wejścia-wyjścia procesu
. Obejmują
przypisaną do procesu listę plików i aktualne żądania dostępu do
wskazanych zasobów.
• Informacja ewidencyjna procesu
. Czas dotychczasowy realizacji
procesu, ograniczenia czasowe, aktualnie przydzielony czas
procesora, itp.
Przykład szeregowania
krótkookresowego
System
operacyjny stan:
gotowy
System
operacyjny stan:
realizowany
System
operacyjny stan:
gotowy
Proces A stan:
realizowany
Proces A stan:
oczekujący
Proces A stan:
oczekujący
Proces B stan:
gotowy
Proces B stan:
gotowy
Proces B stan:
realizowany
Inne partycje
Inne partycje
Inne partycje
Szeregowanie zadań czyli
kolejkowanie
•
Kolejka długookresowa
– jest listą zadań oczekujących
na użycie przez system operacyjny, tworzoną na
podstawie zgłoszeń przez program szeregowania
wysokiego poziomu. Gdy warunki pozwolą, program ten
dokona alokacji (przydziału) obszaru pamięci i utworzy
proces z jednego z zadań kolejki długookresowej.
•
Kolejka krótkookresowa
– składa się ze wszystkich
procesów będących w stanie gotowości.
•
Kolejka wejścia-wyjścia
– związana jest z każdym
urządzeniem wejścia-wyjścia. Wiele procesów może
domagać się użycia tego samego urządzenia wejścia
wyjścia. Wszystkie procesy oczekujące na użycie
określonego urządzenia są ustawione w jego kolejce.
Główne składniki systemu
operacyjnego
System operacyjny
Program
przetwarzający
wywołania
obsługi
Program szeregowania
krótkookresowego
Program
obsługi
przerwań
K
o
le
jk
a
d
łu
g
o
o
k
re
so
w
a
K
o
le
jk
a
k
ró
tk
o
o
kr
e
so
w
a
Kolejki
we-wy
Wywołanie obsługi
przez proces
Przerwanie z procesu
Przerwanie od urządzenia
wejścia-wyjścia
Diagram kolejek szeregowania
pracy
Kolejka
krótkookres
owa
Zapotrzebowanie
na zadanie
Kolejka
długookresowa
Kolejka we-wy
Kolejka we-wy
Kolejka we-wy
Procesor
We-wy
We-wy
We-wy
Układ
przerwań
Usuwanie
zatrzymanego
procesu
Kolejka
krótkookres
owa
System operacyjny LINUX
•
LINUX jest interakcyjnym systemem operacyjnym
zaprojektowanym przez Linusa Torvaldsa (w czasie gdy był on
studentem na Uniwersytecie Helsinskim), jest wzorowany na
wcześniejszych systemach operacyjnych UNIX i spełnia
standardy tych ostatnich.
•
LINUX jest w zasadzie produktem nie komercyjnym i jako taki
jest rozpowszechniany razem z kodem źródłowym.
•
W skład systemu operacyjnego LINUX wchodzą:
– Interpreter poleceń tzw. powłoka (
shell
).
– Graficzny interfejs użytkownika (
Graphical User Interface
),
nadbudowany nad powłoką, wraz z tzw. zarządcą okien (
windows
manager
).
– Jądro systemu (
kernel
) wraz z programem szeregującym (
scheduler
)
oraz dyspozytorem zadań (
dispatcher
).
– Zarządca plików (
file manger
), wraz z hierarchicznym mechanizmem
katalogów (
directory, folder
) i deskryptorem plików (
file descriptor
).
– Programy obsługi urządzeń (
device drivers
).
– Zarządcą pamięci (
memory manger
) wraz mechanizmem pamięci
wirtualnej.
•
Przedmiot „
Platformy komputerowe 2
”, jest poświęcony
systemowi operacyjnemu LINUX.