Petr Štěpán, K13133 KN-E-129. Téma 6. Deadlock. Správa paměti

Podobné dokumenty
PB153 Operační systémy a jejich rozhraní

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

09. Memory management. ZOS 2006, L.Pešička

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Přidělování paměti II Mgr. Josef Horálek

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy. Správa paměti (SP) Požadavky na SP. Spojování a zavedení programu. Spojování programu (linking) Zavádění programu (loading)

Operační systémy. Přednáška 7: Správa paměti I

Přidělování zdrojů (prostředků)

Téma 6 Správa paměti a její virtualizace

Paměťový podsystém počítače

Operační systémy. Přednáška 8: Správa paměti II

Systém adresace paměti

Principy operačních systémů. Lekce 3: Virtualizace paměti

Principy operačních systémů. Lekce 2: Správa paměti

2010/2011 ZS P i r i nc č py po ít č čů a PAMĚŤOVÝ ĚŤ SUBSYSTÉM z pohledu OS OS

2010/2011 ZS. Operační systém. prostředky, zablokování

Struktura a architektura počítačů (BI-SAP) 11

Zablokování (Deadlock) Mgr. Josef Horálek

B4B35OSY: Operační systémy

Operační systémy a databáze. Petr Štěpán, K13133 KN-E-129 Téma 5. Správa paměti

Přidělování paměti I Mgr. Josef Horálek

Při překrývání se využívá toho, že ne všechny moduly programu jsou vyžadovány současně. Jakmile skončí využívání jednoho

Operační systémy 2. Přednáška číslo 2. Přidělování paměti

Principy počítačů a operačních systémů

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Ukázka zkouškové písemka OSY

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

08. Deadlock Přidělování paměti. ZOS 2006, L. Pešička

TÉMATICKÝ OKRUH TZD, DIS a TIS

OS Deadlock a prevence

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Téma 4. Synchronizace a deadlock

Přerušovací systém s prioritním řetězem

Petr Štěpán, K13133 KN-E-129 Téma 5. Synchronizace a deadlock

3. Počítačové systémy

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH

Operační systémy. Přednáška 1: Úvod

Disková pole (RAID) 1

Řízení IO přenosů DMA řadičem

Počítač jako prostředek řízení. Struktura a organizace počítače

OPS Paralelní systémy, seznam pojmů, klasifikace

Programování II. Návrh programu I 2018/19

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Logická organizace paměti Josef Horálek

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Management procesu I Mgr. Josef Horálek

PRINCIPY OPERAČNÍCH SYSTÉMŮ

MSP 430F1611. Jiří Kašpar. Charakteristika

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Základní uspořádání pamětí MCU

B4B35OSY: Operační systémy

Principy komunikace s adaptéry periferních zařízení (PZ)

Distribuovaný systém je takový systém propojení množiny nezávislých počítačů, který poskytuje uživateli dojem jednotného systému.

Pojem operační systém (OS) OS jako rozšíření počítače Skrývá komplikované detaily hardware Poskytuje uživateli virtuální stroj, který se snáze ovládá

Disková pole (RAID) 1

Téma 8 Virtuální paměť Obsah

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

AGP - Accelerated Graphics Port

PA152. Implementace databázových systémů

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Operační systémy a sítě

Procesy a vlákna (Processes and Threads)

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic

Téma 5 Synchronizace procesů a problém uváznutí Obsah

Pohled do nitra mikroprocesoru Josef Horálek

Strojový kód. Instrukce počítače

Struktura programu v době běhu

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Správa paměti. Přímý přístup k fyzické paměti, abstrakce: adresový prostor, virtualizace, segmentace

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

Principy operačních systémů. Lekce 6: Synchronizace procesů

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Profilová část maturitní zkoušky 2014/2015

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Profilová část maturitní zkoušky 2017/2018

Mikrokontroléry. Doplňující text pro POS K. D. 2001

1 Nejkratší cesta grafem

PB002 Základy informačních technologií

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

Architektura počítačů

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Paralelní programování

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Architektura počítače

Téma 36. Petr Husa

Systémová sběrnice, souvislost architektury počítače a systémové

Základy umělé inteligence

Metody připojování periferií BI-MPP Přednáška 2

Služba ve Windows. Služba (service) je program

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Hospodářská informatika

Transkript:

Operační systémy a sítě Petr Štěpán, K13133 KN-E-129 stepan@fel.cvut.cz Téma 6. Deadlock Správa paměti verze: Podzim 2013

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 2 Graf přidělování zdrojů Modelování procesů a zdrojů pomocí Grafu přidělování zdrojů (Resource Allocation Graph, RAG): Množina uzlů V a množina hran E Uzly dvou typů: P = {P 1, P 2,..., P n }, množina procesů existujících v systému R = {R 1, R 2,..., R m }, množina zdrojů existujících v systému Hrany: hrana požadavku orientovaná hrana P i R j hrana přidělení orientovaná hrana R i P j Bipartitní graf Proces Zdroj typu Rj se 3 instancemi Proces P i požadující prostředek R j P i P R j R j Proces P i vlastnící instanci prostředku R j P i R j

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 3 Příklad RAG R 1 R 3 P 1 P 2 P 3 H R R 4 2 Proces P 1 vlastní zdroj R 2 a požaduje zdroj R 1 Proces P 2 vlastní zdroje R 1 a R 2 a ještě požaduje zdroj R 3 Proces P 3 vlastní zdroj R 3 Zdroj R 4 není nikým vlastněn ani požadován Jednoinstanční zdroje R 1 a R 3 jsou obsazeny Instance zdroje R 2 jsou vyčerpány Přidání hrany H, kdy proces P 3 zažádá o přidělení zdroje R 2 a zablokuje se, způsobí uváznutí V RAG není cyklus K uváznutí nedošlo a zatím ani nehrozí V RAG se cyklus vyskytuje Jsou-li součástí cyklu pouze zdroje s jednou instancí, pak došlo k uváznutí Mají-li dotčené zdroje více instancí, pak k uváznutí může dojít

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 4 Scénář 1 Plánování procesů a uváznutí Uvažme následující příklad a 2 scénáře: 3 procesy soupeří o 3 jedno-instanční zdroje 1. A žádá o R 2. B žádá o S 3. C žádá o T 4. A žádá o S 5. B žádá o T 6. C žádá o R uváznutí A R B S C T A R B S A Žádá o R Žádá o S Uvolňuje R Uvolňuje S C T A R B S C T B Žádá o S Žádá o T Uvolňuje S Uvolňuje T A R B S C T C Žádá o T Žádá o R Uvolňuje T Uvolňuje R A R B S C T A R B S C T Scénář 2 1. A žádá o R 2. C žádá o T 3. A žádá o S 4. C žádá o R 5. A uvolňuje R 6. A uvolňuje S uváznutí nenastává S procesem B již nejsou problémy A R B S C T A R B S C T A R B S C T A R B S C T A R B S C T A R B S C T Lze vhodným plánováním předejít uváznutí? Za jakých podmínek? Jak to algoritmizovat?

Co lze činit s problémem uváznutí? Existují čtyři přístupy Zcela ignorovat hrozbu uváznutí Pštrosí algoritmus strč hlavu do písku a předstírej, že se nic neděje Používá mnoho OS včetně mnoha implementací UNIXů Prevence uváznutí Pokusit se přijmout taková opatření, aby se uváznutí stalo vysoce nepravděpodobným Vyhýbání se uváznutí Zajistit, že k uváznutí nikdy nedojde Prostředek se nepřidělí, pokud by hrozilo uváznutí hrozí stárnutí Detekce uváznutí a následná obnova Uváznutí se připustí, detekuje se jeho vznik a zajistí se obnova stavu před uváznutím verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 5

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 6 Prevence uváznutí Konzervativní politikou se omezuje přidělování prostředků Přímá metoda plánovat procesy tak, aby nevznikl cyklus v RAG Vzniku cyklu se brání tak, že zdroje jsou očíslovány a procesy je smějí alokovat pouze ve vzrůstajícím pořadí čísel zdrojů Nerealistické zdroje vznikají a zanikají dynamicky Nepřímé metody (narušení některé Coffmanovy podmínky) Eliminace potřeby vzájemného vyloučení Nepoužívat sdílené zdroje, virtualizace (spooling) periferií Mnoho činností však sdílení nezbytně potřebuje ke své funkci Eliminace postupného uplatňování požadavků Proces, který požaduje nějaký zdroj, nesmí dosud žádný zdroj vlastnit Všechny prostředky, které bude kdy potřebovat, musí získat naráz Nízké využití zdrojů Připustit násilné odnímání přidělených zdrojů (preempce zdrojů) Procesu žádajícímu o další zdroj je dosud vlastněný prostředek odňat» To může být velmi riskantní zdroj byl již zmodifikován Proces je reaktivován, až když jsou všechny potřebné prostředky volné» Metoda inkrementálního zjišťování požadavků na zdroje nízká průchodnost Kterákoliv metoda prevence uváznutí způsobí výrazný pokles průchodnosti systému

Vyhýbání se uváznutí Základní problém: Systém musí mít dostatečné apriorní informace o požadavcích procesů na zdroje Nejčastěji se požaduje, aby každý proces udal maxima počtu prostředků každého typu, které bude za svého běhu požadovat Algoritmus: Dynamicky se zjišťuje, zda stav subsystému přidělování zdrojů zaručuje, že se procesy v žádném případě nedostanou do cyklu v RAG Stav systému přidělování zdrojů je popsán Počtem dostupných a přidělených zdrojů každého typu a Maximem očekávaných žádostí procesů Stav může být bezpečný nebo nebezpečný verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 7

Vyhýbání se uváznutí bezpečný stav verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 8 Systém je v bezpečném stavu, existuje-li bezpečná posloupnost procesů Posloupnost procesů {P 0, P 1,..., P n } je bezpečná, pokud požadavky každého P i lze uspokojit právě volnými zdroji a zdroji vlastněnými všemi P k, k < i Pokud nejsou zdroje požadované procesem P i volné, pak P i bude čekat dokud se všechny P k neukončí a nevrátí přidělené zdroje Když P i-1 skončí, jeho zdroje může získat P i, proběhnout a jím vrácené zdroje může získat P i+1, atd. Je-li systém v bezpečném stavu (safe state) k uváznutí nemůže dojít. Ve stavu, který není bezpečný (unsafe state), přechod do uváznutí hrozí Vyhýbání se uváznutí znamená: Plánovat procesy tak, aby systém byl stále v bezpečném stavu Nespouštět procesy, které by systém z bezpečného stavu mohly vyvést Nedopustit potenciálně nebezpečné přidělení prostředku

Vyhýbání se uváznutí algoritmus Do RAG se zavede nároková hrana Nároková hrana P i R j značí, že někdy v budoucnu bude proces P i požadovat zdroj P i R j V RAG hrana vede stejným směrem jako požadavek na přidělení, avšak kreslí se čárkovaně Nároková hrana se v okamžiku vzniku žádosti o přidělení převede na požadavkovou hranu Když proces zdroj získá, požadavková hrana se změní na hranu přidělení Když proces zdroj vrátí, hrana přidělení se změní na požadavkovou hranu Převod požadavkové hrany v hranu přidělení nesmí v RAG vytvořit cyklus (včetně uvažování nárokových hran) verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 9 Hrana přidělení R 1 Požadavková hrana R 1 Požadavková hrana P 1 P 2 Není bezpečné P 1 P 2 R 2 Nároková hrana R 2 Hrana přidělení

Bankéřský algoritmus Chování odpovědného bankéře: Klienti žádají o půjčky do určitého limitu Bankéř ví, že ne všichni klienti budou svůj limit čerpat současně a že bude půjčovat klientům prostředky postupně Všichni klienti v jistém okamžiku svého limitu dosáhnou, avšak nikoliv současně Po dosažení přislíbeného limitu klient svůj dluh v konečném čase vrátí Příklad: Ačkoliv bankéř ví, že všichni klienti budou dohromady potřebovat 22 jednotek, na celou transakci má jen 10 jednotek verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 10

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 11 Bankéřský algoritmus (2) Činnost Zákazníci přicházející do banky pro úvěr předem deklarují maximální výši, kterou si budou kdy chtít půjčit Úvěry v konečném čase splácí Bankéř úvěr neposkytne, pokud si není jist, že uspokojí všechny zákazníky Analogie Zákazník = proces Úvěr = přidělovaný prostředek Vlastnosti Procesy musí deklarovat své potřeby předem Proces požadující přidělení může být zablokován Proces vrátí všechny přidělené zdroje v konečném čase Nikdy nedojde k uváznutí Proces bude spuštěn jen, pokud bude možno uspokojit všechny jeho požadavky Sub-optimální pesimistická strategie Předpokládá se nejhorší případ

Bankéřský algoritmus (3) Datové struktury n... počet procesů m... počet typů zdrojů Vektor available[m] available[j] == k značí, že je k instancí zdroje typu R j je volných Matice max[n, m] Povinná deklarace procesů: max[i, j] == k znamená, že proces P i bude během své činnosti požadovat až k instancí zdroje typu R j Matice allocated[n, m] allocated[i, j] = k značí, že v daném okamžiku má proces P i přiděleno k instancí zdroje typu R j Matice needed[n, m] (needed[i, j] = max[i, j] allocated[i, j]) needed[i, j] = k říká, že v daném okamžiku procesu P i chybí ještě k instancí zdroje typu R j verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 12

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 13 Bankéřský algoritmus (4) Test bezpečnosti stavu 1. Inicializace work[m] a finish[n] jsou pracovní vektory Inicializujeme work = available; finish[i] = false; i=1,..., n 2. Najdi i, pro které platí (finish[i] == false) && (needed[i] <= work[i]) Pokud takové i neexistuje, jdi na krok 4 3. Simuluj ukončení procesu i work[i] = work[i] + allocated[i]; finish[i] = true; Pokračuj krokem 2 4. Pokud platí finish[i] == true pro všechna i, pak stav systému je bezpečný

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 14 Postup přidělení zdroje bankéřským algoritmem Proces P i formuje vektor request: request[j] == k znamená, že proces P i žádá o k instancí zdroje typu R j 1. if(request[j] >= needed[i, j]) error; Deklarované maximum překročeno! 2. if(request[j] <= available[j]) goto 3; Jinak zablokuj proces P i požadované prostředky nejsou volné 3. Namodeluj přidělení prostředku a otestuj bezpečnost stavu: available[j] = available[j] request[j]; allocated[i, j] = allocated[i, j] + request[j]; needed[i, j] = needed[i, j] request[j]; Spusť test bezpečnosti stavu Je-li bezpečný, přiděl požadované zdroje Akce 3 Není-li stav bezpečný, pak vrať úpravy Akce 3 a zablokuj proces P i, neboť přidělení prostředků by způsobilo nebezpečí uváznutí

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 15 Detekce uváznutí s následnou obnovou Strategie připouští vznik uváznutí: Uváznutí je třeba detekovat Vznikne-li uváznutí, aplikuje se plán obnovy systému Aplikuje se zejména v databázových systémech RAG Čekací graf (WG) P 5 P 5 R 1 R 3 R 4 P 1 P 2 P 3 P 1 P 2 P 3 R 2 P 4 R 5 P 4

Detekce uváznutí postup Případ jednoinstančního zdroje daného typu Udržuje se čekací graf uzly jsou procesy Periodicky se provádí algoritmus hledající cykly Algoritmus pro detekci cyklu v grafu má složitost O(n 2 ), kde n je počet hran v grafu Případ více instancí zdrojů daného typu n... počet procesů m... počet typů zdrojů Vektor available[m] available[j] = k značí, že je k instancí zdroje typu R j je volných Matice allocated[n, m] allocated[i, j] = k značí, že v daném okamžiku má proces P i přiděleno k instancí zdroje typu R j Matice request[n, m] Indikuje okamžité požadavky každého procesu: request[i, j] = k znamená, že proces P i požaduje dalších k instancí zdroje typu R j verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 16

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 17 Detekce uváznutí algoritmus 1. Nechť work[m] a finish[n] jsou pracovní vektory Inicializujeme work = available; finish[i] = false; i=1,..., n 2. Najdi i, pro které platí (finish[i] == false) && (request[i] <= work[i]) Pokud takové i neexistuje, jdi na krok 4 3. Simuluj ukončení procesu i work[i] += allocated[i]; finish[i] = true; Pokračuj krokem 2 4. Pokud platí finish[i] == false pro některé i, pak v systému došlo k uváznutí. Součástí cyklů ve WG jsou procesy P i, kde finish[i] == false Algoritmus má složitost O(m n 2 ) m a n mohou být veliká a algoritmus časově značně náročný

Použitelnost detekčního algoritmu verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 18 Kdy a jak často algoritmus vyvolávat? (Detekce je drahá) Jak často bude uváznutí vznikat? Kterých procesů se uváznutí týká a kolik jich likvidovat? Minimálně jeden v každém disjunktním cyklu ve WG Násilné ukončení všech uváznutých procesů velmi tvrdé a nákladné Násilně se ukončují dotčené procesy dokud cyklus nezmizí Jak volit pořadí ukončování Kolik procesů bude nutno ukončit Jak dlouho už proces běžel a kolik mu zbývá do ukončení Je to proces interaktivní nebo dávkový (dávku lze snáze restartovat) Cena zdrojů, které proces použil Výběr oběti podle minimalizace ceny Nebezpečí stárnutí některý proces bude stále vybírán jako oběť

verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 19 Závěrečné úvahy o uváznutí Metody popsané jako prevence uváznutí jsou velmi restriktivní ne vzájemnému vyloučení, ne postupnému uplatňování požadavků, preempce prostředků Metody vyhýbání se uváznutí nemají dost apriorních informací zdroje dynamicky vznikají a zanikají (např. úseky souborů) Detekce uváznutí a následná obnova jsou vesměs velmi drahé vyžadují restartování aplikací Smutný závěr Problém uváznutí je v obecném případě efektivně neřešitelný Existuje však řada algoritmů pro speciální situace Zejména používané v databázových systémech Transakce vědí, jaké tabulky budou používat Praktickým řešením jsou distribuované systémy Minimalizuje se počet sdílených prostředků Nutnost zabývat se uváznutím v uživatelských paralelních a distribuovaných aplikacích

Správa paměti verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 20

Základní fakta FAP fyzická adresa je adresa vnitřní paměti počítače Rozsah FAP je dán architekturou počítače kolik drátů má adresní sekce sběrnice Velikost vnitřní paměti bývá i menší než je rozsah FAP záleží na tom, kolik peněz jsme ochotni za paměť dát a kolik paměti se fyzicky do počítače vejde, případně na paměťových řadičích apod. LAP logická adresa je adresa hypotetické paměti Její obsah je buď uložen ve fyzické paměti nebo na vnější paměti (případně nebyla ještě použita a proto ani neexistuje) Rozsah LAP je dán architekturou CPU dán šířkou dat, s nimiž je CPU schopen pracovat Program se přetváří do formy schopné běhu v řadě kroků V jistém okamžiku se musí rozhodnout kde bude kód a kde budou data ve vnitřní paměti Cíl: Vazba adres instrukcí a dat na skutečné adresy v operační paměti Správa paměti je nutně předmětem činnosti OS Aplikační procesy nemají přístup k prostředkům pro řízení paměti Privilegované akce Nelze ji svěřit na aplikačnímu programování Bylo by to velmi neefektivní a nebezpečné verze: Podzim 2013 Správa paměti a její virtualizace 21

verze: Podzim 2013 Správa paměti a její virtualizace 22 Požadavky na správu paměti Potřeba relokace programů Procesu může být dynamicky přidělována jiná (aspoň zdánlivě) souvislá oblast paměti relokace Odkazy na paměť uvedené v programu (v LAP) se musí dynamicky překládat na skutečné adresy ve FAP Potřeba ochrany paměti Procesy nesmí odkazovat na paměťová místa přidělená jiným procesům nebo OS. Požadavek na relokaci způsobí, že adresy nemohou přiřazovány během překladu či sestavování ( ). Odkazy do paměti se musí kontrolovat za běhu hardwarem (softwarové řešení je příliš pomalé) Programy jsou sady sekcí s různými vlastnostmi Sekce s instrukcemi jsou,,execute-only Datové sekce jsou,,read-only nebo,,read/write Některé sekce jsou,,soukromé (private), jiné jsou,,veřejné (public) OS a HW musí podporovat práci se sekcemi tak, aby se dosáhlo požadované ochrany a sdílení Požadavky na sdílení Více procesů může sdílet společné úseky (sdílené struktury), aniž by tím docházelo k narušení ochrany paměti Sdílený přístup ke společné datové struktuře je efektivnější než udržování konzistence násobných kopií vlastněných jednotlivými procesy

Počítače bez správy paměti Výhody systému bez správy paměti Rychlost přístupu do paměti Jednoduchost implementace Lze používat i bez operačního systému robustnost Nevýhody systému bez správy paměti Nelze kontrolovat přístup do paměti Omezení paměti vlastnostmi HW Použití Historické počítače Osmibitové počítače (procesory Intel 8080, Z80, apod.) 8-mi bitová datová sběrnice, 16-ti bitová adresová sběrnice, možnost využít maximálně 64 kb paměti Programovatelné mikrokontrolery Řídicí počítače embedded v současné době již jen ty nejjednodušší řídicí počítače verze: Podzim 2013 Správa paměti a její virtualizace 23

Základní principy překladu LA FA Jednoduché segmenty Intel 8086 Procesor 8086 má 16 bitů datovou sběrnici a navenek 20 bitů adresy. 20 bitů je ale problém. Co s tím? Řešením jsou jednoduché segmenty Procesor 8086 má 4 tzv. segmentové registry Adresa je tvořena adresou segmentu 16-bitů a adresou uvnitř segmentu (offset) 16-bitů. Výsledná FA se tvoří podle pevného pravidla: (segment<<4)+ offset Problém: Aplikace může měnit segmentové registry, není ochrana paměti Prostředek, jak používat větší paměť než dovoluje systém Někdy se hovoří o mapování malý logický adresní prostor se promítá do většího FAP Příkladem je v současnosti využití PAE zvětšení rozsahu adres z 32 bitů na 36 bitů Opačná situace nastává, když LAP je větší než FAP 32-bitová CPU generuje 32-bitové logické adresy 32 bity adresovaný FAP je 4 GiB Obvykle je v počítači méně Zde nastupuje potřeba virtualizace Využívá rozšíření FAP o úseky na vnější paměti verze: Podzim 2013 Správa paměti a její virtualizace 24

Segmentace obecný princip Podpora uživatelského pohledu na LAP Program je kolekce segmentů Každý segment má svůj logický význam: hlavní program, procedura, funkce, objekt a jeho metoda, proměnné, pole,... Základní úkol převést adresu typu (segment, offset) na adresu FAP Tabulka segmentů Segment table, ST Je uložena v paměti Zobrazení 2-D (segment, offset) LAP do 1-D (adresa) FAP Položka ST: base počáteční adresa umístění segmentu ve FAP, limit délka segmentu Sqrt Subroutine Zásobník Main program Pracovní pole Segment-table base register (STBR) verze: Podzim umístění 2013 ST v paměti Správa paměti a její virtualizace 25

verze: Podzim 2013 Správa paměti a její virtualizace 26 Hardwarová podpora segmentace s limit base Tabulka segmentů CPU s d base d < ano + limit ne Výjimka "Chyba segmentace" Fyzická paměť

Vlastnosti segmentace Výhody segmentace Segment má délku uzpůsobenou skutečné potřebě minimum vnitřní fragmentace Lze detekovat přístup mimo segment, který způsobí chybu segmentace výjimku typu segmentation fault Lze nastavovat práva k přístupu do segmentu Operační systém požívá větší ochrany než aplikační proces Uživatel nemůže ohrozit operační systém Lze pohybovat s daty i programem v fyzické paměti posun počátku segmentu je pro aplikační proces neviditelný a nedetekovatelný Nevýhody segmentace Alokace segmentů v paměti je netriviální úloha Segmenty mají různé délky. Při běhu více procesů se segmenty ruší a vznikají nové. Problém s externí fragmentací Režie při přístupu do paměti Převod na lineární adresu se opírá o tabulku segmentů a ta je také v paměti Při změně segmentového registru nutné načíst položku z tabulky Častá změna segmentů (po pár instrukcích) časově náročná verze: Podzim 2013 Správa paměti a její virtualizace 27

verze: Podzim 2013 Správa paměti a její virtualizace 28 Dynamické přidělování více souvislých sekcí "Díra" = blok neobsazené paměti Procesu se přiděluje díra, která jeho požadavek uspokojí Díry jsou roztroušeny po FAP Evidenci o sekcích udržuje JOS Kde přidělit oblast délky n, když je volná paměť rozmístěna ve více souvislých nesousedních sekcích? First fit první volná oblast dostatečné velikosti rychlé, nejčastější Best fit nejmenší volná oblast dostatečné velikosti neplýtvá velkými děrami Worst fit největší volná oblast zanechává velké volné díry Nákladné nutno prohledat celý seznam volných děr

verze: Podzim 2013 Správa paměti a její virtualizace 29 Problém fragmentace Obecný problém Externí (vnější) fragmentace Celkové množství volné paměti je sice dostatečné, aby uspokojilo požadavek procesu, avšak prostor není souvislý, takže ho nelze přidělit Interní (vnitřní) fragmentace Přidělená díra v paměti je o málo větší než potřebná, avšak zbytek je tak malý, že ho nelze využít Redukce externí fragmentace pomocí setřásání Přesouvají se obsahy úseků paměti s cílem vytvořit (jeden) velký souvislý volný blok Použitelné pouze při dynamické relokaci Při absolutních adresách v paměti by bylo nutno přepočítat a upravit všechny adresy v instrukcích Problém s I/O: S vyrovnávacími pamětmi plněnými z periferií (zejména přes DMA) nelze autonomně hýbat, umisťují se proto do prostoru JOS

To je dnes vše. Otázky? verze: Podzim 2013 30