Proces v operačnom systéme: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 19: Riadok 19:
 
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é:
 
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 )<br />- 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 ).<br />
+
# <br />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 ).<br />
  
# bežiaci proces ( RUNNING )<br />- 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é.<br />
+
# <br />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é.<br />
  
# pripravený proces ( READY )<br />- 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.<br />
+
# <br />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.<br />
  
# čakajúci proces ( WAITING )<br />- 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é:<br />
+
# <br />č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é:<br />
 
#* č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 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 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ý
Riadok 31: Riadok 31:
 
#* čakanie na potomka. Proces môže vytvoriť potomka a čakať na jeho ukončenie.
 
#* čakanie na potomka. Proces môže vytvoriť potomka a čakať na jeho ukončenie.
  
# ukončený proces ( TERMINATED )<br />- 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.<br />
+
# 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.<br />
  
 
Životný cyklus daného procesu spočíva v prechodoch medzi rôznymi stavmi, ktoré je vidieť na obr. 3. Medzi typické prechody patria:
 
Životný cyklus daného procesu spočíva v prechodoch medzi rôznymi stavmi, ktoré je vidieť na obr. 3. Medzi typické prechody patria:
 +
# <br />pripustenie ( admit ) novovytvoreného procesu do stavu pripravený,<br />
 +
# naplánovanie ( dispatch ) pripraveného procesu: stane sa bežiacim, doteraz bežiaci proces prešiel do stavu pripravený ( čakajúci ),
 +
# prerušenie bežiaceho procesu po uplynutí časového kvanta a prechod do stavu pripravený,
 +
# čakanie ( systémové volanie wait ) na výskyt udalosti a prechod zo stavu bežiaci do stavu čakajúci,
 +
# po výskyte udalosti ( systémové volanie signal ) prechod zo stavu čakajúci do stavu pripravený,
 +
# ukončenie bežiaceho procesu systémovým volaním exit  a prechod do stavu ukončený.
 +
 +
[[Súbor:Životný cyklus procesu.jpg]]
 +
Obr. 3  Životný cyklus procesu [3]
 +
 +
==Informácie OS o procese==
 +
OS drží všetky informácie o daných procesoch v špeciálnej dátovej štruktúre - tabuľke procesov ( PCB ). PCB pozostáva z položiek, kde každý proces má takýto záznam:
 +
# identifikátor procesu  PID - celé číslo, jednoznačne určuje proces ( v danom časovom ( okamihu ),
 +
# stav procesu ( bežiaci, pripravený, .... ),
 +
# obsah registrov - tieto informácie sú aktuálne len pre nebežiace procesy,
 +
# informácie pre plánovač procesov ( priorita, fronty, ... ),
 +
# informácie o pridelenej pamäti,
 +
# účtovnícke informácie ( čas strávený na CPU a pod. ),
 +
# stav V/V ( napr. priradené zariadenia, otvorené súbory a pod.).
 +
Tieto informácie sa niekedy súhrnne nazývajú kontextom procesu.
 +
 +
==Plánovanie procesov==
 +
Pod pojmom plánovanie procesov rozumieme činnosť OS, ktorý vyberá medzi procesmi a určuje poradie ich vykonávania.
 +
Rozlišujeme tri druhy plánovania procesov  [3]:
 +
 +
#1. dlhodobé - ak je v systéme viacero úloh ( nie procesov, ale používateľom zadaných úloh, napr. výpočtových )  očakávajúcich spustenie, OS musí určiť, ktorá z nich sa má spustiť ako nasledujúca. Jedná sa vlastne o naplánovanie prechodu zo stavu novovytvorený do stavu čakajúci. V multiprocesovom OS ( interaktivita, time-sharing ) väčšinou nie je prípustné, aby zadaná úloha čakala na spustenie neurčitý čas, lebo systém je príliš zaťažený a preto OS musí oznámiť okamžite, že úloha sa spustiť nedá,
 +
#2. strednodobé - súvisí s odkladaním úloh do operačnej pamäte ( swapping ),
 +
#3. krátkodobé - určenie procesu ( spomedzi pripravených ), ktorý sa má stať
 +
bežiacim.

Verzia zo dňa a času 23:10, 6. apríl 2010

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:

  1. kódu ( textu ) programu - tzv. kódový segment
  2. hodnoty registrov ( napr. hodnota registra IP určuje, kde sa vykonávanie nachádza v texte programu )
  3. 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
  4. 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é:


  1. 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 ).

  1. 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é.

  1. 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.

  1. č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.
  1. 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:


  1. pripustenie ( admit ) novovytvoreného procesu do stavu pripravený,
  2. naplánovanie ( dispatch ) pripraveného procesu: stane sa bežiacim, doteraz bežiaci proces prešiel do stavu pripravený ( čakajúci ),
  3. prerušenie bežiaceho procesu po uplynutí časového kvanta a prechod do stavu pripravený,
  4. čakanie ( systémové volanie wait ) na výskyt udalosti a prechod zo stavu bežiaci do stavu čakajúci,
  5. po výskyte udalosti ( systémové volanie signal ) prechod zo stavu čakajúci do stavu pripravený,
  6. ukončenie bežiaceho procesu systémovým volaním exit a prechod do stavu ukončený.

Životný cyklus procesu.jpg Obr. 3 Životný cyklus procesu [3]

Informácie OS o procese

OS drží všetky informácie o daných procesoch v špeciálnej dátovej štruktúre - tabuľke procesov ( PCB ). PCB pozostáva z položiek, kde každý proces má takýto záznam:

  1. identifikátor procesu PID - celé číslo, jednoznačne určuje proces ( v danom časovom ( okamihu ),
  2. stav procesu ( bežiaci, pripravený, .... ),
  3. obsah registrov - tieto informácie sú aktuálne len pre nebežiace procesy,
  4. informácie pre plánovač procesov ( priorita, fronty, ... ),
  5. informácie o pridelenej pamäti,
  6. účtovnícke informácie ( čas strávený na CPU a pod. ),
  7. stav V/V ( napr. priradené zariadenia, otvorené súbory a pod.).

Tieto informácie sa niekedy súhrnne nazývajú kontextom procesu.

Plánovanie procesov

Pod pojmom plánovanie procesov rozumieme činnosť OS, ktorý vyberá medzi procesmi a určuje poradie ich vykonávania. Rozlišujeme tri druhy plánovania procesov [3]:

  1. 1. dlhodobé - ak je v systéme viacero úloh ( nie procesov, ale používateľom zadaných úloh, napr. výpočtových ) očakávajúcich spustenie, OS musí určiť, ktorá z nich sa má spustiť ako nasledujúca. Jedná sa vlastne o naplánovanie prechodu zo stavu novovytvorený do stavu čakajúci. V multiprocesovom OS ( interaktivita, time-sharing ) väčšinou nie je prípustné, aby zadaná úloha čakala na spustenie neurčitý čas, lebo systém je príliš zaťažený a preto OS musí oznámiť okamžite, že úloha sa spustiť nedá,
  2. 2. strednodobé - súvisí s odkladaním úloh do operačnej pamäte ( swapping ),
  3. 3. krátkodobé - určenie procesu ( spomedzi pripravených ), ktorý sa má stať
bežiacim.