1 Zarządzanie procesami 1) Proces

Transkrypt

1 Zarządzanie procesami 1) Proces
Zarządzanie procesami
1) Proces - Określając nieformalnie, proces jest wykonywanym programem. Wykonanie procesu musi
przebiegać w sposób sekwencyjny. Oznacza to, że w dowolnej chwili na zamówienie danego procesu może
być wykonywany co najwyżej jeden rozkaz kodu programu. Proces jest czymś więcej niż samym kodem
programu. W pojęciu procesu mieści się również bieżąca czynność reprezentowana przez wartość licznika
rozkazów oraz zawartość rejestrów procesora. Do procesu na ogół należą także: stos procesu przechowujący
dane tymczasowe (takie jak parametry procedur, adresy powrotne i zmienne tymczasowe) oraz sekcja
danych zawierająca zmienne globalne. Sam program nie jest procesem. Program jest obiektem pasywnym,
podobnie jak zawartość pliku przechowywanego na dysku. Natomiast proces jest obiektem aktywnym, z
licznikiem rozkazów określającym następny rozkaz do wykonania i ze zbiorem przydzielonych mu zasobów.
Chociaż dwa procesy mogą być związane z jednym programem, będą one zawsze traktowane jako dwie
oddzielne sekwencje wykonania. Na przykład wielu użytkowników może korzystać z działania kopii programu
pocztowego lub jeden użytkownik może zapoczątkować pracę wielu kopii edytora. W każdym z tych
przypadków mamy do czynienia z osobnymi procesami, które - niezależnie od równoważności sekcji tekstu będą się różniły sekcjami danych.
Stan procesu
Wykonujący się proces zmienia swój stan (ang. stałe). Stan procesu jest po części określony przez bieżącą
czynność procesu. Każdy proces może się znajdować w jednym z następujących stanów:
• nowy - proces został utworzony;
• aktywny - są wykonywane instrukcje;
• oczekiwanie - proces czeka na wystąpienie jakiegoś zdarzenia (np. na zakończenie operacji wejściawyjścia);
• gotowy - proces czeka na przydział procesora;
• zakończony - proces zakończył działanie.
2) Wątek (ang. thread) określany również jako proces lekki (ang. lightweight process - LWP) to podstawowa
jednostka wykorzystania procesora. W skład wątku wchodzą: licznik rozkazów, zbiór rejestrów, obszar stosu.
Wątki, w przeciwieństwie do procesów, można przełączać tanim kosztem, tj. z małym użyciem czasu
procesora. Oczywiście przełączenie wątku również wymaga od systemu operacyjnego przełączenia zbioru
rejestrów, jednakże nie jest konieczne zarządzanie pamięcią.
Porównując wątki i procesy, rozważymy sposób sterowania wieloma wątkami i wieloma procesami. Każdy z
procesów działa niezależnie, posiada własny licznik rozkazów, wskaźnik stosu oraz przestrzeń adresową. W
przypadku, gdy zadania wykonywane przez procesy nie są ze sobą powiązane wszystko jest w porządku,
jednakże gdy mamy do czynienia z jednym zadaniem wykonywanym przez kilka procesów marnowane są
zasoby systemu (każdy proces przechowuje osobne kopie tych samych informacji). Proces wielowątkowy
natomiast, wykonujący jedno zadanie, zużywa mniej zasobów (wątki korzystają z tego samego zbioru
informacji).
Wątki są podobne do procesów pod wieloma względami. Tak jak procesy, watki mogą znajdować się w
jednym z określonych stanów: gotowości, zablokowania, aktywności i zakończenia. Aktywny może być tylko
jeden wątek (tak jak proces). Każdy wątek ma własny licznik rozkazów i stos, a jego wykonanie w procesie
przebiega sekwencyjnie. Wątki, również podobnie jak procesy, mogą tworzyć wątki potomne i mogą
blokować się do czasu zakończenia wywołań systemowych - możliwa jest więc sytuacja działania jednego
wątku, gdy zablokowany jest inny. Różnicą pomiędzy wątkiem a procesem jest fakt, że wątki są zależne od
siebie. Każdy z wątków ma dostęp do danych innego z wątków (dostęp do każdego adresu w zadaniu).
Niemożliwa jest więc ochrona na poziomie wątków. Ponieważ jednak w obrębie jednego zadania wątki mogą
należeć do jednego użytkownika, ochrona taka nie jest konieczna.
1
3) Planowanie przydziału procesora ma na celu stałe utrzymywanie w aktywności określoną liczbę zadań.
Zmiana przydziału procesora ma miejsce wtedy kiedy to proces przeszedł od stanu aktywności do czekania,
od stanu aktywności do gotowości, oraz od stanu czekania do gotowości.
Pierwszym a zarazem najprostszym algorytmem przydziału procesora jest algorytm „pierwszy zgłoszony,
pierwszy obsłużony”. Proces, który pierwszy się zgłosi, otrzymuje procesor jako pierwszy. Tutaj dochodzić
może do tzw. Efektu „konwoju”. Wyobraźmy sobie, procesy o długich fazach procesora, które to blokują
krótkie procesy. Mniejsze zadania czekają na zakończenie dłuższych zadań. Dochodzi do wspomnianego
wcześniej niepożądanego efektu.
Druga metoda jest z kolei dużo lepsza od poprzedniej. Polega ona tym, że procesor otrzymuje proces o
najkrótszej fazie procesora. (Kiedy dojdzie do sytuacji kiedy oba procesy będą miały tą samą fazę, wtedy
stosujemy algorytm opisany na początku.)
4) Synchronizacja procesów, koordynowanie procesów (angielskie process synchronization, process
coordination), zabiegi mające na celu ustalenie właściwej kolejności działania procesów współpracujących, w
szczególności procesów korzystających ze zmiennych dzielonych. Do synchronizacji służą rozmaite
mechanizmy programowe implementowane przez jądro systemu operacyjnego.
5) Zakleszczenie procesów: układ co najmniej dwóch procesów, których wykonywanie nie może być
kontynuowane, ponieważ jeden proces utrzymuje zasób potrzebny drugiemu procesowi i proces
utrzymujący ten zasób też nie może działać, gdyż potrzebuje zasobu przydzielonego do drugiego,
unieruchomionego procesu.
2