Procesy i wątki w systemach operacyjnych (OS) zawsze były jednymi z moich ulubionych tematów w informatyce. Pozwalają one zrozumieć, w znacznie głębszy sposób, jak OS zarządza programami podczas ich różnych etapów wykonywania, rozwiązuje problemy dotyczące pamięci i zapewnia odizolowane bezpieczeństwo aż do jądra. To jest po prostu cholernie interesujące!
Podstawowa idea
Proces jest po prostu programem w wykonaniu. Jeden program ma ściśle związany z nim jeden proces. W bardzo rzadkich przypadkach może to nie zawsze być prawdą (Google Chrome jako przykład), ale jest to prawda przez większość czasu.
Każdy proces ma różne komponenty, które pozwalają mu wykonywać jego zamierzone zadania. W szczególności, stos i sterta są używane odpowiednio do alokacji zmiennych lokalnych i pamięci dynamicznej.
Składników jest więcej, ale wystarczy powiedzieć, że każdy proces potrzebuje tych składników do działania jako program.
Monitorowanie procesów w systemie
W dowolnym momencie może być uruchomionych kilkaset lub mniej procesów. Czasami warto zobaczyć szczegółowe informacje o nich, zwłaszcza jeśli komputer działa wolno: jak niektóre procesy mogą być hogging pamięci komputera lub procesora. Będąc w stanie wskazać, a następnie zniszczyć je jest bardzo przydatna rzeczywiście i można osiągnąć dość łatwo.
Jeśli jesteś w systemie Windows, można otworzyć Menedżera zadań i kliknij kartę Procesy, aby zobaczyć te informacje. Jeśli korzystasz z systemu Linux lub maszyny opartej na systemie Unix, możesz uruchomić wiele różnych poleceń:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Jak system operacyjny zarządza procesami
Proces może znajdować się w określonym stanie w dowolnym momencie. Może być właśnie utworzony, oczekiwać na uruchomienie, oczekiwać na dostęp do jakiegoś urządzenia wejścia/wyjścia, zostać przerwany przez inny proces itp. Aby zapewnić maksymalną wydajność, system operacyjny musi rozumieć stan wszystkich tych procesów i być w stanie inteligentnie tworzyć nowe, przełączać się między nimi, wstrzymywać je, zawieszać itd. w odpowiednim czasie.
Aby robić to efektywnie, system operacyjny utrzymuje coś, co jest znane jako Blok sterowania procesem dla każdego procesu. Zawiera on przydatne informacje, takie jak bieżący stan procesu, następna instrukcja do wykonania oraz aktualnie przydzielone urządzenia do procesu.
To umożliwia systemowi operacyjnemu efektywne zarządzanie różnymi procesami, poprzez zapisywanie bieżącego stanu w PCB, przełączanie się między nimi i ponowne ładowanie niektórych procesów w późniejszym czasie.
Jak system operacyjny przełącza się między różnymi procesami
Przełączanie kontekstu odnosi się do specyficznej czynności, w której system operacyjny zapisuje stan uruchomionego procesu i wstrzymuje go w celu uruchomienia innego. Musi to zrobić w taki sposób, aby te procesy nie kolidowały ze sobą i aby zapisany proces mógł być później wznowiony bez żadnych problemów. Zapewnia to kluczową cechę systemów operacyjnych: wielozadaniowość. Diagram pokazuje, w jaki sposób płytka jest używana do zapisania stanu procesu, uruchomienia innego, a następnie ponownego załadowania i kontynuowania początkowego procesu później.