Wykład nt. podstawy systemów operacyjnych -- procesy
Instytut Informatyki
Politechniki Łódzkiej w Łodzi
mgr inż. Bartosz Lis
Wykład nt.
Podstawy systemów operacyjnych
dla potrzeb Studium Podyplomowego "Inżynierskie Zastosowania Informatyki"
Poprzedni | Spis treści
| Następny | Zadania
Rozdział 2: Zarządzanie czasem procesora
Definicje procesu, wieloprocesowości, wielodostępu i
wywłaszcania procesora
Pierwsze systemy operacyjne pozwalały na wykonanie jednego programu na
raz. W raz z rozwojem informatyki w szczególności pojawieniem się interakcyjnych
wielodostępnych systemów operacyjnych, a później wprowadzeniem graficznych
interfejsów użytkownika wystąpiła opotrzeba jednoczesnego uruchamiania
na tym samym procesorze wielu programów w taki sposób by zminimalizować
możliwości wzajemnych zakłóceń między procesami.
System operacyjny nazyway wielodostępnym, jeżeli wielu użytkowników
może jednocześnie z nim pracować, każdy z nich ma wrażenie ciągłej pracy
systemu na jego rzecz.
Podobną drogę przeszły mikrokomputery od systemu CP/M i MS-DOS do dzisiejszych
MAC-OSa i MS Windows NT.
W nowoczesnym systemie operacyjnym dany program może być wykonywany
przez wielu użytkowników jednocześnie, w związku z tym wprowadza się pojęcie
procesu. Silberschatz et al w [2] definiują proces jako program,
który jest wykonywany. Sprecyzować należy, że każdy załadowany do pamięci
operacyjnej celem wykonania egzemplaż programu razem z danymi na których
operuje stanowi oddzielny proces.
System operacyjny nazywamy wieloprocesowym jeżeli dopuszcza jednoczesne
istnienie w nim wielu procesów. Takim systemem jest np. MS-DOS, przy czym
w tym wypadku proces raz uruchomiony blokuje innym procesom dostęp do procesora
aż do swego zatrzymania, dopiero wówczas może na nowo podjąć swe wykonanie
jego proces macierzysty. Takim systemem nie jest np. CP/M, w którym może
istnieć tylko jeden proces.
Jak to już stwierdzono w MS-DOSie po uruchomieniu procesu potomnego
dany proces był zamrażany i faktycznie nie mógł się wykonywać aż do zakończenia
potomka. Jeżeli oczekujemy od komputera z jednym procesorem aby był wielodostępny,
musimy zadbać o to by dzielić czas procesora między różne procesy, niezależnie
od tego, czy aktualnie wykonujący się proces ma ochotę zwolnić procesor,
czy nie. Takim mechanizmem jest wywałaszczanie procesora.
Każdy proces w systemie wieloprocesowym z wywłaszczaniem w chwili uzyskania
procesoraotrzymuje też kwant czasu. Po wyczerpaniu swego kwantu czasu proces
jest przerywany, a na jego miejsce wykonywany jest inny proces. Wywłaszczony
proces trafia na koniec kolejki procesów ubiegających się o procesor. Przykładami
takich systemów są Unix, Windows NT i Windows 95.
Graf stanów procesu
Współbieżna praca więcej niż jednego procesu niesie z sobą mozliwość konfliktów
przy dostępie do zasobów. W takich warunkach ujawnia się rola systemu operacyjnego
jako dystrybutora zasobów. System operacyjny (a w zasadzie jego jądro)
rozstrzyga konflikty o zasoby przydzielając je jednym ubiegająceym się
o nie procesom a innne procesy powstrzymując do czasu zwolnienia zasobów
przez dotychczasowych zwycięzców.
Proces, który zażądał dostępu do zasobu (w szczególności wykonania
operacji we/wy) i go nie otrzymał nie może być dalej wykonywany aż do chwili
uzyskania zasobu (zakończenia operacji we/wy). O takim procesie mówi się
że jest w stanie uśpionym. Zwalnia on procesor pozwalając innym procesom
na wykonywanie się.
W systemach z wywłaszczaniem procesora wyróżnia się pewien specjalny
stan - oczekiwanie na przydział procesora. Mamy z nim do czynienia gdy
proces posiada wszystkie niezbędne mu zasoby, nie wykonuje operacji wejścia
wyjścia a czeka jedynie na przydzielenie mu [czasu] procesora. O takim
procesie mówimy, że jest w stanie gotowy do wykonania.
Różne systemy operacyjne wyróżniają różny zestaw stanów, przez które
przechodzi proces w trakcie życia, ale w każdym systemie wieloprocesowym
z wywłaszczaniem można wyróżnić następujące stany:
Wykonywany - jest aktualnie wykonywany przez procesor,
Gotów do wykonania - oczekuje na swoją kolejkę do wykonania,
Uśpiony - oczekuje na dostęp do zasobu lub operrację wejścia/wyjścia, np.
wcisnięcie klawisza przez użytkownika,
Niszczony - w trakcie zwalniania zasobów po zakończeniu.
Kolejki i priorytety
Procesy oczekujące na zwolnienie procesora mogą mieć różną ważność. Przykładowo,
może to być proces dokonujący pomiaru w toczącym się eksperymencie, edytor
teksu, proces systemowy uruchomiony celem zrobinia okresowych porządków
i zadanie symulacji numerycznej pewnego układu fizycznego wykonywane długi
czas w tle. Pierwsze dwa procesy mają to do siebie, że większość czasu
oczekują na zajście operacji wejścia wyjścia, a gdy już to nastąpi, powinny
natychmiast reagować, z kolei dwa ostatnie wykorzystują głównie czas procesora,
ale nie są na tyle pilne, by nie mogły ustępować w razie potrzeby innym.
W zależności od pilności zadania i jego dotychczasowego przebiegu,
system operacyjny nadaje procesowi priorytet. Generalnie, czym mniejszą
liczbą jest wyrażony, tym lepiej z punktu widzenia procesu - ma więksy
dostęp do procesora. Dla każdego priorytetu tworzona jest osobna kolejka
procesów gotowych do wykonania. Dopóki w kolejce o priorytecie wyrażonym
mniejszą liczbą czekają procesy, prcesy z kolejki większego priorytetu
nie będą wykonywane.
Najmniejsze priorytety są zarezerwowane dla użytku systemu operacyjnego,
są one do tego stopnia uprzywilejowane, że procesy wykonujące się z tymi
priorytetami nie są wywłaszczane. Stąd też są używane jedynie w wyjątkowych
okolicznościach przez krótkie procedury systemowe.
Użytkownik ma zwykle możliwość wyboru priorytetu dla uruchamianego
procesu, jednakże jest w swym wyborze ograniczony "z dołu". System operacyjny
rezewuje sobie możliwość zmiany priorytetu w trakcie działania procesu,
celem wyrównania szans różnych procesów.
Wątki
Niektóre systemy operacyjne dopuszczają współbieżność w ramach jednego
procesu. Określa się wówczas wątek jako jednostkę wykonania.
Każdy wykonujący się proces ma przynajmniej jeden wątek, każdy wątek wykonuje
się w ramach jednego procesu.
Wątki konkurują ze sobą o czas procesora. Pozostałe zasoby przydzielane
są na rzecz procesu. System operacyjny zostawia programiście aplikacji
wolną rękę w rozstrzyganiu konfliktów pomiędzy wątkami o dostęp do zasobów
przydzielonych procesowi.
System operacyjny nazywamy wielowątkowym, jeżeli dopuszcza istnienie
wielu wątków wykonania w ramach jednego procesu. Przykładami systemów wielowątkowych
są Windows NT, Windows 95 i niektóre odmiany Uniksa.
W systemach nie będących wielowątkowymi pojęcie wątku i prcesu utożsamia
się.
Przedstawiony na rys. 2.1 graf stanów procesu oraz kolejkowanie w systemie
wielowątkowym dotyczy oczywiście wątków. Proces nie posiada stanów, jest
kończony w momencie gdy skończy się jego ostatni wątek.
Jeżeli nie będzie to wyraźnie zaznaaczone, w dalszej części wykładu
procesy i wątki będą ze sobą utożsamiane.
Kontekst procesu
Aby proces/wątek mógł być wznowiony od miejsca w którym przerwane zostało
jego wykonanie, należy zachować pewne informacje o stanie procesora w chwili
przerywania działania procesu. Zbiór wszystkich informacji niezbędnych
do podjęcia prez proces działania z miejsca, w którym się znajduje nazywamy
kontekstem procesu. Zdarzenie zapamiętania kontekstu aktualnego procesu
i wprowadzenia do procesora wcześniej zachowanego kontekstu innego procesu
celem rozpoczęcia jego wykonania nazywamy przełączeniem kontekstu.
Kontekst procesu składa się z zawartości rejestrów procesora, w szczególności
wskaźnika instrukcji, rejestru flag stanu i wskaźnika stosu. W przypadku
systemów z pamięcią wirtualną w skład kontekstu wchodzą tablice stron.
Procesy interakcyjne, wsadowe i demony
Nie wszystkie procesy wymagają ciągłej współpracy użytkownika w trakcie
działania. Te które wymagają - nazywamy interakcyjnymi. Są to m.in. edytory
tekstu, programy do odbierania poczty itp. Programy interakcyjne mają zawsze
przypisany jakiś zasób umożliwiający konwersację z użytkownikiem. W przypadku
Uniksa jest to terminal znakowy. W przypadku programu z graficznym interfejsem
użytkownika jest to okienko graficzne na ekranie komputera.
Procesy nie wymagające uwagi użytkownika dzielą się na dwie kategorie:
demony - programy świadczące usługi dla systemu jako całości (program wymiatający
pamięć podręczną) lub dla ogółu użytkowników (silnik bazy danych) oraz
zadania wsadowe - zadania uruchomione przez jednego użytkownika, wykonujące
długotrwałe obliczenia, których nie trzeba nadzorować, np: sysmulacje numeryczne,
tworzenie grafiki w oparciu o techniki śledzenia promieni, itp.)
System operacyjny dostarcza administratorowi narzędzi do uruchamiania i
nadzorowania procesów pierwszego typu, a pozostałym użytkownikom drugiego
typu.
Poprzedni | Spis treści
| Następny | Zadania
Wszelkie uwagi i komentarze: bartoszl@stud.ics.p.lodz.pl