Procesy i wątki wykonywane przez jądro systemu operacyjnego
System operacyjny zarządza wykonywaniem zadań za pomocą procesów i wątków. Jądro systemu odgrywa kluczową rolę w zarządzaniu tymi jednostkami, przydzielając zasoby, synchronizując ich działanie oraz dbając o ich bezpieczeństwo.
1. Procesy w systemie operacyjnym
Proces to podstawowa jednostka pracy w systemie operacyjnym. Jest to program w trakcie wykonywania, posiadający własne zasoby (pamięć, deskryptory plików itp.). Każdy proces składa się z:
Obszaru pamięci (kod programu, stos, sterta),
Zbioru zasobów systemowych (np. otwarte pliki),
Stanu wykonania (rejestry procesora, wskaźnik instrukcji),
Jednego lub więcej wątków.
1.1. Rodzaje procesów
Procesy użytkownika – aplikacje uruchamiane przez użytkownika,
Procesy systemowe (kernelowe) – wykonywane przez jądro systemu, np. zarządzanie pamięcią, obsługa sterowników.
1.2. Stany procesu
Każdy proces może znajdować się w jednym z kilku stanów:
Nowy (new) – proces został utworzony, ale jeszcze nie wykonany.
Gotowy (ready) – proces oczekuje na przydział procesora.
Wykonywany (running) – proces aktualnie działa na procesorze.
Oczekujący (waiting) – proces czeka na zdarzenie (np. operację wejścia/wyjścia).
Zakończony (terminated) – proces zakończył swoje działanie.
1.3. Zarządzanie procesami
System operacyjny zarządza procesami za pomocą:
Planisty procesów – decyduje, który proces otrzyma czas procesora,
Mechanizmów komunikacji międzyprocesowej (IPC) – kolejki komunikatów, pamięć współdzielona.
2. Wątki w systemie operacyjnym
Wątek (ang. thread) to najmniejsza jednostka wykonywalna w obrębie procesu. Wątki współdzielą:
Pamięć procesu (dane, kod, deskryptory plików),
Zasoby systemowe.
Wątki pozwalają na efektywne zarządzanie wielozadaniowością, np. w aplikacjach obsługujących wiele operacji jednocześnie (np. przeglądarki internetowe).
2.1. Rodzaje wątków
Wątki jądra (kernel threads) – zarządzane przez system operacyjny,
Wątki użytkownika (user threads) – zarządzane przez bibliotekę w obrębie aplikacji.
2.2. Zalety stosowania wątków
Mniejsze zużycie zasobów – wątki dzielą pamięć procesu, co zmniejsza koszt przełączania kontekstu.
Szybsza komunikacja – wątki mogą wymieniać dane przez zmienne globalne.
Większa wydajność – wielowątkowość pozwala na efektywniejsze wykorzystanie CPU.
2.3. Przełączanie kontekstu
System operacyjny może przełączać procesy i wątki, co wiąże się z:
Zapisaniem stanu aktualnego procesu/wątku,
Załadowaniem nowego procesu/wątku.
Przełączanie kontekstu między wątkami jest szybsze niż między procesami, ponieważ wątki współdzielą pamięć i nie wymagają pełnej rekonfiguracji przestrzeni adresowej.
3. Procesy a wątki – porównanie
Cechy
Proces
Wątek
Pamięć
Oddzielna dla każdego procesu
Współdzielona między wątkami w obrębie procesu
Koszt przełączania
Wysoki (przełączanie kontekstu obejmuje pamięć i zasoby)
Niski (dzielą pamięć i zasoby)
Komunikacja
Wymaga mechanizmów IPC
Może odbywać się bezpośrednio przez zmienne globalne
Stabilność
Awaria jednego procesu nie wpływa na inne
Awaria wątku może zakończyć cały proces
4. Wykonanie procesów i wątków w jądrze
Jądro systemu operacyjnego zarządza wykonywaniem procesów i wątków poprzez:
Planowanie (CPU scheduling) – algorytmy decydujące o przydziale procesora (np. FCFS, Round Robin, SJF),
Mechanizmy synchronizacji – zapobiegają konfliktom (np. semafory, blokady),
Obsługę przerwań – pozwala na obsługę operacji wejścia/wyjścia.
4.1. Przykłady poleceń do zarządzania procesami w Linux
ps -aux – lista aktywnych procesów,
top – dynamiczne monitorowanie procesów,
kill PID – zakończenie procesu,
nice / renice – zmiana priorytetu procesu.
Podsumowanie
Procesy i wątki są kluczowymi elementami działania systemu operacyjnego. Procesy zapewniają izolację i bezpieczeństwo, podczas gdy wątki umożliwiają wydajne wykonywanie wielozadaniowości. Jądro systemu operacyjnego zarządza nimi poprzez planowanie, synchronizację i mechanizmy komunikacji.