Proces (informatyka)
Z Wikipedii
Proces - to jedno z najbardziej podstawowych pojęć w informatyce. Z definicji jest to po prostu egzemplarz wykonywanego programu. Należy odróżnić jednak proces od wątku - każdy proces posiada własną przestrzeń adresową, natomiast wątki posiadają wspólną sekcję danych.
Każdemu procesowi przydzielone zostają zasoby, takie jak:
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. Może przyjmować kilka stanów:
- działający,
- czekający na udostępnienie przez system operacyjny zasobów,
- przeznaczony do zniszczenia,
- proces zombie,
- właśnie tworzony itd.
W skład procesu wchodzi:
- kod programu,
- licznik rozkazów,
- stos,
- sekcja danych.
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.
Sposób realizacji wszystkich tych działań jest różny dla różnych systemów operacyjnych.