1. Definice os, typy os, služby a vrstvy, systémová volání, virtuální počítač Definice: -softwarova nadstavba HW -společně s hw představuje virtualni počitač -je rozhranim mezi živitelem a systemem (laik, efektivni využiti, programatorům – vyvoj a laděni) -prostředi pro provaděni programů (efektivně předava a odebira řizeni programům,chrani a izoluje programy a data) -zobecněne rozhrani pro přistup k systemovym prostředkům (poskytuje služby virtualniho počitače, řeši rozdily jednotliveho hardware, programatorům zpřistupňuje paměť,soubory a VV zažizeni) Typy OS: Mainframe os (mnoho IO),serverove (unix,windows 2000),viceprocesorove(clustery,paralelni),osobni počitače,real-time os (VxWorks),vestavěnePalmOS(Pda, TV),smartcard OS Vrstvy: Koncovy uživatel (aplikace, nastroje), programator,systemove rozhrani(virtualni počitač),operačni system,navrhař os, hardware Služby: tvorba programů (editory, kompilatory), provaděni programů (zavedeni, spuštěni,inicializace periferii,planovani pořadi),přistup k IO a souborům (provaděni IO operaci, konverze formatů dat),přistup k systemu (sprava a přidělovani prostředků,ochrana přistupu k privatnim prostředkům a datům),detekce chyb (hw,sw,neschopnost os splnit-nelze najit soubor),reakce na chyby(ohlašeni,opakovani operace,nasilne ukončeni programu),sledovani činnosti systemu(statistiky o použiti prostředků,monitorovani vykonnosti) Systémová volání: Volani jadra OS, většinou přes knihovnu (parametry na stack,volani fce v knihovně,nastaveni registru na typ volani,TRAP-skok do jadra OS, jadro:dispatch,volani ovladače, navrat) Typy-procesy(vznik,nahrazeni,čekani na ukončeni, ukončeni),soubory(otevřeni,zavřeni,čteni,zapis,stat),adresaře a souborove systemy(vytvořeni,zrušeni,odkazy),ostatni(změna prav,signal,zjištěni času) Win32 API-vrstva mezi funkcemi a aplikacemi, založeno na udalostech,extremně velike
2.Moderní koncepce OS, architektura jádra: monolitický systém, vrstvený systém, virtuální stroj, mikrojádro. Koncepce OS: ●procesy ●správa paměti ●správa vstupů a výstupů ●správa úložišť ●systémová volání
Dělení OS dle struktury : ●monolitické OS (The Big Mess) –vše v jednom – vnitřně nečleněné jádro ●z hlediska hierarchie volání procedur ●každá procedura může volat libovolnou jinou –mohou mít i strukturu: ●hlavní program (obsahuje dispatcher) ●obslužné procedury ●užitkové procedury –procedury mají pevně definované rozhraní
vícevrstvé OS –vrstva smí volat jen procedury stejné nebo nejbližší nižší vrstvy –MULTICS –Dijkstra: THE (Technishe Hogeschool Eindhoven): ●5 – operátor ●4 – uživatelské programy ●3 – správa V/V zařízení, buffering ●2 – komunikace mezi procesy a konzolí operátora ●1 – správa paměti ●0 – alokace CPU a multiprogramming
virtuální stroje –srdcem je VM monitor – multiprogramming –IBM VM/370 + OS/360 nebo CMS –nepravé virtuální stroje (VM86) –JVM (Java VM)
model klient-server, mikrojádro (microkernel) –trend moderních OS ●mikrojádro – správa komunikace mezi procesy ●klientské procesy – správa paměti, FS, … –náročné na implementaci –GNU/Hurd (Hird of Unix-Replacing Daemons, Hird = Hurd of Interfaces Representing Depth) –QNX [kjuniks] ●unixový real-time OS (pro vestavěná zařízení)
3.Návrh OS a jeho bezpečnost: důvody náročnosti implementace OS, principy jeho vývoje, zabezpečení, typy útoků a prevence, ochrana systému, dat, uživatelů, procesů. PŘEDNÁŠKA Č.10
4. Provádění instrukce, porušitelnost programu a instrukce, události, signály, přerušovací systém -provaděni instrukce:CPU ověřuje požadavky na přerušeni vždy před načtenim nove instrukce .pokud přerušeni neni povoleno nebo požadovano CPU načte nasledujici instrukci, pokud je požadovano/povoleno-uloži se obsah PC a PSW např. do zasobniku a do PC a PSW se nahraje přerušovaci vektor, tim se změni adresa přišti instrukce a nastaveni přerušovaciho systemu -přerušitelnost- IO program předa IO modulu povel a povoli přerušeni, program může pokračovat dal dokud neni třeba provest dalši IO operaci, v OS takovy program pozastaven dokud IO operace neni dokončena a procesor je zaměstnan jinou praci -start os, prvni proces (init), čeka se na udalost (event) je signalizovana přerušenim -pokud neběži žadne uživatelske procesy, nejsou žadne IO operace,neni žadny uživatel kteremu by bylo nutno odpovidat je OS nečinny, když nastane udalost->generuje se přerušeni(signalizuji různe udalosti), generovany HW nebo SW. Prioritni přerušovaci system-požadavek s vyšši prioritou může přerušit provaděni obslužne rutiny přerušeni s nižši prioritou, obsluha přerušeni s nižši prioritou se dokonči až po obslouženi všech požadavků s vyšši prioritou (přerušeni z LAN ma přednost před přerušenim z tiskarny, protože vyrovnavaci paměť je nutne rychle uvolnit pro dalši data). Časovač: časovač = timer = Časovač je čitač, ktery je zvyšovan (resp. snižovan) o jedničku vnitřnim hodinovym signalem mikropočitače. Jeho učelem je tedy odměřovat čas. -generuje přerušeni v pravidelnych intervalech, sdileni času, navrat procesů z delta listuobslužna rutina hlida, kolik času procesu zbyva do naplněni přiděleneho kvanta, zajisti přeplanovani, opakovane volani zajišťuje plnohodnotny multitasking - z delta listu jsou procesy s nulovou deltou zařazovany do ready fronty - obslužna rutina přerušeni časovače, efektivni, assembler, pokud v jejim průběhu dojde k přeplanovani, bude trvat nezanedbatelnou dobu Sdílení času: multitasking neboli současny běh vice uloh je mechanismus. Může byt realizovan různymi způsoby (přepinanim kontextů, přidělovanim časovych kvant, jako kooperativni multitasking) a může sloužit různym učelům - tomu, aby vice uživatelů sdilelo jeden počitač (pak jde o tzv. sdileni času), nebo tomu, aby si jeden uživatel mohl na svem počitači provozovat vice uloh současně, připadně oběma učelům současně. Víceúlohový (multitasking, multiprogramming, timesharing) o OS umožňuje spravu vice procesů na jednoprocesorovem systemu o běh vice uloh (procesů) ve sdileni času o ochrana paměti, planovani procesů Víceuživatelský (multi-user) o možnost současne prace vice uživatelů o identifikace a vzajemna ochrana uživatelů o OS uživateli vytvaři virtualni prostředi tvařici se, jako by měl počitač sam pro sebe: nikdo nebude bez jeho povoleni čist jeho soubory, nikdo nebude zasahovat do běhu jeho programů, bude moci použivat periferni jednotky počitače (tiskarny, vstupni jednotky,..) atd.
5. Vstupně-výstupní zařízení: techniky programování vstupu a výstupu, DMA. Paměť cache, střední přístupová doba. -hw pro ovladani periferii, disky, klavesnice, display,tiskarna, komunikařni zařizeni (lan modem) IO logika -zajišťuje interakci modulu s CPU přes řidici čast sběrnice, je zde implementovan protokol systemove sběrnice (PCI,AGP) IO operace IO program připravi IO modul pro požadovanou akci tim, že odešle potřebne přikazy a data, pote io program čeka na dokončeni,testovanim stavu IO modulu CPU provadi neproduktivni činnost,po dokončeni operace předava IO program řizeni zpět programu uživatele Techniky IO komunikace -programovany io přenos-nepouživa se,bez přerušeni, cpu čeka Io přenos s přerušenim-činnost CPU přerušena po dokončeni IO operace,pro přenos se spotřebuje čast času CPU -IO přenos s přimym přistupem do paměti (DMA)-data se přenašeji po blocich přio mezi IO modulem a paměti (bez učasti CPU), program pouze iniciuje DMA (odkud, kam, kolik),CPU předa požadavek DMA modulu-> DMA provede přenos, CPU volne,o dokončeni je CPU informovan přerušenim, omezuje přistup k operačni paměti Sběrnice-komunikace časti počitače mezi sebou, CPU, AGP, PCI,IDE,USB; spravuje je os *plug n play, bios DMA (Direct Memory Access) je způsob, kterým počítače umožňují hardwarovému subsystému přímý přístup do operační paměti tzn. bez účasti procesoru. Pomocí DMA mohou počítače přenášet data mezi zařízeními a operační pamětí s podstatně menšími nároky na procesor. DMA používá mnoho komponent například řadiče disků, grafické karty, síťové karty nebo zvukové karty. Cache ●rychlá paměť – obvykle drahá –cache – rychlá mezipaměť (např. OP a CPU) ●využívá principu lokality odkazů v paměti –tendence odkazovat se do omezené oblasti paměti ●např. cyklus v programu –činitel úspěšnosti (Hit Ratio) se pak bude blížit 1 i při malé kapacitě paměti cache ●střední přístupová doba: TS = TC + (1−HR)T ⋅OP (TC << TOP) –HR blízko 1 – přístup je blízký přístupu do cache
6.Požadavky OS na hw pro jeho implementaci, procesor,správa, adresování paměti CPU- Central Processing Unit–zpracovává instrukce ●RISC – Reduced Instruction Set Computer ●CISC – Complete Instruction Set Computer –zpracování instrukcí má obvykle tyto fáze ●fetch – načtení instrukce ●decode – dekódování ●execute – provedení –ALU – aritmeticko-logické jednotky –FPU – numerický koprocesor (Floating Point Unit)
–registry: ●program counter, instruction register, stack pointer ●PSW (program status word) – příznaky CNZV –C = carry, N = negative, Z = zero, V = overflow ●ostatní registry (obecné, datové, adresní, privátní, …)
–zvyšování výkonu ●superskalární CPU (instrukční paralelismus) ●spekulativní provádění instrukcí ●více pipeline ●více jader -dva režimy user/kernel (instrukce TRAP – systemova volani,skok z režimu user do režimu kernel) *registry os-program counter(adresa dalši instrukce),stack pointer,program status word(stav procesoru-pracovni režim,atd.) *registry user-datove (přechodne uloženi dat),adresni(paměťove adresy dat a instrukci) Paměť-uloženi dat,registy-cache-ram-diskova cache-pevne disky-vyměnna media *virtualni/fyzicka adresa,memory management unit,kontext switch IO-zařizeni-řadič, OS praci s nim zjednodušuje,ovladače začleněny do jadra,spuštěny při startu/za běhu,přerušeni (dokud požadavek nevyřizen je zaměstnan procesor jinou praci),registry zařizeni, IO porty, direct memory acces
7.Implementace procesu v OS: proces a program, tabulka procesů, přepínání kontextu, stav procesu, třístavový a sedmistavový model. Proces-konkretni provedeni určiteho programu, program lze provadět opakovaně s různymi daty, v danem okamžiku lze jeden program provadět vicekrat Sprava procesů: typicka funkce jadra OS (Process management), vytvařeni a ukončovani,planovani a spouštěni,přepinani procesů,synchronizace procesů,podpora komunikace procesů,udržovani řidicich bloků procesů
Vznik a zánik procesu vznik procesu –při inicializaci systému –systémové volání –požadavek uživatele, start dávky
ukončení procesu –normální (dobrovolné) –při chybě (dobrovolné) –fatální chyba (nedobrovolné) –zabití (jiným procesem, jádrem) Tabulky Os udržuje tabulky-ovladani paměti, ovladani IO, ovladani souborů, ovladani procesů Tabulka ovladani procesů-Process image tvoři tyto komponenty:program,data,zasobnik,atributy procesu(jedinečny numericky identifikator,stav procesu(kontext),řidici informace procesu) Postup při vytvořeni procesu-přiděleni identifikatoru, alokovani mista v paměti,inicializace řidiciho bloku PCB,nastaveni odkazů,uloženi zaznamu o aktivaci procesu Přepinani-při přerušeni-proces vyčerpal kvotu, IO operace byla dokončena Pro OS-konkretni provedeni určiteho programu -prokladat časově provaděni mnoha procesů s cilem maximalizovat využiti CPU,přiděleni požadovanych systemovych prostředků,podpora komunikace procesů a vytvařeni novych procesů uživatelem Stavy procesů ●3-stavový model: –běžící (running) – používá CPU –připravený (ready) – pozastaven jádrem OS –blokovaný (blocked) – čekající na vnější událost ●7-stavový model: –běžící (running) – používá CPU –připravený (ready) – pozastaven jádrem OS –blokovaný (blocked) – čekající na vnější událost –nový (new)-nelze zatím spustit (nemá ještě všechny prostředky) –ukončený (exit)-již se nemůže spustit, ale je třeba ještě držet v paměti jeho informace –odložený blokovaný (blocked,suspended)-blokovaný proces zabírá paměť, více takových procesů pak ubírá paměť běžícím, proto se proces z paměti odloží na disk (swap) –odložený připravený (ready, suspended)-nastala již událost, na niž blokovaný proces čekal, ale proces je stále ještě na disku
8.Procesy v OS UNIX/Linux: vznik a zánik procesu, funkce fork(), exec(), exit(); hierarchie procesů, stavy procesů v Linuxu, příkaz ps, adresář /proc; signály a jejich zpracování. Vznik nového procesu. vznik noveho procesu (cat) je na žadost volani jadra. Volani jadra, ktera znamenaji vznik noveho procesu jsou fork a exec. Běžici proces vytvoři kopii sebe sama, procesy vykonavaji stejny kod. Rozlišeni rodič a potomek na urovni identifikatoru procesu. Segment kodu je explicitně spojen s novym procesem.
Procesy vykonavaji různy kod. Bez ohledu na vznik procesu je důležite, zda Rodičovsky proces pozastavuje svou činnost po dobu běhu potomka. Rodič a potomek sdili paměť. Funkce fork vytvoři klon jako novy proces. Jako kdyby se na jednom mistě procesor rozhodl vydat se dvěma cestami v programu. Jeden proces pokračuje na jednu stranu, druhy proces pokračuje na druhou stranu. Oba maji v bodě rozděleni stejne vychozi podminky. Avšak oba procesy ziskaji kompletně svůj stav pro sebe. Operačni system zajisti, že při změně paměti obdrži každy proces svou kopii. ukončení – _exit #include
void _exit(int status); Hierarchická struktura procesů Vznik noveho procesu je iniciovan jinym procesem. Vznika tedy hierarchicka struktura procesů z pohledu rodičů a děti, protože každy rodič může mit teoreticky neomezeny počet děti. Každy proces přitom musi mit nějakeho rodiče vyjma prvniho, ktery je kořenem teto stromove struktury běžicich procesů. Prvni proces vznika při startu operačniho systemu z iniciativy jadra a ma čiselnou identifikaci 0. Proces je vždy pojmenovan podle jmena souboru s řidicim programem. Prvni proces ma obvykle jmeno sched (nebo swapper) a jeho funkce je prace pro odkládací oblast (swap area) ostatnich procesů. Jeho prvni aktivita je ovšem žadost o vznik noveho procesu, ten ma PID=1, jeho jmeno je init a je to proces označovany jako prapředek všech dalšich procesů. init je proces, ktery podle tabulky /etc/inittab startuje nove procesy zajišťujici chod operačniho systemu (jde o procesy zajištěni frontovani požadavků na tiskarnu, obsluhy požadavků sitě, oživeni terminalů uživatelů nebo grafickych adapterů atd.). init je proces, ktery řidi praci dvou zakladnich režimů operačniho systemu: režimu víceuživatelského (multi user) nebo jednouživatelského (single user). Režim je zajištěn během odpovidajicich procesů, tj. skupinou procesů. Režim viceuživatelsky znamena běh procesů, ktere umožňuji uživatelům přihlašovat se a pracovat se svymi daty. Jednouživatelsky je režim, ktery podporuje praci pouze jednoho uživatele (privilegovaneho uživatele) na periferii systemove konzoly a všechny dalši aktivity systemu pro praci periferii jsou utlumeny (je určen pro udržbu systemu). Jiny režim ale neznamena žadne omezeni prace jadra pro procesy, všechny funkce jadra jsou tytež. Příkazy pro procesy (UNIX) ●seznam procesů: ps(1), pstree(1) –všechny procesy: ps -ef ●sledování zátěže: top(1), prstat(1) ●sledování délky fronty procesů: xload(1) –nebo uptime(1), také cat /proc/loadavg ●sledování využití procesoru: mpstat(1) –např. 10 měření po 1 sekundě: mpstat 1 10 Stavy procesů (Linux) ●stavy procesů – jak je vypisuje ps(1): –R– připravený nebo běžící (runnable/running) –S– blokovaný (sleep) –Z– ukončený (defunct, zombie) –T– pozastavený nebo krokovaný (stopped, traced)
–D– nepřerušitelný spánek (uninterruptible sleep) –X– mrtvý (dead) – nemělo by se nikdy vyskytovat –W– paging – jen před jádrem 2.6 /proc/sys –sysctl (system control) soubory, změnou těchto souborů je možne měnit nastaveni jadra za běhu a ovlivňovat jeho chovani ● Signály -signaly umožňuji oznamit procesům vyskyt udalosti v systemu - jde o kratke zpravy, kde se procesům oznami čislo signalu - standardni rozhrani specifikuje POSIX. Čisla některych signalů zavisi na HW, označuji se symbolickymi konstantami SIG -signaly slouži dvěma hlavnim učelům: - uvědomit proces, že nastala určita udalost - přinutit proces vykonat funkci na zpracovani signalu (signal handler) − seznam všech signalu v POSIX vypišeme v konzoly přikazem kill -n ● implicitní zpracování signálu -na přichod signalu může proces nechat k vyřizeni jadru, což ve většině připadů znamena ukončeni prace procesu (odtud zapis kill). Dale může signal ignorovat, anebo ho zachytit a reagovat na něj určitou akci. Signal č. 9 (SIGKILL) nelze zachytit ani ignorovat. V připadě ukončeni procesu jadrem u signalů v tabulce označenych znakem '*' jadro proces ukonči a v pracovnim adresaři procesu vytvaři obraz paměti procesu v době přichodu signalu a uklada jej do souboru se jmenem "core". Po přichodu signalu je funkci předano řizeni a pokud ona sama neukonči činnost prace procesu, po navratu z ni proces pokračuje od mista přichodu signalu ● zpracování signálu programem -systemova volani umožňuji programatorovi zasilat signaly a určit jak budou použity číslo označení implicitně význam 1 SIGHUP ukončeni odpojeni terminalu, 2 SIGINT ukončeni přerušeni z klavesnice, 3 SIGQUIT * konec s uloženim obrazu paměti, 4 SIGILL * neznama instrukce, 5 SIGTRAP * ladici přerušeni, 6 SIGABRT * ukončeni z důvodu v/v, 7 SIGEMT * instrukce EMT, 8 SIGFPE * kolize realneho čisla, 9 SIGKILL ukončeni okamžite ukončeni procesu, 10 SIGBUS * kolize sběrnice, 11 SIGSEGV * selhani segmentace, 12 SIGSYS * chybny tvar volani jadra, 13 SIGPIPE ukončeni zapisovanou rouru nikdo nečte, 14 SIGALRM ukončeni konec časoveho intervalu, 15 SIGTERM ukončeni ukončeni, 16 SIGUSR1 ukončeni prvni signal definovany uživatelem, 17 SIGUSR2 ukončeni druhy signal definovany uživatelem, 18 SIGCHLD ignorovani změna stavu synovskeho procesu,
19 SIGPWR ignorovani kolize zdroje, 20 SIGWINCH ignorovani změna velikosti okna, 21 SIGPOLL ukončeni přiznak při praci s PROUDY, 22 SIGSTOP pozastaveni signal pozastaveni procesu, 23 SIGTSTP pozastaveni pozastaveni procesu uživatelem, 24 SIGCONT ignorovani pokračovani v činnosti, 25 SIGTTIN pozastaveni čekani na vstup, 26 SIGTTOU pozastaveni čekani na vystup, 27 SIGXCPU * konec časoveho kvanta procesoru, 28 SIGXFSZ * překročeni stanovene delky souboru. Tabulka signálů
9.Vlákna: možné implementace vláken, obecné problémy při implementaci; posixová vlákna: mutex, podmínková proměnná a jejich použití. vlákno – „odlehčený proces“ –má následující položky samostatně: ●program counter, registry, stack, stav –ostatní je sdíleno s ostatními vlákny procesu ●multithreading – možnost běhu více vláken ●problém globálních proměnných implementace vláken bez podpory OS –pomocí knihovních funkcí problémy: ●blokovaná volání převést na neblokovaná ●page-fault – stránka není v operační paměti –obvykle pracné (potřeba plánovače vláken) ●implementace v jádře OS –vzdálená volání – více režie –není potřeba neblokovaných volání ●hybridní implementace (např. Solaris) • Pthreads je POSIX-ovy standard definujici API pro vytvařeni a synchronizaci vlaken a specifikace chovani těchto vlaken • Pthreads jsou zakladem pro vlakna v tradičnich UNIX-ech • Knihovna Pthreads pracuje s uživatelskymi vlakny, takže nepotřebuje podporu v JOS • Příklad: Samostatné vlakno, ktere počita součet prvnich n celych čisel Synchronizace vláken: pravidla, pomoci kterych častečně kontrolujeme běh vlaken, se souhrnně nazyvaji synchronizace vlaken. Obecně existuje několik mechanismů synchronizace vlaken (jedna se napřiklad o mutexy, semafory, monitory, mechanismus randez-vous a o některe dalši
mechanismy) Mutexu Nejprve si položme otazku, co je to kriticka sekce. Za kritickou sekci považujeme tu čast kodu vlakna, ktera operuje nad sdilenymi daty a hrozi, že paralelně může jine vlakno operovat nad stejnymi daty. Důsledkem může byt nekonzistence dat. Napřiklad jedno vlakno zvyši sdilenou proměnnou A o jedna a dale s ni počita, kdežto druhe vlakno proměnou A zmenši o dvě a dale s ni počita. Pokud se poštěsti, tak se instrukce mohou proložit tak, že ani jedno vlakno neda spravny vysledek. Tomuto je třeba zabranit a to tim, že do te časti, ktera pracuje s proměnnou A může vstoupit pouze jedno vlakno, druhe musi čekat až to prvni skonči. Takoveto kriticke sekce, kde může byt v jednom okamžiku pouze jedno vlakno, nazyvame MUTEX (MUTual EXclusion). Mutex ma dva stavy - zamčeny (locked - některe vlakno je uvnitř) a odemčeny (unlocked - v mutexu nikdo neni). Podmínková proměnná: Čekani na mutex v operaci mutex_lock() může byt implementovano jako programova smyčka (tzv. busy-wait čekani), pročež nejsou mutexy (na rozdil od semaforů) dobre pro čistě synchronizačni učely (kdy jedno vlakno čeka neodhadnutelnou dobu na dosaženi nějakeho bodu v programu jineho vlakna). V takovem připadě je lepši vyrobit semafor jako objekt kombinaci zamek plus podminkova proměnna (viz dale). Objekt podminkova proměnna implementuje "kontejner pro čekani vlaken" (tj. prostor-čekarnu, implementačně nějaky seznam vlaken) na splněni přislušne podminky. Čekani je "pasivni", tj. všechna vlakna nachazejici se "v čekarně" jsou ve stavu waiting.
10.Plánovač. Cíle plánování, režimy plánování, plánovací kriteria pro plánovací algoritmy, plánovací algoritmy. scheduler – plánovač –vybírá připravený proces pro běh – přiděluje CPU –odebírá CPU běžícím procesům – preempce –aktivuje se také při systémových voláních –řídí se plánovacím algoritmem Rozhoduje ktery proces ma CPU Cíle plánování podle prostředí:spravedlnost,dodržovani politik,využiti všech časti systemu Cíle plánování: ●dávkové systémy –maximalizovat propustnost (throughput) ●počet vykonaných úloh za jednotku času (h) –minimalizovat obrat (turnaround time) ●průměrný čas na vykonání úlohy –využití CPU – využívat maximálně CPU ●systémy real-time –respektovat lhůty – zabránění ztráty dat
–předvídatelnost – zabránění degradace kvality ●např. multimediální systémy
Režimy plánování nepreemptivní –proces se musí sám vzdát CPU (nebo blokovat) preemptivní –plánovač rozhoduje, kdy který proces má CPU –(efektivně) plánovat lze pouze v případě, že je k dispozici přerušení (časovače) –časovač „tiká“ typicky na frekvenci 100 Hz ●přerušení nastává tedy každých 10 ms Typy plánování: o dlouhodobe (Long-Term Scheduling) - určuje, ktere programy budou zpracovany systemem o střednědobe (Medium-Term Scheduling) - součast odkladaci funkce o kratkodobe (Short-Term Scheduling) - při přerušeni od časovače nebo V/V zařizeni, systemove volani, signaly,... o V/V (I/O Scheduling) - určuje, ktery V/V požadavek bude obsloužen volnym V/V zařizenim
Kriteria kratkodobeho planovani: o uživatelske hledisko o doba zpracovani = doba, ktera uplyne od spuštěni do uplynuti procesu o doba odpovědi = doba, ktera uplyne od okamžiku zadani požadavku do doby prvni reakce o dosaženi meze = zaručeni ukončeni procesu do dane meze o předvidatelnost = proces by měl pokažde běžet "stejně" dlouho bez ohledu na zatiženi systemu systemove hledisko
Plánovací algoritmy: First come first served-nove ulohy do fronty,po ukončeni aktualniho přidělen nejdele čekajici,kratke procesy čekaji dlouho, zvyhodňuje vypočtove procesy (procesy s IO čekaji při každem dokončeni) Shortest job first-nepreemptivni, spusti se proces s nejkratši očekavanou dobou provedeni, zavisle na dobrem odhadu delky běhu Shortest remaining time next-shortest remaining time next, vyžaduje odhad doby provaděni, preemptivni varianta SJF Round-robin-preempce založena na časovači,procesu je přiřazeno časove kvantum cpu,přepnuti při vypršeni kvanta nebo při volani blokovaci systemove fce, je třeba optimalizovat delku kvanta Prioritni planovani-přednost proces s vyšši prioritou,nizka priorita může mit za nasledek vyhladověni (starvation), nutno prioritu přizpůsobovat v zavislosti na době čekani nebo historii běhu procesu Planovani se zarukou-např. časove kvantum dle 1/počet uživatelů Lottery scheduling-periodicky se losuje o čas CPU, kooperativni procesy si mohou čas předavat Fairshare-bere v potaz i uživatele Real-time systemy: hard RT-deadline musi byt splněna; soft RT-občasny vypadek Udalosti-periodicke, aperiodicke (nedaji se předpovědět) -system je planovatelny pokud suma časů potřebnych na obslouženi udalosti dělena jeho periodou pro všechny udalosti je <1