Każdy użytkownik komputera posiada na nim różne programy. Przeciętny użytkownik słyszał kiedyś o pojęciu proces, jednak nie do końca wie czym jest. Postaram się przybliżyć czym są procesy, aby każdy z Was wiedział z czym ma do czynienia i dlaczego system operacyjny czasem zachowuje się tak a nie inaczej.
Głównymi różnicami między procesem a programem są:
- proces to program, który się wykonuje, natomiast program istnieje na dysku i możemy go uruchomić,
- proces jest czymś aktywnym (czyli się wykonuje), natomiast program jest czymś biernym (można go wykonać),
Ogólnie rzecz biorąc wykonanie programu to wprowadzenie go do pamięci. Aby wykonywać wiele programów na raz zostało wprowadzone pojęcie procesu, aby móc zarządzać konkretną częścią pamięci zawierająca konkretne dane. Żeby poprawnie zarządzać procesami, każdy z nich posiada swój numer identyfikacyjny.
System operacyjny zarządza tymi procesami, jego zadaniami są między innymi:
- tworzenie i usuwanie procesów
- dostarczanie mechanizmów komunikacyjnych
- wstrzymywanie i wznawianie procesów
- dostarczanie mechanizmów obsługi blokad
Proces jest jednostką pracy w systemie. Aby cokolwiek zrobić, choćby wydać jakąś komendę w linii poleceń, tworzymy proces uruchamiając dany program (np polecenie w cmd/terminalu). Dlatego też system operacyjny można podzielić na:
- procesy systemu operacyjnego, wykonujące kod systemu
- procesy użytkownika, które wykonują programy użytkowe
Jak wygląda obsługa procesów przez system operacyjny?
W obecnych systemach operacyjnych z podziałem czasu każdemu procesowi CPU przydziela określony kwant, czyli porcję czasu, którą proces może wykorzystać na swoje działanie. Kiedy danemu procesowi skończy się kwant czasu, bądź proces się uśpi, procesor zostaje przekazany innemu procesowi. W ten sposób jednocześnie może być wykonywane wiele procesów, ponieważ dla nas, użytkowników, porcje czasu, które są przydzielane danemu procesowi są niewyobrażalnie małe, jednak dla CPU są wystarczające, aby wykonać odpowiednie operacje.
Procesy mogą mieć różne stany. Rozróżnia się 5 głównych stanów procesów:
- nowy
- gotowy
- oczekujący
- bieżący
- zatrzymany
Proces nowy, to proces, który dopiero co powstał. Status gotowy ma proces, który został wczytany do pamięci (nowe procesy muszą zostać wczytane, aby móc coś z nimi zrobić). Proces oczekujący to proces, który czeka na jakąś akcję (np instrukcje I/O - input output). Jeśli zasoby są gotowe, to taki oczekujący proces staje się procesem gotowym, i może zostać mu przydzielony kwant czasu, a wtedy staje się procesem bieżącym (właśnie wykonywanym). Proces może zostać zatrzymany np w przypadku krytycznego zdarzenia, typu dzielenie przez 0, błąd któregoś z komponentów komputera etc. Gdy proces zakończy pracę jest usuwany z pamięci zwalniając ją dla następnych procesów.