Správa procesů
Základní pojmy Program Úloha (job) Proces
Zpracování úlohy Dokončený proces proces program úloha Zpracování dokončeno Začalo zpracování Předáno ke zpracování
Vznik procesu První spuštěný proces systému Spuštění programu jiným procesem (rodičem procesu). Může to být i proces command, resp. bash Klonováním (fork) již běžícího procesu Takto vzniká stromová struktura procesů s kořenem u procesu intit (v UNIXu) Ve Windows není stromová struktura striktně dodržována
Ukončení procesu Proces ukončí sám sebe - funkce exit() Je ukončen svým rodičem - funkce abort() Je odstraněn uživatel, či systémem Po ukončení rodičovského procesu jsou potomci Ukončeni, nebo Se stanou sirotky ( v UNIXu se jejich rodičem se stane kořenový proces)
Pseudoparaelismus Cíl: Operační systém by měl umožnit uživatelům spustit několik programů současně a přepínat mezi nimi takto vzniklými procesy (multiprogramová a multiprocesní práce) Fakt: Dnešní počítače v některých ohledech porušují von- Neumannovo schéma počítače. Jsou schopné současně provádět program a vstupní nebo výstupní operace, ale obvykle mají pouze jeden procesor, nejsou tedy schopny paraelního zpracování dat (multitasking) Řešení: Procesy sice neběží současně (na to by bylo potřeba více procesorů), ale uživateli se situace tak jeví. Proto pseudoparaelismus.
Vlákna (Thread) Každý proces používá oddělené místo v paměti, komunikaci procesů musí zajistit operační systém Některé systému umožňují rozdělení procesu na více vláken (multithreading). Vlákna na rozdíl od procesů sdílejí stejný paměťový prostor a je mezi nimi jednodušší spolupráce.
Stavy procesu Přidělení prostředků Odebrán procesor Běžící runing nový Připravený ready Přidělen procesor Událost nastala Potřebuje událost dokončený Čekající waiting
Další stavy Pozastavený – varianta stavu čekající, čekání je vynuceno signálem zaslaným jiným programem Spící (sleeping) – varianta stavu čekající, proces čeká na událost, kterou je uplynutí časového kvanta Zombie – varianta stavu ukončený, proces však neuvolnil přidělené prostředky ….
Diagram využití procesoru
Process Control Block (PCB) Informace pro správu procesů PID procesu Obsah CPU registrů Ukazatel na aktuální instrukci Stav procesu Ukazatel na další proces ve frontě Ukazatel na seznam procesů potomků Ukazatel na rodičovský proces Číslo uživatele a skupiny uživatelů
Process Control Block Informace pro správu procesoru Aktuální časové kvantum Využití časových kvant v minulosti Priorita procesu Informace pro správu paměti Ukazatele na segmenty paměti Tabulky stránek Informace pro ochranu paměti Informace pro správu souborů Aktuální adresář Přístupová práva k souborům Účtovací informace Celkový čas využití procesoru Počet přečtených a zapsaných diskových bloků Počet vytištěných stránek na tiskárně
Změna kontextu (Context Switch) Při přechodu procesu ze stavu běžící do stavu čekající, nebo připravený se uloží všechny PCB informace Do zásobníku procesu Do předem připraveného místa v adresové části paměti procesu Při přechodu procesu opět do stavu běžící se provede obnovení informací (context restore)
Plánování procesů Krátkodobé (short-term, CPU sheduling): kterému procesu bude přidělen procesor Střednědobé (medium-term): Pokud je nedostatek paměti, který čekající nebo připravený proces bude odsunut do vnější paměti. Dlouhodobé (long-term, job sheduling): která úloha bude spuštěna při dávkovém zpracování ( při běžné práci na osobním počítači řeší (či neřeší) toto uživatel)
Plánování procesoru (krátkodobé plánování) 1) Pokud proces přejde ze stavu běžící do stavu čekající 2) Pokud proces skončí 3) Pokud proces přejde ze stavu běžící do stavu připravený 4) Pokud proces přejde ze stavu čekající do stavu připravený (užívá se zřídka, obvykle v úlohách běžících v reálném čase)
Plánování procesoru Nepreempitivní: proces se musí procesoru sám vzdát (situace 1,2), například když Skončí Potřebuje událost Sám zjistí, že uplynulo časové kvantum Při nestandardním chování procesu může dojít k zablokování počítače (nižší verze Windows) Preemptivní: Procesor může procesu odebrat plánovač procesů (bod 3) Preemptivní v reálném čase: Plánovač procesů sleduje i neběžící procesy a podle jejich stavu přeplánovává využití procesoru (bod 4)
Strategie plánování procesoru - požadavky spravedlnost: každý proces dostane spravedlivý díl času procesoru efektivita: udržovat maximální vytížení procesoru, případně jiné části systému čas odezvy: minimalizovat dobu odezvy pro interaktivní uživatele doba obrátky: minimalizovat dobu zpracování každé dávkové úlohy průchodnost: maximalizovat množství úloh zpracovaných za jednotku času
Strategie plánování procesoru FCFS (Firs Come First Served): Procesy ve stavu připravený se řadí do fronty FIFO, nepreemptivní RR (Round Robin Sheduling): Procesy ve stavu připravený se řadí do fronty FIFO, preemptivní SJF (Short Job First): Přednost mají úlohy, u kterých se předpokládá kratší doba běhu, nebo nevyužití časového kvanta na základě jejich chování v minulosti. Prioritní strategie (Priority): Procesy jsou ve frontě řazeny podle své priority, může dojít ke stárnutí (starvation) procesů s nízkou prioritou Strategie založené na proměnné délce časového kvanta: Podle priority, nebo podle délky kvanta využité v minulosti
„Priority“ procesů (Windows) Hodnoty 0-31 0: Nulový proces 1: Nečinný proces 4: Nízká priorita 6: Podprůměrná priorita 8: Normální priorita 10: Nadprůměrná priorita 13: Vysoká priorita 15: Maximální priorita pro běžné procesy 24: Priorita procesů reálného času 31: maximální hodnota Priority lze vidět na Crtl-Alt-Del Zobrazit-Vybrat sloupce (slovní vyjádření), nebo pomocí specializovaných nástrojů. Nastavovat je lze jen velmi omezeně a pomocí specializovaných programů.
Priority procesů Windows Pro každou prioritu existuje samostatná fronta připravených procesů Procesor je vždy přednostně přidělován procesům s vyšší prioritou Procesor je přidělován na pevnou dobu, tuto dobu lze omezeně měnit (Systém-Upřesnit- Nastavení výkonu-Upřesnit-Optimalizovat pro programy / Optimalizovat pro služby) Problém stárnutí procesů řeší uživatel
Priority procesů UNIX Běžné procesy 1-40 Procesy reálného času 1-99 (odlišný způsob zpracování, například vlastní plánovač procesoru) Nice hodnota od -20 do +19 zvyšuje, nebo snižuje prioritu procesu Výsledná priorita = základní priorita – nice Příkazy nice –n <hodnota nice> <aplikace> nice –n 10 ps ps -le
Plánování procesů LINUX Z připravených procesů je vybrán proces s nejvyšší prioritou. Ostatním procesů je dočasně dynamicky zvýšena priorita (prevence stárnutí procesů) Časové kvantum je odvozeno od časových kvant spotřebovaných v minulosti (Drakeovy vzorce cyklické obsluhy)