Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

10. přednáška 4. května 2015 Operační systémy LS 2014/2015.

Podobné prezentace


Prezentace na téma: "10. přednáška 4. května 2015 Operační systémy LS 2014/2015."— Transkript prezentace:

1 10. přednáška 4. května 2015 Operační systémy LS 2014/2015

2 Klasické synchronizační úlohy
Producent – konzument (P-K) (Bounded – Buffer Problem) Jedná se o komunikaci mezi dvěma procesy. Čtenáři a písaři (Readers and Writers Problem) Jedná se o souběžnost čtení a modifikace dat (v databázi, ...). Jsou možné dva přístupy: priorita čtenářů – žádný čtenář nebude muset čekat, pokud sdílený prostředek nebude obsazen písařem (kterýkoliv čtenář čeká pouze na opuštění KS písařem – písaři mohou stárnout), priorita písařů – jakmile je některý písař připraven vstoupit do KS, čeká jen na její uvolnění čtenářem nebo písařem. Připravený písař tedy předbíhá všechny připravené čtenáře – čtenáři mohou stárnout. Úloha o večeřících filozofech (Dining Philosophers Problem) Jedná se o zajímavý ilustrační problém pro řešení uváznutí. 5 filozofů buď přemýšlí nebo jí, jedí rozvařené (tedy klouzavé) špagety a potřebují tedy 2 hůlky. Co se stane, když všech 5 filozofů najednou uchopí např. své pravé hůlky? (Časem všichni umřou hlady) Operační systémy LS 2014/2015

3 Producent - konzument - jeden proces vyčká na událost generovanou druhým procesem - proces může být pouze v jedné frontě, z fronty binárního semaforu odchází přes službu resume do ready fronty - některé implementace nevhodné pro binární semafory (výměna dat přes sdílenou paměť) - modelový případ producent – konzument (obecné paradigma kooperace procesů) - buffer s produkovanými a dosud nezpracovanými položkami (buffer konečné kapacity k) PRODUCENT KONZUMENT Operační systémy LS 2014/2015

4 Producent - konzument Kód producenta Kód konzumenta for(;;) for(;;) { { char data=vytvor_data(); char data; wait(B); wait(A); uloz_do_sdilene_pameti(); data=cti_ze_sdilene_pameti(); signal(A); signal(B); } zpracuj_data(); } - semafor A je inicializován na 0, semafor B je inicializován na velikost sdílené paměti v případě souběhu producenta a konzumenta jsou data obhospodařována průběžně, v jiném případě se zastaví produkce, nebo čerpání návaznost na inkrementaci semaforu ve službě KILL (stav WAIT), kdy se proces odstraňuje z každé fronty Operační systémy LS 2014/2015

5 Čtenáři - písaři Priorita čtenářů Implementace Písař: Čtenář:
wait(wrt); wait(readcountmutex); readcount++; písař modifikuje zdroj ; if(readcount==1) wait(wrt); signal(wrt); signal(readcountmutex); čtení sdíleného zdroje wait(readcountmutex); readcount--; if (readcount==0) signal(wrt); signal(readcountmutex); Priorita čtenářů Žádný čtenář nebude muset čekat, pokud sdílený zdroj nebude obsazen písařem. Jinak řečeno: Kterýkoliv čtenář čeká pouze na opuštění kritické sekce písařem. Písaři mohou stárnout Sdílená data + inicializace semaphore wrt=1, readcountmutex=1, int readcount=0 Operační systémy LS 2014/2015

6 Čtenáři - písaři Priorita písařů Implementace Implementace Čtenář:
wait(rdr); wait(readcountmutex); readcount++; if (readcount == 1) wait(wrt); signal(readcountmutex); signal(rdr); ... čtení sdíleného zdroje readcount--; if (readcount == 0) signal(wrt); Implementace Písař: wait(writecountmutex); writecount++; if (writecount==1) wait(rdr); signal(writecountmutex); wait(wrt); ... písař modifikuje zdroj signal(wrt); writecount--; if (writecount==0) release(rdr); Jakmile je některý písař připraven vstoupit do kritické sekce, čeká jen na její uvolnění (čtenářem nebo písařem). Jinak řečeno: Připravený písař předbíhá všechny připravené čtenáře. Čtenáři mohou stárnou Sdílená data + inicializace semaphore wrt=1, rdr=1 readcountmutex=1 writecountmutex=1 int readcount=0 int writecount=0 Operační systémy LS 2014/2015

7 Večeřící filosofové filosofové buď přemýšlí nebo jedí
mají rozvařené (klouzavé) špagety, potřebují dvě vidličky pokud všichni současně vezmou do pravé ruky vidličku – zablokování možné ochrany proti uváznutí – zrušení symetrie úlohy (jeden z filosofů je levák), pro n filosofů bude připraveno n+1 míst, filosof smí uchopit vidličku jen pokud jsou obě volné Operační systémy LS 2014/2015

8 Modul správce paměti Memory Management
sledování stavu každého místa v operační paměti (přiděleno, volné) určování strategie přidělování paměti (komu, která část, kdy, v jakém rozsahu, ...) realizace přidělení paměti (zvolení příslušného paměťového místa, aktualizace informací o přidělení) realizace uvolnění paměti (proces sám, odebrána násilně, aktualizace informací) rozpozná případy, kdy proces skončí bez uvolnění paměti (KILL) zajišťuje ochranu paměti (procesy, operační systém) - moduly na základní desce počítače Operační systémy LS 2014/2015

9 Cache paměť CPU Word Transfer - drahá a velmi rychlá paměť
Main memory Cache CPU Block Transfer Word Transfer - drahá a velmi rychlá paměť - kontakt s pomalejší a větší hlavní pamětí - OS a uživatelské procesy ji nevidí - je v interakci s HW správy paměti (MMU) - hledání odkazovaného slova v cache při neúspěchu přesun dalšího bloku dat prostorová lokalita Operační systémy LS 2014/2015

10 Adresové prostory RAM LAP FAP procesor RAM DAT - MMU
lan la1 la0 DAT - MMU fan fa1 fa0 Logický adresový prostor Fyzický adresový prostor LAP - logické adresy, instrukční soubor procesoru FAP - fyzické adresy, HW řešení DAT - Dynamic Address Translation MMU - Memory Management Unit správa adresových prostorů (oddělení LAP a FAP pro jednotlivé procesy, rozdělení FAP pro LAP) Operační systémy LS 2014/2015

11 Správa paměti - relokace – možnost umístění kódu na jiné místo, než pro které bylo překladačem vytvořeno, program locator, podle údajů v relokační tabulce přepíše absolutní adresy, nebyla k dispozici virtuální paměť (adresní prostor je od adresy 0), program musel být umístěn od začátku volného prostoru, ten byl různě - blokové přidělování – jedna souvislá oblast, statické přidělování, dynamické přidělování, systém „blíženců“ - segmentace – procesu je vytvořen virtuální adresní prostor začínající od 0 (odpadá potřeba relokace), fyzická adresa je získaná součtem segment registru a offsetu, proces používá více segmentů, obsah segmentů odpovídá struktuře paměťového prostoru procesu - stránkování – každému procesu je vytvořen jeho lineární adresní prostor, začínající na adrese 0, fyzická adresa je tvořena rámcem a offsetem, stránky jsou různé velikosti (4 KB, 8 KB, …), algoritmy stránkování (kradení stránek, stránkování na žádost), proces má dojem souvislého paměťového prostoru - virtuální paměť – fyzická paměť je rozdělena na rámce, logická je rozdělena na stránky, stránka má přidělený rámec nebo je odložena na disk Operační systémy LS 2014/2015

12 Zobrazení LAP do FAP relokací
LAP OS LAP2 LAP1 AP2 AP1 FAP nevyužito RR - zachování spojitosti LAP ve FAP - DAT – relokační registr RR - obraz RR je součástí PCB - LAP -> FAP se provádí dynamicky za běhu Operační systémy LS 2014/2015

13 Blokové přidělování Fragmentace paměti – hlavní nevýhoda, důsledek přidělování nestejně velkých bloků paměti a jejich uvolňování v různých okamžicích, pro omezení externí fragmentace se přidělují stejně veliké bloky (zvýšení režie), spojování více bloků, pro úplné zamezení - uvolňování v opačném pořadí než se alokuje, nepřijatelný diktát chování procesů, některé procesy si OP potřebují držet stále, drasticky by se snižovala průchodnost OS, musí být vnitřní věcí správce OP. Externí fragmentace – dost volné paměti, není dostupná v souvislé díře Interní fragmentace – přidělená oblast je větší, než bylo požadováno Redukce externí fragmentace – slučování nesousedních děr posuvem obsazených oblastí (bliter). Při přesouvání bloků dat je nutné zachování transparentnosti pro procesy - požadavek na překlad adres, pokud je k dispozici, není důvod nepoužít virtualizaci - virtuální paměť. strategie pro jednoduché OS nebo jednorázové a krátkodobé úkoly, proces musí vědět, kolik OP potřebuje a explicitně si ji vyžádat (požadavek je buď akceptován, nebo odmítnut), je třeba udržovat informace o vlastnících bloků, o volných blocích (tabulky s informacemi), potřebná znalost délky bloku, adresa dalšího bloku nemusí být explicitně uvedena (bloky navazují)

14 Odstranění fragmentace - setřásání
P1 P1 volná fragmentováno P2 defragmentováno P2 P3 volná P4 P3 volná volná P4 Operační systémy LS 2014/2015

15 Blokové přidělování Informace o blocích v datových strukturách správce, potřeba další paměti a zvýšení režie, počet bloků předem neznáme, řešením je přidělení většího bloku, do volného místa uložit informace o samotném bloku i o adrese následujícího. Nevýhodou je promíchání systémových informací a paměťových bloků. Při nedokonalé ochraně paměti hrozí zhroucení OS. Informace v bloku Proces1 Informace ve zvláštní struktuře Další blok Proces1 Proces1 Data P1 15KB Proces2 Proces2 Proces2 10KB Proces3 Další blok Proces3 Data P2 25KB Operační systémy LS 2014/2015

16 Blokové přidělování Pevná velikost přidělovaných bloků – umožňuje umístění procesu menšího nebo stejného, pokud jsou všechny bloky obsazené je možné paměťové požadavky (procesy) odkládat 8 MB 8 MB 2 MB 4 MB 12 MB 16 MB bloky stejné velikosti - statické přidělování nezáleží na tom, který blok se použije (jsou stejné) nabízený prostor je nedostatečný, nutnost zavedení překryvů využití paměti je extrémně neefektivní i malý požadavek čerpá celý blok vzniká interní fragmentace bloky nestejné velikosti - dynamické přidělování existují dvě možnosti čerpání bloků Operační systémy LS 2014/2015

17 Způsob obsazení bloků jedna fronta procesů pro každý blok – pro každý blok je jedna plánovací fronta procesů, výhodou je omezení interní fragmentace jedna fronta procesů pro všechny bloky – možnost stanovit preferenci mezi odkládáním malých procesů a jejich umístění ve větším prostoru (zvýšení interní fragmentace versus zvýšená průchodnost operačního systému) 8 MB 2 MB 4 MB 12 MB 16 MB nové procesy nové procesy 8 MB 2 MB 4 MB 12 MB 16 MB Operační systémy LS 2014/2015

18 Blokové přidělování OS
Díra – blok dostupné paměti, díry mají různý rozměr, jsou roztroušeny po FAP, při vzniku procesu se procesu přidělí dostatečně velká díra, OS udržuje informaci o přidělených oblastech a dírách OS proces 5 proces 8 proces 2 volné proces 9 proces 10 Operační systémy LS 2014/2015

19 Alokační strategie First fit - přidělí oblast v první díře, která má dostatečnou velikost, zbytek je novou dírou, jednoduchá, rychlá, nemá vliv na fragmentaci Best fit - přidělí oblast v nejmenší díře, která má ještě dostatečnou velikost, mírně omezuje fragmentaci, pomalá, větší režie, zanechává malé díry, šetří velké díry pro velké požadavky Worst fit – přidělí oblast v největší díře, pomalá, zanechává největší díru Last fit – obsazuje paměť od nejvyšších adres, někdy výhodný způsob (místo pro zásobník) Next fit – prohledává paměť za posledním umístěním Quick fit – informace o dírách je udržována v několika oddělených seznamech, každý obsahuje informace o dírách, jejichž velikost je v určitém intervalu, rychlé nalezení díry first fit best fit last fit worst fit next fit Poslední poslední alokovaný alokovaný volný nově alokovaný

20 Systém „blíženců“ (Buddy System)
zajímavým kompromisem mezi statickým a dynamickým přidělováním bloků je tzv. „Buddy System“ (Unix SVR4). Dostupné jsou paměťové bloky o velikosti 2K, L <= K <= U, kde představuje: 2L – nejmenší velikost alokovaného bloku 2U – největší velikost alokovaného bloku (dostupná paměť) Řešení požadavku na přidělení bloku o velikosti S: - začne se s celým blokem velikosti 2U. Jestliže platí 2U-1 < S < 2U, přidělí se celý blok délky 2U, jinak se blok rozdělí na dva „blížence“ o rozměrech 2U-1. Jestliže platí 2U-2 < S < 2U-1, přidělí se jeden z blíženců, jinak opět dojde k rozdělení. Postup se opakuje, dokud se nezíská nejmenší možný blok s velikostí větší nebo rovnou s požadavkem S. Jakmile se „blíženci“ uvolní, tak splývají. Operační systém udržuje několik seznamů děr: - i-tý seznam je seznam děr o velikosti 2i - kdykoliv se v (i+1) seznamu vyskytne pár „blíženců“, jsou z (i+1) seznamu odstraněny, sloučeny a vloženy do i-tého seznamu. Když se požaduje oblast o velikosti k, kde 2i+1 < k < 2i, nejprve se zkoumá i-seznam a je-li prázdný, zkoumá se (i+1) seznam ...

21 Systém „blíženců“ (Buddy System)
512K B - 256K 256K D - 256K 128K E - 128K A - 128K C 64K 64K Rel. B Req. E – 75K Req. D – 256K Req. C – 62K Rel. A Rel. C Rel. E Req. A – 100K Req. B – 240K volná přidělená Operační systémy LS 2014/2015

22 Segmentace Segmentace paměti: - fyzická adresa se získává z páru segment + offset, obsah segment registru nastavuje OS, pro uživatelský program je nepřístupný, adresní prostor každého procesu začíná na hodnotě 0, odpadají problémy s relokací, rozdělení na segmenty odpovídá struktuře paměťového prostoru procesu (kód, konstanty, proměnné, zásobník, halda), procesy řízené stejným programem mohou sdílet kód programu a konstanty, je možné dynamické přemísťování segmentů za běhu procesu, možnost dodatečného zvětšování adresového prostoru, možnost sdílení segmentů, není nutné provádět relokaci programu, nevýhodou je, že součet nároků procesů <= velikost paměti (odkládání segmentů na disk – může být časově náročné), nutná hardwarová podpora segmentace, pro odstranění fragmentace se užívá setřásání segmentů, k ochraně se užívá mezní registr na číslo segmentu (segmenty mají různou délku) Operační systémy LS 2014/2015

23 Segmentace operační paměť Segment A Segment B Segment C fyzická adresa
offset Segment A base limit base limit Segment B base limit base limit base limit base limit Segment C base limit base limit fyzická adresa Operační systémy LS 2014/2015

24 Stránkování RAM procesor fyzická adresa logická adresa p d f
LAP se dělí na logické stránky, FAP na fyzické stránky (frame), oboje má pevnou délku, délka je mocninou 2, zobrazení LAP do FAP se děje pomocí tabulky stránek, technika trpí vnitřní fragmentací, logickou adresu generuje procesor, číslo stránky (p – index do tabulky stránek, indexovaný řádek obsahuje číslo rámce f), offset (d – adresa ve stránce, dohromady s f tvoří fyzickou adresu), použito u virtuální paměti Operační systémy LS 2014/2015

25 Stránkovací mechanismus
Stránkování Page Offset Virtuální adresa Frame Fyzická adresa + Page table ptr page frame Program Stránkovací mechanismus Operační paměť n bitů m bitů Registr Page table Operační systémy LS 2014/2015

26 Stránkování - metoda, jak se vyrovnat s externí fragmentací, logická adresa (použita v programu) má dvě složky (číslo stránky a offset), velikost stránky bývá v KB (při velikosti 4 KB je pro offset potřeba 12 bitů, spodních 12 bitů je offset, zbytek je pro číslo stránky, číslo stránky se použije jako index do tabulky stránek (každý proces má svoji vlastní), v tabulce stránek je uvedeno číslo rámce ve fyzické paměti, k tomuto rámci se připojí offset => fyzická adresa, výhodou je odstranění externí fragmentace, není nutné přemísťování bloků v paměti, poslední stránka procesu trpí interní fragmentací, je potřeba hardwarová podpora, tabulka stránek může být extrémně velká (pro 32 b., 4 KB stránka, 1 milión stránek, tolik položek bude mít PT), každý proces potřebuje svoji vlastní tabulku stránek (každý má svůj virtuální adresový prostor) Operační systémy LS 2014/2015

27 V=0 bit platnosti, stránka není v paměti (page fault)
Jednoúrovňová tabulek stránek virtuální adresa Page Offset Page Table Base Register + V=0 bit platnosti, stránka není v paměti (page fault) fyzická adresa Access rights Frame V Page Table je umístěna ve fyzické paměti, 32 bitový virtuální prostor bude mít při velikosti stránky 4 KB pro offset 12 bitů a pro stránku 20 bitů, tabulka stránek je příliš velká (4 MB pro tabulku stránek pro jeden proces), používá se víceúrovňové stránkování

28 Příklady stránkování A0 1 A1 2 A2 3 A3 4 B0 D0 5 B1 D1 6 B2 D2 7 C0 8
B1 5 B2 6 C0 7 8 9 10 D3 11 D4 12 D0 D1 D2 Proces A - Proces B Proces C 13 14 Proces D Free frame list - proces D nezabírá souvislou oblast - nedochází k externí fragmentaci - vnitřní fragmentace je problém poslední stránky procesu - OS udržuje PT pro každý proces - zmenšování délky stránky – minimalizace vnitřní fragmentace, prodlužování PT Operační systémy LS 2014/2015

29 Stránkovací mechanismus
Stránkování s TLB Virtuální adresa Fyzická adresa Page Offset Frame Offset Registr Offset Page table ptr n bitů Page table TLB Page frame page frame page frame m bitů page frame + page frame page frame Program Frame Operační paměť Stránkovací mechanismus stránka v TLB (Translation Look-aside Buffer) nalezena (tzv. TLB hit) Operační systémy LS 2014/2015

30 Doba přístupu do paměti s TLB
Skutečná přístupová doba – Effective Access Time (EAT) Přístupová doba do fyzické paměti = t Přístup do TLB = e „Hit Ratio“a – pravděpodobnost nalezení stránky v TLB EAT = (e + t) a + (e + 2t)(1 – a) = (2 – a)t + e Příklad pro t = 100 ns a = 0% EAT = 200 ns Bez TLB e = 20 ns a = 60% EAT = 160 ns Zrychlení přístupu a = 80% EAT = 140 ns a = 98% EAT = 122 ns Operační systémy LS 2014/2015

31 Srovnání stránkování a segmentace
FAP je dělen na elementy (chunks) pevné délky - rámce FAP není rozdělen Program (LAP) je kompilátorem (MMU) dělen na stránky Segmenty LAP určuje programátor Interní fragmentace uvnitř rámce Žádná interní fragmentace Žádná externí fragmentace Externí fragmentace OS udržuje tabulku stránek pro každý proces s určením, které rámce s nimi souvisí OS musí udržovat tabulku segmentů pro každý proces. Určuje zaváděcí adresu a délku každého segmentu OS udržuje seznam volných rámců Operační systém udržuje seznam volných děr Procesor používá číslo stránky a offset k výpočtu fyzické adresy Procesor používá číslo segmentu a offset k výpočtu fyzické adresy Všechny stránky procesu nemusí být při běhu procesu ve FAP, zavádění stránek probíhá podle potřeby Všechny segmenty se zavádí do FAP podle potřeby Zavedení stránky do FAP může způsobit požadavek zápisu některé stránky na disk Zavedení segmentu do FAP může způsobit výpis některého segmentu na disk

32 Srovnání adresování relativní adresa: 1502 Uživatelský proces 2700 bytes Blokové přidělování logická adresa: Page=1 Offset=478 Page 2 Page 1 Page 0 Stránkování (stránka 1K) logická adresa: Segment=1 Offset=752 Segment 0 750 bytes Segment 1 1950 bytes Segmentace Operační systémy LS 2014/2015

33 Převod logické adresy na fyzickou
Stránkování Process page table 16 bitů logické adresy 16 bitů fyzické adresy Offset Stránka Segmentace Process segment table + 16 bitů fyzické adresy 16 bitů logické adresy Operační systémy LS 2014/2015

34 Virtuální paměť - virtualizace je nejdokonalejší strategie správy paměti, musí být k dispozici MMU - jednotka řízení paměti zajišťuje transparentnost paměti pro procesy Nutné podmínky pro realizaci virtuální paměti: schopnost procesoru zpracovávat přerušení opakování přístupu do paměti jednotka řízení paměti musí být schopna zajistit ochranu paměti - při pokusu o práci s neexistující pamětí se vyvolá přerušení, jednotka řízení paměti neexistující paměť doplní, zopakuje se přístup do paměti Operační systémy LS 2014/2015

35 Virtuální paměť - logická adresa, účastní se překladu, leží v adresovém prostoru - fyzická adresa, leží v OP, platná po překladu adres - logické stránky reprezentují adresový prostor - fyzické stránky reprezentují OP - odkládací prostor na disku - pokud není k dispozici žádná volná fyzická stránka, vezme se obsah některé z alokovaných a uloží se na disk, uvolněná fyzická stránka se spojí s logickou stránkou - při požadavku čtení z odložené stránky se vyvolá přerušení - výpadek stránky a postupuje se stejně, jako při požadavku na volnou fyzickou stránku Logická stránka 0 Fyzická stránka 0 Logická stránka 1 Logická stránka 2 Logická stránka 6 Logická stránka 3 Logická stránka 4 Logická stránka 5 Fyzická stránka 1 Fyzická stránka 2 Fyzická stránka 3 Fyzická stránka 4 Fyzická stránka 5 ? Operační systémy LS 2014/2015

36 Lokalita odkazy na instrukce programu a na data mají tendenci tvořit shluky časová lokalita prostorová lokalita provádění programu je s výjimkou skoků a volání podprogramů sekvenční programy mají tendenci zůstávat po jistou dobu v rámci několika procedur často zpracovávanou datovou strukturou bývá pole lze dělat odhady o průběhu programu a potřeby dat v nejbližší budoucnosti Operační systémy LS 2014/2015


Stáhnout ppt "10. přednáška 4. května 2015 Operační systémy LS 2014/2015."

Podobné prezentace


Reklamy Google