190 likes | 341 Views
Riadenie procesov. Úvod. Ľubovoľná aplikácia, ktorú spustíme vytvorí v OS proces Jednému procesu zodpovedá práve jeden program (ale jednému programu môže prislúchať viac procesov) Procesy sa medzi sebou prepínajú – každý chvíľu zamestnáva procesor (ťahá pílku). Proces.
E N D
Úvod • Ľubovoľná aplikácia, ktorú spustíme vytvorí v OS proces • Jednému procesu zodpovedá práve jeden program (ale jednému programu môže prislúchať viac procesov) • Procesy sa medzi sebou prepínajú – každý chvíľu zamestnáva procesor (ťahá pílku)
Proces • je to program, ktorý sa práve vykonáva • vykonávanie je sekvenčné: v každom časovom okamihu sa vykonáva nanajvýš jedna inštrukcia daného procesu a po jej vykonaní sa prejde na ďaľšiu inštrukciu procesu alebo sa začne vykonávať iný proces. • proces je aktívna, dynamická entita na rozdiel od (textu) programu, ktorý je statickou, pasívnou entitou.
Charakteristiky procesu • Kód – text programu (strojový kód) • Hodnoty registrov – akumulátor, IP, SP, ... • PID – identifikačné číslo procesu • Dáta procesu – uložené v RAM • Stav procesu • Všetky tieto údaje sa uchovávajú v tabuľke procesov – je to špeciálna dátová štruktúra v chránenej časti RAM
Stav procesu • určuje prípustné operácie s procesom a reakcie procesu na ne • Stavy: • Nový (NEW) – proces bol práve vytvorený a ešte nebol pripustený k CPU • Bežiaci (RUNNING) – práve je vykonávaný CPU • Pripravený (READY) – čaká na CPU, kým ho uvoľní iný proces • Čakajúci (WAITING) – nevykonáva sa pretože čaká na nejakú udalosť (vstup z klávesnice a pod.) • Ukončený (TERMINATED) – vykonal poslednú inštrukciu alebo ho OS násilne ukončil
Životný cyklus • Prechody medzi jednotlivými stavmi • Prechody: • Pripustenie (admit) – NEW READY • Naplánovanie (dispatch) – READY RUNNING • Prerušenie – RUNNING READY • Čakanie – READY WAITING • Po výskyte udalostí – WAITING READY • Ukončenie – RUNNING TERMINATED
Informácie o procese • Sú uložené v tabuľke procesov, ktorá sa skladá z tzv. PCB (process control blockov), ktoré obsahujú: • PID • Stav procesu • Obsah registrov • Informácie pre plánovač (priorita, front, ...) • Informácie o pridelenej pamäti • Účtovnícke operácie (čas strávený na CPU, čas posledného behu, ...) • Stav I/O – priradené zariadenia, súbory ,... • Tieto informácie nazývame aj kontextom procesu
Prepínanie kontextu • Nastáva pri zmene bežiaceho procesu • Ak pri tom prepíname z procesu A na proces B, tak : • informácie o procese A sa uložia do jeho PCB, • obnoví sa proces B z informácií uložených v jeho PCB, • riadenie sa odovzdá procesu B
Vytváranie procesu • procesy sú vytvárané inými procesmi: proces-rodič vytvorí proces-potomka • deje sa to volaním systému vytvor-proces • procesy tvoria strom, ktorého koreň vzniká pri štarte OS • po vytvorení potomka môže rodič • pokračovať v činnosti • počkať na ukončenie potomka. • OS umožňuje zdieľanie zdrojov medzi rodičom a potomkom
Vytváranie procesu - UNIX • Rodičovský proces vytvorí nový proces príkazom „fork“ • Nový proces má zdrojový text rodiča ale nové informácie v PCB • Príkazom „exec“ zmeníme zdrojový text za iný • Rodič má informáciu o svojich potomkoch (vie ich PIDy)
Vytváranie procesu - DOS • nový proces je možné vytvoriť volaním exec, ale rodič nemôže súbežne pokračovať, musí počkať na ukončenie potomka
Vytváranie procesu - WIN • preferovaným spôsobom vytvárania potomkov je jednotný mechanizmus vytvor-proces, t.j. nový proces dostane aj nový kód • podporuje sa aj mechanizmus fork/exec
Ukončenie procesu • Proces vykoná svoje posledné inštrukcie (na konci je uskutočnené systémové volanie exit), alebo je násilne ukončený systémovým volaním abort. • OS uvoľní všetky zdroje systému, ktoré boli pridelené. Ak je to nutné, násilne sa ukončia iné súvisiace procesy. • Po ukončení procesu je jeho návratový kód vrátený rodičovskému procesu. • PCB potomka sa uvoľní až vtedy, keď jeho rodič spracoval (vzal na vedomie volaním wait) túto návratovú hodnotu. • Ak to rodič neurobí, z potomka sa stane zombie ─ ukončený proces, ktorý stále zaberá miesto v tabuľke procesov
Plánovanie procesu • činnosť OS, ktorá vyberá medzi procesmi a určuje poradie ich vykonávania. • Rozlišujeme tri druhy plánovania procesov: • Dlhodobé • Strednodobé • krátkodobé
Dlhodobé plánovanie • Ak je v systéme viacero užívateľských úloh 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.
Strednodobé plánovanie • Súvisí s odkladaním procesov na disk (swapping), OS rozhoduje o tom, ktorý proces sa odsunie na disk alebo presunie do op. pamäti.
Krátkodobé plánovanie • Určenie procesu spomedzi pripravených, ktorý sa má stať bežiacim.
Zmena stavu procesu • OS musí vybrať proces, ktorý prejde do stavu bežiaci • Pripravené procesy sú organizované vo fronte. V prípade že procesy majú priority môže byť front usporiadaný podľa hodnôt priorít. Priorita určuje, ktorý z pripravených procesov sa vyberie plánovačom ─ čím vyššia priorita, tým väčšia šanca dostať sa k CPU. • Poznamenajme, že aj procesy čakajúce na udalosti sú zaradené vo frontoch, typicky existuje front pre každý typ udalosti ako aj pre každé I/O zariadenie.