13AMP 2. přednáška Ing. Martin Molhanec, CSc.
Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu, aby při jeho opětovném spuštění vše bylo tak, jako by ani k jeho přerušení nedošlo!
Stav procesu (kontext) Co je nutné uschovat Co je nutné uschovat –Registry procesoru –Oblasti paměti –Otevřené soubory Process Control Block (PCB) Process Control Block (PCB) –Oblast paměti, kde je uschována stavová informace (kontext)
Process Switching (přepnutí procesu) Přerušení (SW nebo HW) Přerušení (SW nebo HW) –Uložíme kontextovou informaci do PCB –Rozhodneme, který proces bude následovat –Obnovíme kontextovou informaci pro nový proces Instrukcí návrat z přerušení (IRET) spustíme nový proces Instrukcí návrat z přerušení (IRET) spustíme nový proces
Stavy procesů Je vždy pouze jeden proces, který má přidělen čas procesoru! Jsou všechny procesy, které by sice mohly běžet, ale čekají až jim bude přidělen čas procesoru.
Stavy procesů Running (běžící) Running (běžící) –Proces se právě vykonává –Vykonává se vždy jeden proces! Ready (připravený) Ready (připravený) –Proces čeká na přidělení procesoru
Stavy procesů Tyto procesy nemohou běžet, protože čekají na nějakou událost!
Stavy procesů Waiting (čekající) Waiting (čekající) –Proces čeká na nějakou událost –Při čekání nezatěžuje procesor! –Události Vnější od nějaké periferie Vnější od nějaké periferie Časová od systémových hodin Časová od systémových hodin Vnitřní od nějakého jiného procesu Vnitřní od nějakého jiného procesu
Stavy procesů Speciální stav pro procesy, které jsou dočasně odstaveny nebo čekají na své ukončení.
Stavy procesů Suspend (odložený) Suspend (odložený) –Proces je připraven pro zrušení –Uvolní systémové zdroje (paměť) –Může se opět rychle aktivovat –Nezatěžuje procesor
Scheduling (plánování) KDY dojde k přepnutí úloh ? KDY dojde k přepnutí úloh ? EVENT (událost) EVENT (událost) –Vnější (hardware, IRQ): tiskárna, převodník, časovač –Vnitřní (software): volání multitáskové knihovny, předávání zpráv –Časové (časový okamžik nebo interval): ve skutečnosti od časovače
Scheduling (plánování) KDO bude další úloha na řadě ? KDO bude další úloha na řadě ? –Existují různé strategie (například: ROUND ROBIN) Reálné strategie zohledňují zejména tzv. PRIORITU (přednost), zejména RT strategie! Reálné strategie zohledňují zejména tzv. PRIORITU (přednost), zejména RT strategie!
Kooperativní multitask Procesy si vzájemně předávají řízení Procesy si vzájemně předávají řízení –Implicitně: například čekání na stisk klávesy –Explicitně: volání služeb OS (služby IDLE, SWAP, ….) POZOR: Špatně napsaný program může celý systém zaseknout! (Například Windows 3.x a nižší, pro Windows aplikace) POZOR: Špatně napsaný program může celý systém zaseknout! (Například Windows 3.x a nižší, pro Windows aplikace)
Preemptivní multitask Procesy jsou vynuceně přepínány Procesy jsou vynuceně přepínány –Přepnutí je vynuceno pomocí časového přerušeni (IRQ) –Hovoříme o sdílení času procesoru (time slicing) VÝHODA: jeden špatný proces nepozastaví ostatní (UNIX, Linux, OS/2, Windows 9x, Windows NT) VÝHODA: jeden špatný proces nepozastaví ostatní (UNIX, Linux, OS/2, Windows 9x, Windows NT)
Dva typy událostí Asynchronní Asynchronní –Odvozený od nahodilé události Stisknutí klávesy Stisknutí klávesy Synchronní Synchronní –Pravidelná událost Timer Timer
Asynchronní událost (proces) Tato událost je vyvolána vnějším činitelem, například stiskem klávesnice Tato událost je vyvolána vnějším činitelem, například stiskem klávesnice Periferie vyvolá přerušení (IRQ), které musí být systémem obslouženo Periferie vyvolá přerušení (IRQ), které musí být systémem obslouženo Nedá se předpovídat okamžik, kdy dojde k přerušení (pouze statisticky) Nedá se předpovídat okamžik, kdy dojde k přerušení (pouze statisticky) U RT systémů je důležitým parametrem doba potřebná k obsloužení AS události U RT systémů je důležitým parametrem doba potřebná k obsloužení AS události
Synchronní událost (proces) Jedná se o událost odvozenou od časové události Jedná se o událost odvozenou od časové události –Čas, kdy má událost nastat (například v 5:OO hodin) –Doba, za kterou událost nastane (například za 5 minut) Časová událost je vyvolána tzv. časovačem (softwarový, hardwarový) Časová událost je vyvolána tzv. časovačem (softwarový, hardwarový) Je předvídatelná Je předvídatelná U RT systému je opět důležitá doba obsluhy U RT systému je opět důležitá doba obsluhy
Úloha na pozadí (background task) Úlohy na pozadí běží, když nejsou obsluhovány AS nebo SY události Úlohy na pozadí běží, když nejsou obsluhovány AS nebo SY události Střídání úloh zajišťuje kooperativní nebo preemptivní multitask Střídání úloh zajišťuje kooperativní nebo preemptivní multitask Doba odezvy u nich není důležitá (například tisk na pozadí) Doba odezvy u nich není důležitá (například tisk na pozadí) Čím více úloh na pozadí, tím pomalejší je systém jako celek Čím více úloh na pozadí, tím pomalejší je systém jako celek
Programování obsluhy přerušení (IRQ) - idea IRQ (přerušení) Úschova kontextu Nalezení dalšího procesu. Převzetí nového kontextu Návrat z přerušení
Programování obsluhy přerušení (IRQ) programová idea // definice obsluhy (jazyk podobný Pascalu) Procedure MojeObsluha; Interrupt; Begin … // zde bude vlastni obsluha End; // registrace obsluhy, zde spojím obsluhu s vlastním // přerušením – GetIntVec, SetIntVec parametr1, …); // start multitaskoveho systému, teprve nyní to začne // fungovat StartMultiTask;