Procesi pri sistemu UNIX


Življenje procesa

Proces zaživi, ko v procesu -očetu pride do klica fork( ). Vzemimo primer, ko je tak proces-oče lupina UNIX. Kaj se z obema procesoma dogaja, kaže spodnja slika.
 

Proces - otrok najprej "podeduje" kopijo podatkov in programske kode od očeta, vendar nato običajno s klicem execve nadomesti to s svojo podatkovno strukturo in programsko kodo.

Primer fork( )


Stanja procesa

Posamezni programski procesi med svojim "življenjem" spreminjajo svoje stanje. Kaj se s posameznim procesom dogaja od njegovega rojstva (ki ga povzroči sistemski klic fork( ), do njegovega zaključka, ponazoruje spodnja slika:
 
 

Vsakemu programskemu procesu ustreza podatkovna struktura, ki vsebuje vse za restavracijo procesa po njegovem ponovnem zapisu (swap in) v pomnilnik. Strukture procesov, ki so pripravljeni za izvedbo (ready to run), so povezane v seznam (the ready queue), ki ga obravnava razvrščevalnik (scheduler).V posamezni procesni strukturi so tudi kazalci na tabele strani (page tables) z naslovi delov procesa, naloženega v pomnilnik, oziroma z naslovi procesa, prepisanega na začasen prostor na disku (swap device).


Struktura procesa:

Virtualni naslovni prostor uporabniąkega procesa je razdeljen v tekstovni segment (programska koda), podatkovni segment in segment s skladom. Ker lahko večinoma tekstovni segment skupno uporablja več procesov (pomislimo na večkratno istočasno uporabo urejevalnika), poznajo taki procesi še posebno strukturo (struktura teksta), v kateri so kazalci na strani s programsko kodo ter števci, koliko procesov rabi to kodo.

Informacijo o procesu, ki jo potrebujemo le, ko teče proces v primarnem pomnilniku, hranimo v posebni "uporabniški" strukturi (u-structure, u-area). To strukturo sme spreminjati le jedro (kernel). Tudi ta struktura se lahko "umakne" na disk. V tej strukturi lahko pomnimo:

vsebine delovnih registrov (potrebno za restavracijo procesa),
kopijo parametrov pri sistemskih klicih.
opisnike vseh odprtih datotek
interne vhodno - izhodne parametre
podatek o tekočem direktoriju
meje procesa in datotek

Iz spodnje slike je razvidno, katere strukture posameznega procesa so stalno rezidenčne v primarnem pomnilniku, katere pa lahko sistem umika na začasno področje (swap area na disku).

LINUX: Struktura procesa  in opis virtualnega pomnilnika za ta proces
Kazalec  kaže na trenutno tekoči proces.
LINUX: Podrobnosti o procesih