Proces v operačnom systéme
1. | Operačný systém |
2. | Proces v operačnom systéme |
3. | Porovnanie vybratých operačných systémov
|
Proces v operačnom systéme
Proces je program, ktorý sa práve vykonáva. Je to aktívna, dynamická entita na rozdiel od ( textu ) programu, ktorý je statickou, pasívnou entitou. Vykonávanie sa označuje ako sekvenčne - v každom časovom okamihu sa vykonáva jedna inštrukcia daného procesu a po jej ukončení sa prejde na ďalšiu, alebo sa začne vykonávať iný proces. V danom čase procesu zodpovedá presne jeden program, ale danému programu môže zodpovedať viacero vykonávaných procesov, napr. viacerí používatelia pracujú s textovým editorom, spustili jediný program ( v pamäti sa nachádza iba raz ), ale ide o desať samostatných procesov.
Proces pozostáva z:
- kódu ( textu ) programu - tzv. kódový segment
- hodnoty registrov ( napr. hodnota registra IP určuje, kde sa vykonávanie nachádza v texte programu )
- dát procesu:
- a)globálne dáta - prístupné všetkým procedúram programu
- b)zásobník(y) - implementuje postupnosť volaní jednotlivých procedúr ( call stack )
- c)hromada ( heap ) - implementuje dynamicky prideľované a vracané dáta
- stavu procesu - aktivita vykonávaná procesom
Presný súhrn týchto charakteristík určuje proces v OS.
Stav procesu
Proces sa počas vykonávania nachádza v rôznych stavoch, ktoré určujú prípustné operácie s procesom a reakcie procesu na ne. Stavy môžeme popísať konečným automatom, pričom každý OS sa líši v presnej množine stavov procesov a povolených operáciách ( prechodoch ), takže nasledovné rozdelenie možných stavov je zovšeobecnené:
- novovytvorený proces ( NEW )
- tento proces sa práve vytvoril, ale ešte nebol priradený k CPU – neprevzal riadenie . Procesy sú vytvárané inými procesmi: proces - rodič vytvorí proces - potomka. Táto činnosť sa vykonáva systémom vytvor proces ( presný mechanizmus sa líši systém od systému ). Procesy vytvárajú strom, ktorého koreň vzniká pri štarte OS. Keď sa vytvorí potomok môže rodič pokračovať v činnosti, alebo počká na ukončenie potomka. Medzi rodičom a potomkom OS umožňuje zdieľanie zdrojov, ak o to rodič požiada ( napr. potomok môže dostať prístup k otvoreným súborom rodiča ).
- bežiaci proces ( RUNNING )
- proces, ktorý sa práve vykonáva na CPU. V modernom multiprocesovom OS býva proces po uplynutí určitého času ( časové kvantum ) násilne prevedený zo stavu bežiaci do stavu pripravený, aby aj iné procesy mohli byť vykonávané.
- pripravený proces ( READY )
- proces, ktorý by sa mohol vykonávať, ale práve nie je priradený k CPU. OS by mal zabezpečiť naplánovanie takéhoto procesu, t.j. jeho priradenie k CPU v dohľadnom čase - toto je základná idea time sharingu.
- čakajúci proces ( WAITING )
- proces, ktorý sa ( dočasne ) nemôže vykonávať, lebo čaká na výskyt udalosti. Udalosť sa väčšinou ohlasuje formou prerušenia alebo iným vnútorným mechanizmom OS. Príčiny čakania sú rôznorodé:
- čakanie na dokončenie V/V. Proces čaká vo fronte daného V/V zariadenia, fronty sú organizované pomocou PCB. Po ukončení V/V nastane prerušenie, počas jeho spracovania proces prejde do stavu pripravený.
- čakanie na komunikáciu s iným procesom. Toto sa môže implementovať rôzne, ale komunikáciu ( napr. príjem dát ) od druhého procesu spracuje OS, odovzdá prijaté dáta čakajúcemu procesu a prevedie ho do stavu pripravený
- čakanie na uplynutie zadaného času ( sleep )
- čakanie na potomka. Proces môže vytvoriť potomka a čakať na jeho ukončenie.
- ukončený proces ( TERMINATED )
- proces, ktorý vykonal svoje inštrukcie, alebo bol inak ukončený ( systémovým volaním abort ). Po čase sa takýto proces odstráni zo systému. Po skončenom procese však zostáva určitá množina údajov, kde sú uložené napríklad výstupné údaje, o ktorých sa predpokladá, že môžu byť neskôr vyžadované inými procesmi na prečítanie. Ak tieto údaje ešte existujú, proces sa nachádza v stave tzv. zombie.
Životný cyklus daného procesu spočíva v prechodoch medzi rôznymi stavmi, ktoré je vidieť na obr. 3. Medzi typické prechody patria: