Przez Proces rozumiemy program będący w trakcie wykonywania. Wykonanie procesu musi przebiegać w sposób sekwencyjny - tzn. w danej chwili na żądanie procesu może być wykonany tylko jeden rozkaz kodu programu [2].

Na pojęcie procesu, oprócz kodu programu, składają się również: bieżąca czynność reprezentowana przez licznik rozkazów (ang. program counter)oraz zawartość rejestrów procesora, zwykle także stos procesu (ang. process stack) i sekcja danych (ang. data section) zawierająca zmienne globalne.

Ważne jest rozgraniczenie pojęcia programu i procesu. Pamiętajmy, że program jest obiektem pasywnym, a wszelka aktywność należy do procesów [2]. Proces, który się wykonuje zmienia również swój stan (ang. state). Stan ten jest częściowo określany przez to co robi proces w chwili bieżącej. Możliwe są następujące stany procesów [2]:

W różnych systemach operacyjnych stany noszą różne nazwy. W niektórych omówione stany są bardziej rozdrobnione, jednak przedstawione powyżej stany występują zawsze. Pamiętajmy, że w każdej chwili, w określonym procesorze, tylko jeden proces może być aktywny, zaś wiele procesów może być gotowych lub oczekujących.

[Stany procesów]

Rysunek 4.4. Diagram stanów procesu [2].

Rysunek 4.4. przedstawia wszelkie możliwe przejścia pomiędzy poszczególnymi stanami procesu. Każdy proces reprezentowany jest w systemie operacyjnym przez blok kontrolny procesu (ang. process control block - PCB). Blok kontrolny procesu zawiera następujące pola [2]:

Blok kontrolny procesu jest więc magazynem przechowującym wszelkie informacje o procesie. Proces może utworzyć kolejne procesy. Mówimy, że proces "stwórca" - to proces macierzysty (ang. parent proces), zaś proces przez niego utworzony - to proces potomny lub potomek (ang. child).

Gdy proces potomny zostaje utworzony, może stać się kopią procesu macierzystego lub otrzymać nowy program [2]. Proces macierzysty natomiast, może kontynuować działanie współbieżnie ze swoimi "potomkami", ale może też oczekiwać na zakończenie działań wszystkich, bądź niektórych swoich dzieci. Ponadto proces macierzysty może zakończyć działanie któregoś ze swoich procesów potomnych, gdy potomek nadużyje któregoś z przydzielonych mu zasobów, wykonanie zadania przez potomka jest już zbędne, proces macierzysty zakończy się a system operacyjny nie pozwoli potomkowi na dalsze działanie [2]. Więcej informacji na ten temat znajduje się w treści kolejnego rozdziału.

NASTĘPNA