Proces i jego zasoby
Proces to instancja uruchamianego programu, a aplikacja może składać się z wielu procesów. Każdy proces posiada unikalny identyfikator, znany jako PID. System operacyjny przydziela procesom niezbędne zasoby, takie jak pamięć i czas procesora. W celu współbieżnego wykonywania fragmentów programu, proces może tworzyć wątki, które dzielą zasoby, z wyjątkiem czasu procesora, przydzielanego indywidualnie.
Skład i zasoby procesu
Każdy proces składa się z następujących elementów:
- kod programu
- licznik rozkazów
- stos programu
- sekcja danych
Przydzielane zasoby obejmują:
- czas procesora
- pamięć
- dostęp do urządzeń wejścia-wyjścia
- pliki
Tworzenie procesów
Procesy są tworzone przez użytkownika za pomocą powłoki systemowej, która wywołuje polecenie fork. System operacyjny realizuje to poprzez:
- wypełnienie struktury opisującej proces
- skopiowanie kodu i danych do nowej przestrzeni adresowej
- mapowanie współdzielonych zasobów
- ustawienie stanu procesu na działający
- dołączenie do kolejki procesów oczekujących na procesor
Wykonywanie procesów
Proces zaczyna wykonywanie, gdy jądro systemu przełącza przestrzeń adresową. W trakcie działania proces może żądać dodatkowych zasobów, które są realizowane na bieżąco. Stan procesu może zmieniać się w zależności od sytuacji:
- aktualnie wykonywany przez procesor
- czekający na zasoby
- uśpiony
- przeznaczony do zniszczenia
- proces zombie
- właśnie tworzony
Kończenie procesów
Proces kończy działanie, wykonując ostatnią instrukcję i zwracając kod zakończenia do systemu operacyjnego. W przypadku zakończenia poprawnego, zwraca 0, w przeciwnym razie kod błędu. System operacyjny ustawia stan procesu na „przeznaczony do zniszczenia” i zwalnia przydzielone zasoby. Następnie kończy procesy potomne oraz zwalnia przestrzeń adresową. Ostatecznie proces zostaje usunięty z kolejki procesów gotowych do uruchomienia, a procesor jest przydzielany innemu procesowi.