150 likes | 286 Views
7. pÅ™ednáška 3. 4. 2014 - 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
E N D
7. přednáška 3. 4. 2014 - 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: http://www.uai.fme.vutbr.cz/~vdumek/
Problém konzistence - příklad Scénář Proces vytvořil vlákna T1 a T2. T1 počítá C = A + B. T2 používá hodnotu X: A = A – X; B = B + X T1 a T2 pracují souběžně, avšak jejich rychlosti nejsou známy. Úmysl programátora Nechť A = 2; B = 3; X = 10 T2 udělá A = A – X; B = B + X[A=-8,B=13,C=5] T1 spočítá C = A + B, hodnota C nezávisí na X. Možná realita T2 udělá A = A – X a pak je mu odebrán procesor. [A=-8,B=13,C=-5] T1 spočítá C = A + B = A – X + B T2 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 I/O request Request complete Thread A (Process 1) Thread B (Process 1) Time quantum expires Blocked Thread C (Process 2) Running Process created Ready
Sdílení času - zajišťuje iluzi souběžného zpracování několika procesů - timeslicing - 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
přidělení časového kvanta q - s doba odpovědi (s) časové kvantum (q) přidělení časového kvanta proces přeplánován opětovné přidělení časového kvanta konec interakce časové kvantum (q) běh jiného procesu doba odpovědi (s) 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) č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ůchodnostoperač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, …)
Přepínání (procesy, režimy) • 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ř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
procesor V/V Proč multitasking ? Model - zvýšení využití procesoru - pravděpodobnost čekání na V/V - pravděpodobnost pro n procesů - využití procesoru pn m = 1 - pn
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
operační systém proces P0 proces P1 běží uložení kontextu P0 idle . . . privilegované instrukce předání kontextu P1 idle běží uložení kontextu P1 . . . privilegované instrukce idle předání kontextu P0 běží Přepínání kontextu procesů
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
Plánování běhu procesů - rozdělení 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
Processor RQ0 Dispatch Release RQ1 RQ2 Admit . . . RQn Preemption Blocked queue Event wait Event occurs Prioritní fronty
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é
Short-term scheduling Time-out Batch jobs Processor Ready queue Release Interactive users Ready, suspend queue Medium-term scheduling Long-term scheduling Blocked, suspend queue Blocked queue Event wait Event occurs Plánování běhu procesů