7. přednáška konzistence dat (příklad) -multithreading (monoprocesor) -sdílení času -analýza časového kvanta -priorita -přepínání (procesů, režimů) -multitasking (proč, vývoj, vlastnosti) -přepínání kontextu -prioritní fronty -plánování běhu procesů (pojmy, rozdělení, kriteria, typy) Studijní materiály najdete na adrese:
Problém konzistence - příklad Scénář Proces vytvořil vlákna T 1 a T 2. T 1 počítá C = A + B. T 2 používá hodnotu X: A = A – X; B = B + X T 1 a T 2 pracují souběžně, avšak jejich rychlosti nejsou známy. Úmysl programátora Nechť A = 2; B = 3; X = 10 T 2 udělá A = A – X; B = B + X[A=-8,B=13,C=5] T 1 spočítá C = A + B, hodnota C nezávisí na X. Možná realita T 2 udělá A = A – X a pak je mu odebrán procesor.[A=-8,B=13,C=-5] T 1 spočítá C = A + B = A – X + B T 2 udělá B = B + X a to už hodnotu C neovlivní. V proměnné C jsou dva různé výsledky. Poznámka Kdyby nedošlo k preempci vlákna T2, žádný problém by nenastal!
Multithreading Example on a Uniprocessor time Time quantum expires Process created Blocked Running Ready Thread A (Process 1) Thread B (Process 1) Thread C (Process 2) I/O request Request complete Time quantum expires
- zajišťuje iluzi souběžného zpracování několika procesů - time slicing - při preempci operační systém nepovolí žádnému procesu běžet neomezenou dobu, pouze určitý časový interval, jestliže proces běží dlouho, odebere mu OS v rámci přerušení časovače procesor a přidělí jej jinému procesu, délky intervalů běhu procesu jsou jednotky až desítky ms - v průměrném případě se časové sdílení neuplatní, proces většinou stihne udělat vše co potřebuje a vyvolá nějakou službu, její součástí bývá čekání na nějakou událost, takže se procesor stejně přidělí někomu jinému Sdílení času
Analýza časového kvanta - musí být podstatně větší, než režijní interval operačního systému spojený se změnou procesu (přerušení časovačem a provedení dispečerských operací) - musí být větší než typická doba interakce procesu s okolím (ne o moc, aby se nepenalizovaly I/O vázané procesy) přidělení časového kvanta doba odpovědi (s) časové kvantum (q) q - s konec interakce přidělení časového kvanta proces přeplánován časové kvantum (q) doba odpovědi (s) opětovné přidělení časového kvanta běh jiného procesu časové kvantum větší než typická doba interakce časové kvantum menší než typická doba interakce
Priorita - statická priorita - je přidělena při vytvoření, nemění se - statický časový interval - při přeplánování je čítač nastaven na konstantní hodnotu, stejnou pro všechny procesy - dynamická priorita, dynamický časový interval - mění se na základě vlastností a chování procesů, vyšší průchodnost operačního systému - správce procesů sleduje dobu, po kterou měl proces procesor (součet momentů Running), pokud je delší než určitá doba, sníží se priorita, náročné procesy běží dlouho, krátké procesy hotovy dříve - možnost zrušení procesu při zacyklení - při přepínání kontextu se zjišťuje, vyčerpal-li proces celý svůj interval, přidělí se tím větší priorita, čím menší doba byla čerpána z povoleného intervalu (časté čekání na periferie, …)
- u současných OS může k výměně procesů dojít kdykoliv - je spojena s přerušením (interrupt) nebo s výjimkou (trap) - clock interrupt souvisí s časovým sdílením - I/O interrupt souvisí s požadavkem na externí zařízení - výpadek stránky souvisí s MMU - výjimka způsobí ukončení procesu, závisí to i od OS, někdy se může objevit pokus o obnovu stavu - k přepínání dochází mezi procesy nebo mezi módy, funkce OS může být aktivována tzv. supervisor call Přepínání (procesy, režimy) UdálostPříčinaVyužití InterruptProvedení běžné instrukce na vnější popud Reakce na asynchronní externí událost TrapReakce na událost během provádění instrukce Zpracování chyby nebo výjimečného stavu Supervisor callExplicitní požadavekVolání funkce operačního systému - přepnutí kontextu: context switch, požadavek na přerušení, uloží se kontext aktivního procesu, zavede se kontext nového procesu do registrů procesoru, ukončí se přerušovací služba, běží nový proces, odebrání procesu, přidělení procesu - procesor se vrací z přerušení na jiné místo - přepnutí režimu: přerušení nemusí vyvolat přepnutí kontextu, provedou se privilegované instrukce a řízení se vrátí přerušenému procesu, stačí uchovávat stav procesoru, nižší režie
Proč multitasking ? procesorV/V Model - zvýšení využití procesoru - pravděpodobnost čekání na V/V - pravděpodobnost pro n procesů - využití procesoru p n pnpn
preemptivní multitasking - libovolné přerušení procesu bez jeho spolupráce, zvětší se kontext (kompletní stav procesoru, pomocných procesorů, …), prostředky se povolí pouze jednomu procesu (I/O kanály, tisk, porty…) - nebezpečí zablokování, řeší se prostřednictvím serverů - speciální procesy pro práci s prostředky, mají své klienty, přepnutí lze vyvolat kdykoliv, v rámci kteréhokoliv přerušení, vývoj: vzájemné volání, omezené přepínání, neomezené přepínání, kooperativní multitasking, preemptivní multitasking Výhody preemptivního multitaskingu: * přechod k jinému programu bez nutnosti přerušovat práci * snadná implementace činností, které musí probíhat paralelně (správa počítačové sítě, …), zajištění běhu dalších procesů * lepší kooperace programů (není potřeba soubory) * nutná podmínka pro víceuživatelské prostředí * lepší využití kapacity výpočetního systému (procesor ne- zahálí při čekání) Nevýhody preemptivního multitaskingu: * degradace programu při spuštění více úloh, dnes irelevantní * větší režie OS spojená s plánováním * větší, složitější, dražší, náročnější na HW * větší nároky na bezpečnost
Přepínání kontextu procesů proces P 0 proces P 1 operační systém uložení kontextu P 0 předání kontextu P uložení kontextu P 1 předání kontextu P idle běží privilegované instrukce
Plánování běhu procesů - pojmy - režim výběru – nonpreemptive (bez předbíhání), vybraný proces běží, dokud se sám neukončí, nevhodné pro víceuživatelské systémy, preemptive (s předbíháním), běžící proces lze přerušit, ochrana před monopolizací procesoru - procesy vázané na I/O – proces opakovaně alternuje mezi potřebou procesoru a periferie, dávka procesorové orientace (jednotky ms) je následována I/O operacemi (řádově delší doba) - procesorově orientovaný proces – dokázal by využívat procesor po neomezenou dobu (dlouhé procesy) - priorita procesu – narušení disciplíny FIFO (spravedlivá obsluha), prioritní úrovně (pro každou z nich je samostatná FIFO), procesy nízké priority mohou stárnout, procesy mohou měnit prioritu dynamicky
dlouhodobé – strategické plánování, povolení vytvoření procesu, stupeň multitaskingu střednědobé – taktické plánování, řízení odkládání, rozhodující roli sehrává dostupná paměť, provádí správa paměti, řízení stupně multiprogramování krátkodobé – operativní plánování, plánování procesoru, aktivace přerušením časovače, I/O přerušením, službou OS, signály (semafor), uživatelsky orientované (odpověď, průchod), systémově orientované (využití, spravedlnost, propustnost) - monoprocesor, multiprocesor, RT - minimalizace doby odpovědi, co nejvyšší propustnost, co nejvyšší využití procesoru Plánování běhu procesů - rozdělení
Prioritní fronty Processor RQ 0 Blocked queue Release Event wait Event occurs RQ 1 RQ 2 RQ n... Preemption Dispatch Admit
Kriteria plánování Uživatelsky orientované (výkonnost) - doba obrátky (od předložení procesu do jeho zpracování, zahrnuje čas zpracování + čekání na zdroje), je možné měřit pro každý job - čas odezvy (pro interaktivní procesy), je lépe měřitelný než doba obrátky Systémově orientované (výkonnost) - propustnost, snaha o maximální množství procesů zpracovaných za jednotku času, závisí na délce procesů, je ovlivněno plánovací politikou, utilizací procesoru,... - využití procesoru, čas, kdy je procesor zaměstnán, jde o významné kritérium, u jednouživatelských OS a RT je méně důležité
Plánování běhu procesů