Pamiętamy, że proces "twórca" nazywany jest procesem macierzystym, zaś nowo utworzony proces to proces potomny. Każdy nowo utworzony proces może tworzyć kolejne procesy. Strukturą danych określająca korelacje pomiędzy procesami jest więc drzewo procesów. Dopuszczalne są dwie możliwości przydziału przestrzeni adresowej dla procesu potomnego [1]:

Ponieważ proces do wykonania powierzonych mu informacji potrzebuje zasobów systemowych (np. czasu procesora), muszą mu one zostać przydzielone. Proces potomny utworzony przez proces macierzysty może dostać zasoby systemowe od systemu operacyjnego lub też od procesu macierzystego. Proces macierzysty natomiast, może podzielić swoje zasoby pomiędzy procesy potomne, bądź też sprawić, że niektóre zasoby będą przez potomków wykorzystywane wspólnie.

Gdy proces macierzysty "stworzy" potomka może podążyć dwoma drogami:

Drugi z wyżej wymienionych przypadków pozwala na zastosowanie w środowiskach wieloprocesorowych mechanizmów synchronizacji (np. barier). Koniec działania procesu następuje, gdy proces wykona swoją ostatnią instrukcję. Wówczas proces wywołuje funkcję systemową exit i zostaje usunięty przez system operacyjny. Przed swym wyjściem może jednak przekazać dane do procesu macierzystego. Przed wyjściem odbierane są mu również wszystkie zasoby procesu, a czyni to system operacyjny.

Zakończenie procesu może przebiegać także inaczej. Proces macierzysty może zakończyć działanie procesu potomnego używając funkcji abort. Proces macierzysty musi więc znać identyfikatory swych potomków, dlatego tworzenie nowego procesu zawsze wiąże się z przekazaniem jego identyfikatora do procesu macierzystego. Funkcja abort może zostać użyta w przypadku, gdy [1]:

Zakończenie działania procesu nie oznacza wcale, że proces ten nie może zostać uruchomiony ponownie z takimi samymi zasobami, jakie miał wcześniej.

NASTĘPNA