290 likes | 392 Views
Informácie o prednáškach. Prednášky nájdete od pondelka na adrese http://s.ics.upjs.sk/~schmotze/OS.html Keby nefungovalo, k ópia je na adrese http://neuron-ai.tuke.sk/~schmotze/OS.html Otázky a pripomienky mi zasielajte mailom na adresu Milan.Schmotzer @e-zones.sk.
E N D
Informácie o prednáškach • Prednášky nájdete od pondelka na adrese http://s.ics.upjs.sk/~schmotze/OS.html • Keby nefungovalo, kópia je na adrese http://neuron-ai.tuke.sk/~schmotze/OS.html • Otázky a pripomienky mi zasielajte mailom na adresu Milan.Schmotzer@e-zones.sk
Operačné systémy2. prednáška nadiaľku Správa procesov
Proces • Proces je program zavedený do OP • Pozostáva z častí: • Kód programu (binárny „text“) • Dáta programu: • Zásobník (volanie funkcií) • Globálne dáta (premenné) • Hromada (na prideľovanie ďalších dát)
Poznámky • Keď si napríklad v Unixe spustí 100 ľudí program, tak bude existovať jediná kópia jeho kódu v operačnej pamäti (OP), ale 100 kópií dát – každý totiž edituje svoje vlastné fotografie, texty • Tým sa šetrí pamäť • Aby operačný systém (OS) rozlíšil, kto čo robí, proces má svoje stavy.
Stavy procesu • Novovytvorený (new) ešte nebeží • Bežiaci (running) je práve vykonávaný pomocou CPU (centrálneho procesora) • Pripravený (ready) čaká vo fronte na pridelenie CPU • Čakajúci (waiting) je pozastavený, čaká na dokončenie I/O operácie, na ukončenie svojho potomka, komunikáciu, sleep(37);
Ukončený (terminated) proces skončil prácu a OS procesu pridelenú OP bude považovať za voľnú
Životný cyklus procesu v OP • To isté, čo stavy, ale inak opísané: • Pripustenie (admit) do stavu pripravený • Naplánovanie (dispatch) do stavu bežiaci • Čakanie (na stlačenie klávesu) • Ukončenie
Tabuľka procesov • Tu si OS drží informácie o procesoch • „riadok“ tabuľky je PCB = process control block, je tam uložený kontext procesu: • PID (identifikačné číslo procesu) • stav procesu • obsahy registrov vrátane registrov CS:IP (to umožňuje viacerým ľuďom spúšťať rovnaký program nad rôznymi dátami) • informácie pre plánovač procesov
údaje o pridelenej OP, • účtovnícke informácie (koľko „strojového“ času, teda CPU milisekúnd program spotreboval) • stav I/O (priradené zariadenia, otvorené súbory)
Plánovanie procesov • Dlhodobé – poradovník úloh (u Windows nie je, ale ak treba spustiť 1000 úloh a systém si vyberá, ktoré, lebo naraz vie len 10 obslúžiť, tak to je to) • Strednodobé (odkladanie stránok) • Krátkodobé (ktorému procesu z fronty prideliť CPU?)
Prepínanie kontextu procesov • Pri prepínaní procesov sa pozastavovaný proces odloží do jemu pridelenej PCB • OS pre proces, ktorý bude bežať, naplní registre dátami z jeho PCB • Voláme to prepínanie kontextu a zaberá to čas. Rovnako sa aj spracúva prerušenie – je to akoby prepnutie kontextu na obsluhu prerušnia
Proces vytvára jeho rodič • Rodič môže počkať na dokončenie procesu alebo pracovať nezávisle (či dokonca skončiť). Ak skončí, z potomka bude po ukončení „zombia“ – nebude mať komu vrátiť návratovú chybovú hodnotu • O zombie sa postará OS: Prvý proces prehlási za rodiča a ten čas od času „preberá“ a zabúda návratové hodnoty
Strom procesov • Procesy vytvárajú strom počnúc procesom stvoriteľom spúšťaným po zavedení OS • Rodič môže mať viacerých potomkov • Potomkovia sú rovnocenní • U Linuxu je strom procesov vo virtuálnom adresári /proc (ten nie je uložený na disku, simuluje ho pre vás OS)
Unix – virtuálny adresár /proc • Každý proces má v tomto adresári podadresár so svojim PID číslom a v ňom pridelenú pamäť, názov programu i s argumentmi ako bol spustený apod. • V /proc sú aj užitočné informácie, napríklad súbor cpuinfo o CPU alebo version o verzii linuxu, uptime o tom, ako dlho systém beží, meminfo o vyuziti OP
Ukončenie procesu • OS uzavrie súbory, ktoré proces neuzavrel • OS uvoľní terminál, klávesnicu, okno procesu • Ak treba, OS aj násilne ukončí potomkov
Plánovač úloh • vytvára procesy z prijatých úloh a rozhoduje, ktorá z nich bude pripustená na zavedenie a stane sa z nej proces. (Ostatné musia čakať.) Úlohe prideľuje vybrané prostriedky. (Po jej skončení prostriedky počítača uvoľní.)
Plánovač procesov • realizuje technológiu multitaskingu – viacúlohovosti OS, t.j. podľa prioritných pravidiel rozhoduje, ktorému z pripravených procesov bude pridelený procesor (CPU) a na ako dlhý časový interval. Pracuje iba nad úlohami, ktoré už plánovač úloh zaviedol do pamäte a vytvoril z nich procesy.
Dispatcher (dispečer) • Sleduje stav procesu. Stará sa o ukladanie obsahov registrov procesora do PCB (pri prepínaní sa procesora na iný proces) apod.
Monotaskové prideľovanie CPU • Ak môže bežať iba jeden proces (nie je multiprogramovanie), používame často • FCFS – first comed first served, spustíme procesy podľa poradia • SJF – shortest job first, najprv časovo najkratšiu úlohu – potrebujeme ale odhad, ako dlho bude úloha spracovávaná. Príkladom ste aj vy – dakto tlačí 100 strán a poviete ale pusť ma prvú, ja tlačím len 3 strany...
Multitaskové prideľovanie CPU • Cyklická obsluha (tzv. Round Robin): Každú milisekundu CPU vykonáva iný proces z fronty. Primitívna obsluha! • Spravodlivá obsluha: ak bol procesu odobratý CPU lebo p. na niečo čakal, bude vo fronte zaradený na spracovanie skôr. • Cyklická obsluha so spätnou väzbou: Nový proces dostane toľko času, koľko ho už doteraz dostali iné procesy
Multitaskové prideľovanie CPU • Prioritná stratágia: Proces dostane taký pomer výkonu CPU, aký si zakúpila firma alebo ako je to dôležité – obsluha jadrového reaktora = real time • Limitovaná cyklická obsluha: Ak proces dohromady vyčerpal pridelený limit sekúnd, potom je obsluhovaný iba ak by systém inak bol v nečinnosti.
Multitaskové prideľovanie CPU • Stratégia rešpektujúca vyváženosť systému: Už pri výbere úlohy sa vyberá tá s najväčšími nárokmi na I/O. (Tým sa chce dosiahnuť vysoká využívanosť I/O zariadení u niektorých systémov.) • Stratégia preferujúca interaktívny prístup: Ak proces komunikuje s používateľom, ihneď mu je pridelený strojový čas – chceme tým dosiahnuť čo najkratšiu dobu odozvy (BeOS).
Multitaskové prideľovanie CPU • Algoritmus plánovania podľa typu úlohy sa snaží o prioritách rozhodovať tak, aby čo najlepšie vyvážil využitie I/O (kedy procesor zaháľa) a využitie CPU (vtedy zasa zaháľajú I/O zariadenia). • Windows a Linux implementujú prioritnú a spravodlivú obsluhu s ohľadom na reálny čas
Unix • sa snaží dosiahnuť akú takú spravodlivosť premenlivými prioritami (stanovené priority procesov sú preň len odporúčaním, v skutočnosti priority podľa vlastného uváženia mení)
Kreditný systém Unixu • Unix používa kreditný systém, priorita = počet kreditov. Vždy sa na spracovanie vyberá proces s najvyšším počtom kreditov a odčíta sa od jeho počtu kreditov číslo 1. Ak sú kredity všetkých pripravených (nečakajúcich) procesov nulové, dôjde k rekreditácii všetkých procesov, aj čakajúcich, takto:
Rekreditácia priorít procesov • Kredity = priorita + staré_kredity / 2 • staré_kredity sú nenulové, a teda sa využijú, len u procesov, ktoré čakali na I/O operáciu, napríklad na vstup od používateľa. • Takto sa hráme na spravodlivú obsluhu, lebo proces, ktorý čakal, bude mať dočasne vyššiu prioritu.
Windows • Priorita procesu v popredí, to je procesu, s ktorým sa práve pracuje (je mu pridelená klávesnica a myš), je trojnásobne vyššia. Tak má proces rýchlu odozvu a pri rovnakom výkone počítača pracuje počítač pre používateľa svižnejšie. • Windows používa tabuľku tried priorít a v nej spravodlivo priority (zverejním nabudúce)
Reálny čas – real time • Proces zaručene musí reagovať do určitého okamihu... • Hard realizácia nepoužíva pevné disky (ale ROM) ani odkladanie stránok ani zložité adresovanie. Je dokonalá a vždy OK. • Soft realizácia používa priority u bežného OS – real time aplikácia bude uprednostnená vždy keď nečaká na I/O.
Koniec prezentácie • Môžete už odísť na obed. • Opakujem, že prednášky nájdete od budúceho pondelka na adrese http://s.ics.upjs.sk/~schmotze/OS.html • Kópia je na adresehttp://neuron-ai.tuke.sk/~schmotze/OS.html • Pripomienky mi zasielajte mailom na adresu Milan.Schmotzer@e-zones.sk