Starsi pocitace umoznovaly spoustet pouze jeden program. Tento program plne vyuzival
OS i vsechny systemove zdroje. Soucasne pocitace umoznuji beh vice programu
soucasne.. Instanci beziciho programu v takovem systemu je proces.
Proces je zakladni jednotka prace moderniho OS se sdilenim casu.
Takovy system s velkeho mnozstvi soubezne spustenych procesu:
procesu operacniho systemu
uzivatelskych procesu
Vsechny tyto procesy bezi zdanlive soucasne a CPU je stridave obsluhuje. OS se tim stava
produktivnejsi.
Proces jako takovy neni pouze kod programu, ale zahrnuje v sobe i vsechny jeho
"aktivity", ktere jsou reprezentovany hodnotami ukazatele programu (program
counter) a obsahem registru procesoru. V globalu proces v sobe zahrnuje take
zasobnik (stack) obsahujici docasna data (jako napr. parametry podprogramu,
navratove adresy a docasne promenne) a sekci dat pro globalni promenne. (code segment,
stack segment, data segment viz. Segmentace pameti).
Program sam o sobe neni proces! Je to pasivni entita existujici napr. jako
soubor dat na disku. Proces je aktivni entita s ukazatelem programu, ktery specifikuje
nasledujici instrukci, ktera se ma vykonat a dalsich zdroju (viz. vyse).
Vice procesu muze byt asociovano s tymz programem. Nekolik uzivatelu najednou muze
spustit napr. program na mail nebo textovy editor. Kazdy z techto uzivatelu vytvori svuj
proces, ktery ma identickou kodovou cast s ostatnimi, ale datovou ma kazdy proces jinou.
3.1.1. Stavy procesu
Kazdy proces se muze vzhledem ke sve momentalni aktivite vyskytovat v nekterem z
nasledujicich stavu:
Novy (New) - proces byl prave vytvoren
Probihajici (Running) - instrukce procesu zacala byt vykonavana
Cekajici (Waiting) - proces ceka na nejakou udalost (napr. na
dokonceni I/O operace nebo prijeti signalu)
Pripraven (Ready) - proces ceka na procesor
Ukoncen (Terminated) - proces dokoncil svou cinnost
Nazvy stavu procesu se nekdy lisi mezi jednotlivymi OS, ale vsechny tyto stavy vsechny
systemy obsahuji. Je vhodne zaznamenat, ze v kazdem systemu muze byt v danou chvili
pouze jeden proces ve stavu probihajici na jednom procesoru a mnoho procesu
muze byt ve stavu cekajici nebo pripraven. Stavovy diagram procesu je
na Obr. 36.
Obr. 36 Stavovy diagram procesu
3.1.2. Process Control Block
Kazdy proces v OS je reprezentovan zaznamem, ktery se jmenuje process control
block. PCB je na Obr. 37. Obsahuje mnozstvi informaci o procesu, jako napr:
Status procesu (Process state) - {Novy, Probihajici, Cekajici, Pripraven,
Ukoncen}
Ukazatel programu (Program counter) - obsahuje adresu nasledujici instrukce
v prubehu vykonavani procesu
CPU registry (CPU registers) - pocet registru je ruzny v zavislosti na
architekture procesoru. Jsou tam akumulatory, indexove registry, ukazatele do zasobniku
aj. V pripade preruseni behu procesu musi byt aktualni obsah registru, stejne jako ukazatel
programu ulozen do PCB, aby pri dalsim prideleni procesoru mohl proces korektne
pokracovat.
CPU planovaci informace (CPU scheduling information) - priorita procesu,
ukazatele do planovacich front aj.
Informace spravy pameti (Memory management information) - pocet base a
limit registru, tabulky stranek nebo segmentu
Uctovaci informace (Accounting information) - informace o case prideleni
procesoru, casovy limit, cislo procesu aj.
I/O stavove informace (I/O status information) - seznam I/O zarizeni
alokovanych pro tento proces, seznam otevrenych souboru apod.