5. přednáška 14. března 2016 Operační systémy 2015/2016
Operating system Design Hierarchy L Name Objects Example Operations 13 Shell User programming environment Statements in shell language 12 User processes Quit, kill, suspend, resume 11 Directories Create, destroy, attach, detach, search list 10 Devices External devices, such as printers, displays and keyboards Open, close, read, write 9 File system Files Create, destroy, open, close, read, write 8 Comunications Pipes 7 Virtual memory Segments, pages Read, write, fetch 6 Load secondary store Blocks of data, device channels Read, write, allocate, free 5 Primitive processes Primitive processes, semaphores, ready list Suspend, resume, wait, signal 4 Interrupts Interrupt-handling programs Invoke, mask, unmask, retry 3 Procedures Procedures, call stack, display Mark stack, call, return 2 Instruction set Evaluation stack, microprogram interpreter, scalar and array data Load, store, add, subtract, branch 1 Electronic circuits Registers, gates, buses, etc. Clear, transfer, activate, complement
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í). Operační systémy 2015/2016
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. Operační systémy 2015/2016
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 Operační systémy 2015/2016
Proces zdroje, HW, SW (OS, aplikace) prováděný program instance běžícího programu na počítači entita, která může být přiřazena a provedena procesorem aktivní jednotka charakterizovaná a prováděná sekvenčně prováděnými instrukcemi (vláknem), se svým stavem a sdružená se systémovými zdroji skládá se z několika částí, z nich základní jsou kód programu a množina zpracovávaných dat všechny informace jsou uloženy ve struktuře – PCB (vytváří se současně se vznikem procesu) Operační systémy 2015/2016
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, ... Identifier State Priority Program counter Memory pointers Context data I/O status information Accounting information . . . Operační systémy 2015/2016
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 Operační systémy 2015/2016
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 implicitní 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 existence PCB je klíčovým nástrojem k podpoře multiprocesingu při přerušení procesu (v preemptivním prostředí kdykoliv) dochází k uložení všech údajů spojených s procesem (datový kontext, běhový kontext), je provedena změna ve stavu procesu a může být prováděn další proces s fronty připravených procesů 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) Operační systémy 2015/2016
Trasování procesů Dispatcher Process A Process B Process C Main memory 100 Dispatcher Program counter 5000 Process A 8000 8000 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 B Trace of Process C 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 Operační systémy 2015/2016
Dvoustavový diagram procesů 5000 5001 5002 5003 5004 5005 100 101 102 103 104 105 8000 8001 8002 8003 12000 12001 12002 12003 12004 12005 100 101 102 103 104 105 5006 5007 5008 5009 5010 5011 12006 12007 12008 12009 12010 12011 Timeout Dispatch Timeout Enter Not running Running Exit Pause Timeout I/O request Enter Queue Exit Dispatch Processor Pause Timeout Operační systémy 2015/2016
Stavy procesů při trasování Process A Process B Process C Dispatcher 10 5 15 20 25 30 35 40 45 50 Running Ready Blocked Operační systémy 2015/2016
Vytvoření, přerušení a přeplánování procesu život procesu je ohraničen jeho vytvořením a přerušením (ukončením) v dávkovém prostředí – proces je vytvořen na požadavek jobu v interaktivním prostředí – reakce na přihlášení nového uživatele, v obou případech je vytvořen nový proces proces může být vytvořen i prostřednictvím běžící aplikace (požadavek na tisk, …) na přání procesu – process spawning parents process, child process komunikace a spolupráce spawn procesů 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 Operační systémy 2015/2016
Důvody pro vytvoření procesu Způsob přerušení - ukončení Popis Normální Vše je hotovo Překročení časového limitu Proces trvá déle, než je pro něj určeno Nedostupná paměť Proces požaduje více paměti než má OS Porušení hranic Proces požaduje přístup do zakázané oblasti paměti Chyba ochrany Proces chce použít prostředek, který není k tomu určený (soubor, …) Chyba aritmetiky Došlo k aritmetické chybě (dělení nulou, snaha o uložení většího čísla, …) Překročení času čekání Proces čeká na událost déle, než je určeno Chyba I/O Chyba při komunikaci s periferií Špatná instrukce Pokus o provedení neexistující instrukce (skok do datové oblasti, …) Privilegovaná instrukce Proces zkouší instrukci určenou pro privilegovaný režim Intervence operátora nebo OS Ukončení procesu ze strany OS nebo operátora Požadavek od rodiče Požadavek může ukončit všechny vlastní potomky Operační systémy 2015/2016
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 Process B Context h Data Program Operační systémy 2015/2016
process switching functions process switching functions 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 Operační systémy 2015/2016
OS je prováděn během procesu Process identification PCB Process state information 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 Operační systémy 2015/2016
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 1 Process 2 Process n Operační systémy 2015/2016
Struktura seznamů procesů Running PCB Ready Blocked PCB PCB PCB PCB PCB PCB PCB PCB Operační systémy 2015/2016
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řipraven probíhající čekající předán přijat dokončen Procesu je přiřazen procesor Čekání na dokončení I/O operace I/O operace je dokončena - 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é Operační systémy 2015/2016
Pětistavový model procesu New Ready Running Blocked Exit Dispatch Timeout Přijmout Očekávaná událost Událost nastala Uvolnit 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, ...) Operační systémy 2015/2016
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 Operační systémy 2015/2016
Dva stavy suspend Ready / Suspend Dispatch Release Timeout Activate Event occurs Event wait Ready Running Exit Blocked / Blocked New Admit Operační systémy 2015/2016
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 Operační systémy 2015/2016