8624


5. Stany procesów i przejścia między nimi w wielozadaniowym systemie operacyjnym.

Proces - egzemplarz wykonywanego programu. Każdy proces posiada własną przestrzeń adresową, natomiast wątki posiadają wspólną sekcję danych.

Każdemu procesowi przydzielone zostają zasoby, takie jak:

* procesor,

* pamięć,

* dostęp do urządzeń wejścia-wyjścia,

* pliki.

Każdy proces posiada tzw. "rodzica". W ten sposób tworzy się swego rodzaju drzewo procesów. Proces może (ale nie musi) mieć swoje procesy potomne.

Za zarządzanie procesami odpowiada jądro systemu operacyjnego. Wykonanie musi przebiegać sekwencyjnie.

W skład procesu wchodzi:

* kod programu,

* licznik rozkazów,

* stos,

* sekcja danych.

Stany procesów:

Nieustalony - przed uruchomieniem lub po zakończeniu działania

Aktywny - zakończono operacje wejścia/wyjścia a jeden z procesów systemu wykonuje jego kod

Gotowy - jeśli zakończył operacje we/wy ale nie ma wolnego procesora

Wstrzymany - czekanie na zakończenie operacji we/wy dozorowanej przez system operacyjny

Stany dodatkowe:

* przeznaczony do zniszczenia,

* proces zombie,

* właśnie tworzony. (…)

Tworzenie procesów:

* Użytkownik za pomocą powłoki zleca uruchomienie programu, proces wywołujący wykonuje polecenie fork, lub jego pochodną.

* System operacyjny tworzy przestrzeń adresową dla procesu oraz strukturę opisującą nowy

proces w następujący sposób:

- wypełnia strukturę opisującą proces,

- kopiuje do przestrzeni adresowej procesu dane i kod, zawarte w pliku wykonywalnym,

- ustawia stan procesu na działający,

- dołącza nowy proces do kolejki procesów oczekujących na procesor,

- zwraca sterowanie do powłoki użytkownika.

Wykonywanie procesów

Dany proces rozpoczyna wykonywanie w momencie przełączenia przez jądro systemu operacyjnego przestrzeni adresowej na przestrzeń adresową danego procesu oraz takie zaprogramowanie procesora, by wykonywał kod procesu. Wykonujący się proces może żądać pewnych zasobów, np. większej ilości pamięci. Zlecenia takie są na bieżąco realizowane przez system operacyjny.

Kończenie procesów

* Proces wykonuje ostatnią instrukcję - zwraca do systemu operacyjnego kod zakończenia. Jeśli proces zakończył się poprawnie zwraca wartość 0, w przeciwnym wypadku zwraca wartość kodu błędu.

* W momencie zwrotu do systemu operacyjnego kodu zakończenia, system operacyjny ustawia stan procesu na przeznaczony do zniszczenia i rozpoczyna zwalnianie wszystkich zasobów, które w czasie działania procesu zostały temu procesowi przydzielone.

* System operacyjny po kolei kończy wszystkie procesy potomne w stosunku do procesu macierzystego.

* System operacyjny zwalnia przestrzeń adresową procesu. Jest to dosłowna śmierć procesu.

* System operacyjny usuwa proces z kolejki procesów gotowych do uruchomienia i szereguje zadania. Jest to ostatnia czynność wykonywana na rzecz procesu.

* Procesor zostaje przydzielony innemu procesowi.

Proces zombie - wpis w tablicy procesów opisujący program, którego wykonanie w systemie operacyjnym zostało zakończone, ale którego zamknięcie nie zostało jeszcze obsłużone przez proces rodzica. Termin ten odnosi się zazwyczaj do systemów z rodziny UNIX, gdzie pozostawienie wpisu zombie tymczasowo zajmującego pozycję w tablicy procesów zapobiega ponownemu wykorzystaniu danego PIDa (numeru procesu) i możliwym na skutek tego pomyłkom programistycznym. Wpisy takie nie dają się wyeliminować poleceniem kill, czemu prawdopodobnie zawdzięczają swoją złowrogą nazwę.

Wpis zombie znika po odpowiednim wywołaniu funkcji wait(), waitpid() lub analogicznej przez proces macierzysty. W przypadku zakończenia także procesu rodzica, w wielu architekturach pozostawione przez niego zombie są obsługiwane automatycznie przez dziedziczący po nim proces init lub przez system operacyjny.

Chociaż wpisy zombie nie obciążają znacząco komputera, nieprawidłowo napisany program, który nie obsługuje zakończenia pracy potomków, może doprowadzić do destabilizacji pracy systemu. Dzieje się tak gdy cała tablica procesów, zwykle posiadająca sztucznie ograniczony rozmiar, zostanie zajęta przez wpisy zombie.

Demon - proces działający w tle, nie podlegający sterowaniu z żadnego terminala, uruchamiany zwykle podczas startu systemu i działający do jego zamknięcia. Demon świadczy zwykle usługi o charakterze systemowym.

Ponieważ demony nie są związane z żadnym terminalem, wyjściem diagnostycznym dla nich jest zwykle podsystem dziennika pracy systemu (demon syslogd), zwyczajowo zapisujący komunikaty w plikach tekstowych. Sterowanie demonami odbywa się poprzez sygnały lub nazwane środki komunikacji międzyprocesowej.



Wyszukiwarka

Podobne podstrony:
8624
8624
8624
1 Podstawowe pojeciaid 8624 Nieznany (2)
8624
8624
8624

więcej podobnych podstron