240 likes | 337 Views
5. přednáška 20. 3. 2014 složení OS proces ( co je to, vytvoření a přerušení, implementace ) vztah mezi OS a procesy PCB (Process Control Block) trasování procesů stavové diagramy procesů odkládání procesů Studijní materiály najdete na adrese: http://www.uai.fme.vutbr.cz/~vdumek/.
E N D
5. přednáška 20. 3. 2014 • složení OS • proces (co je to, vytvoření a přerušení, implementace) • vztah mezi OS a procesy • PCB (Process Control Block) • trasování procesů • stavové diagramy procesů • odkládání procesů Studijní materiály najdete na adrese: http://www.uai.fme.vutbr.cz/~vdumek/
Operating system Design Hierarchy Level 1: obsahuje elektronické obvody, které představují registry, paměťové buňky a logická hradla, operace na těchto objektech jsou např. mazání registrů, čtení z paměti, atd. Level 2: představuje instrukční soubor procesoru se strojovými instrukcemi (sčítání, odčítání, přesun, ...) Level 3: volání procedur a funkcí (podprogramů), call and return Level 4: představuje přerušení, při kterém se ukládá starý kontext a aktivuje se přerušovací rutina První 4 úrovně nejsou součástí operačního systému, ale zahrnují HW. Přesto některé části operačního systému těchto úrovní využívají (přerušení).
Operating system Design Hierarchy Level 5: v této úrovni běží procesy, jsou přepínány, je zajištěna synchronizace Level 6: zabývá se sekundární pamětí počítače (pevný disk), jsou zde implementovány funkce polohování čtecích hlav, přesun bloků dat, využívá sousedních vrstev pro plánování a adresování přesunů bloků dat Level 7: vytváří logický adresní prostor pro procesy, tato vrstva zajišťuje přesun dat mezi operační pamětí a diskem, běžná jsou 3 schémata: pevná délka stránky, proměnná délka stránky a obojí, pokud není požadovaný blok dat v paměti, zapojí se vrstva 6 Do úrovně Level 7 se operační systém zabývá pouze procesory, od úrovně Level 8 jsou zapojeny periferie a počítačová síť, objekty jsou sdíleny na jednom nebo více počítačích.
Operating system Design Hierarchy Level 8: zabývá se komunikací mezi procesy, pipes (roury) slouží k předávání informací mezi procesy, synchronizace, zprávy Level 9: long-term storage pojmenovaných souborů, čtení dat do proměnných, stopy, sektory, konstantní velikost bloku (Level 6) Level 10: poskytuje přístup k externím zařízením pomocí standardních interfaces Level 11: zodpovídá za asociace mezi externími a interními identifikátory zdrojů a objektů, externí jsou textové položky pro uživatele, interní jsou indikátory pro OS, přístupová práva Level 12: poskytuje podporu procesům na vyšší úrovni, než Level 5 (virtuální adresování, seznamy procesů k přepínání, atd.) Level 13: poskytuje intarface OS s uživatelem, shell, transformuje vlastnosti OS do služeb
Proces • prováděný program • instance běžícího programu • entita, která může být popsána a provedena na počítači • aktivní jednotka charakterizovaná a prováděná jedním sekvenčním vláknem, se svým stavem a sdružená se systémovými zdroji Vytváření procesu • přiřazení jedinečného identifikátoru • alokování paměti pro zásobník, image procesu, program a data, hodnoty mohou být imlicitní nebo explicitní • inicializace PCB • nastavení příslušných vazeb (různé fronty dle plánování, ...) • vytváření všech potřebných datových struktur
Vytvoření a přerušení procesu Důvody pro přerušení (ukončení) procesu • vše je hotovo • překročení časového limitu určeného pro běh procesu • proces požaduje více paměti, než mu OS může poskytnout • porušení ochrany paměti, souboru, prostředku, ... • vznik chyby při výpočtu (dělení nulou, velké číslo, ..) • překročení časového limitu při čekání procesu na událost • chyba při I/O operaci • pokus o provedení neexistující instrukce (při větvení programu skok na data, ...) • snaha o provedení instrukce rezervované pro OS • špatný typ nebo inicializace dat • intervence OS nebo rodičovského procesu Korektní - při přerušení procesu je aktuální obsah programového čítače a registrů procesoru (datový kontext) přenesen do příslušné datové oblasti korespondující s PCB a stav procesu je označen jinou hodnotou, přepnutí kontextu Důvody pro vytvoření procesu • spuštění nového programu (příkaz, dávka, ...) • přihlášení uživatele • operační systém potřebuje provést nějakou službu ve prospěch uživatele nebo jiného procesu • při běhu programu se objeví potřeba paralelismu nebo modularity (spawn)
Typical Process Implementation Main memory Processor registers i Process index Process list i j PC Base b Limit h Context Process A Data . . . Program Other registers b Context Process B Data h Program
Vztah mezi operačním systémem a procesy P1 P2 P3 Pn . . . - tradiční přístup, běžný pro starší OS, kernel běží vně všech procesů, procesy jsou přerušovány pomocí supervissor call, kontext procesu je uložen, kernel má vlastní paměť a zásobník, po provedení požadované funkce se provede návrat k procesu kernel P1 P2 P3 Pn funkce OS . . . - způsob běžný pro PC a workstations, funkce OS se provádí v kontextu procesů, OS je kolekcí rutin prováděných v rámci uživatelských procesů, každý image procesu obsahuje i program, data a zásobník kernelu OS1 OS2 OS3 OSn process switching functions P1 P2 P3 Pn . . . - OS je implementován jako kolekce systémových procesů, většina kernelových funkcí je organizována v samostatných procesech process switching functions
OS je prováděn během procesu Process identification Process state information PCB Process control information běžné pro OS na PC a workstations, SW OS probíhá v kontextu uživatelského procesu každý image procesu obsahuje i program, data a zásobník kernelu User stack Private user address space(program, data) Kernel stack sdílení všemi procesy Shared address space
Uživatelské procesy v paměti Process identification Process identification Process identification Process state information Process state information Process state information Process control information Process control information Process control information process image User stack User stack User stack . . . Private user address space (programs, data) Private user address space (programs, data) Private user address space (programs, data) Shared address space Shared address space Shared address space Process 2 Process n Process 1
Struktura seznamů procesů Running PCB Ready Blocked PCB PCB PCB PCB PCB PCB PCB PCB
Typické komponenty PCB Process Identification – obsahuje identifikátory (procesu, rodiče, uživatele) Process State Information – registry viditelné uživatelem (pouze některé), řídící a stavové registry (program counter, condition codes (výsledky logických a aritmetických operací)), ukazatele zásobníků Process Control Information – plánovací informace (stav, priorita, ...), ukazatele na spolupracující datové struktury, meziprocesová komunikace (příznaky, signály, zprávy, ...), informace o MMU, informace o vlastnění zdrojů, informace o využití procesoru
Identifier State Priority Program counter Memory pointers Context data I/O status information Accounting information . . . Zjednodušený Process Control Block PCB (execution context) - datová struktura vytvářená a řízená prostřednictvím OS, jedná se o klíčový moment v otázce podpory běhu více procesů Identifikátor – jedinečné označení procesu, odlišné od všech jiných Stav – označuje stav procesu z množiny stavového diagramu Priorita – je zde poznamenána úroveň priority procesu Čítač instrukcí – ukazuje na další instrukci při provádění procesu Paměťové ukazatele – obsahují údaje o umístění kódu procesu, datech a sdílených oblastech s jinými procesy Související data – obsah registrů během provádění procesu Stav V/V – obsahuje nevyřízené V/V požadavky procesu, sdružená zařízení s procesem, seznam souborů souvisejících s procesem, ... Účtovací informace – mohou obsahovat údaje o spotřebovaném procesorovém čase, časové limity, ...
Trace of Process B 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 8000 8001 8002 8003 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 Trace of Process A Trace of Process C Trasování procesů Main memory 0 100 Dispatcher Program counter 5000 Process A 8000 8000 Process B 12000 Process C 5000 – Starting address of program of Process A 8000 – Starting address of program of Process B 12000 – Starting address of program of Process C
Timeout Timeout Timeout Timeout Dvoustavový diagram procesů • 5000 • 5001 • 5002 • 5003 • 5004 • 5005 • 100 • 101 • 102 • 103 • 104 • 105 • 8000 • 8001 • 8002 • 8003 • 100 • 101 • 102 • 103 • 104 • 105 • 12000 • 12001 • 12002 • 12003 • 12004 • 12005 • 100 • 101 • 102 • 103 • 104 • 105 • 5006 • 5007 • 5008 • 5009 • 5010 • 5011 • 100 • 101 • 102 • 103 • 104 • 105 • 12006 • 12007 • 12008 • 12009 • 12010 • 12011 Dispatch Enter Exit Not running Running Pause I/O request Exit Queue Enter Dispatch Processor Pause
0 5 10 15 20 25 30 35 40 45 50 Stavy procesů při trasování Process A Process B Process C Dispatcher Running Ready Blocked
dokončen probíhající Procesu je přiřazen procesor Čekání na dokončení I/O operace připraven čekající předán přijat I/O operace je dokončena Stavy procesu - probíhající: je přidělen procesor - čekající: čekání na určitou událost - připraven: čeká na přidělení procesoru - předán: očekává se reakce OS na předání úlohy - přijat: úloha převedena do vnitřního tvaru, procesům nejsou přiděleny žádné prostředky - dokončen: prostředky jsou volné
Dispatch New Running Ready Exit Přijmout Timeout Uvolnit Blocked Událost nastala Očekávaná událost Pětistavový model procesu • předpokládejme přítomnost jednoho procesoru • New – vytvořený proces, který ještě nebyl přijat operačním systémem, už má vytvořený PCB • Ready – čeká na svoji příležitost (modifikováno politikou přidělování) • Running – právě zpracovávaný proces, může být pouze jeden • Exit – proces uvolnil veškeré přidělené prostředky, ukončen, zrušen • Blocked – odložený proces z důvodu očekávání události (prostředek, zpráva, ...)
Jeden stav suspend Dispatch New Admit Ready Running Release Exit Timeout Activate Event occurs Event wait Ready – proces je v paměti a je připraven k provedení Blocked – proces je v paměti a očekává nějakou událost Suspend – proces je na disku a čeká na uvolnění místa v paměti Suspend Blocked Suspend
New Suspend Admit Admit Activate Dispatch Ready / Suspend Ready Running Release Exit Suspend Timeout Event occurs Event occurs Event wait Activate Blocked / Suspend Blocked Suspend Dva stavy suspend
Přechody mezi stavy procesu Blocked -> Blocked/Suspend: málo místa v paměti, možnost vzniku nových procesů Blocked/Suspend -> Ready/Suspend: pokud nastala událost, na kterou proces musel čekat Ready/Suspend -> Ready: pokud není v paměti žádný proces schopný svého provedení, záleží na prioritě procesů Ready -> Ready/Suspend: používá se v případě potřeby získat hodně místa v paměti, někdy si pro suspendování může OS vybrat ready proces s nízkou prioritou místo blokovaného procesu s prioritou vysokou - nově vzniklý proces někdy nemusí mít vytvořeny všechny podmínky pro svůj běh
Odkládání procesů • stav suspend • každý prováděný proces musí být uložený v paměti, pokud blokované procesy zaplní paměť do určité míry, jsou převedeny do stavu suspend a odkládány na disk (swapování), diskové operace jsou z hlediska výměn rychlostně uspokojivé • systém má možnost vzít do fronty připravených procesů proces nový (zvýšení míry multiprogramování) nebo proces ze stavu suspend (z disku) • při opuštění stavu suspend se předpokládá okamžité zapojení procesu do mechanismu plánování • není účelné zařazovat suspendované procesy, které očekávají nějakou událost
Důvody pro odložení procesu SwappingOS potřebuje uvolnit místo v operační paměti, potřebuje zde umístit proces ve stavu Ready Other OS ReasonOS může suspendovat nějaký méně důležitý (background) proces, nějakou utilitu nebo proces podezřelý z působení problémů User Reguestinteraktivní požadavek uživatele přerušení programu z důvodů trasování, modifikace HW zdrojů Timingpřerušení periodicky se opakujícího procesu (účtování, monitorování, ...) a čekání na další periodu Parent Requestrodič si může přát suspendování potomka za účelem jeho zkoumání nebo modifikace, pro koordinaci akcí několika potomků