Sprva proces Zkladn pojmy Program loha job Proces
Správa procesů
Základní pojmy • • Program Úloha (job) Proces Obraz procesu
Zpracování úlohy program proces úloha Předáno ke zpracování Dokončený proces Začalo zpracování Zpracování dokončeno
Vznik procesu • První spuštěný proces systému (init) • 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: Moderní 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 schpny 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ů nový Odebrán procesor Připravený ready Událost nastala Běžící runing Přidělen procesor Potřebuje událost Čekající waiting dokončený
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í 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í 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 • 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 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)
- Slides: 22