Základy operačních systémů Správa paměti Jakub Yaghob
Hierarchie paměti
Správce paměti Část OS, která spravuje paměťovou hierarchii se nazývá správce paměti (memory manager) informace o volné/plné části paměti přidělování paměti výměna paměti s diskem
Přiřazení adresy Při překladu Při zavádění Za běhu je již známo umístění procesu generuje se absolutní kód Při zavádění OS rozhodne o umístění generuje se kód s relokacemi Za běhu proces se může stěhovat i za běhu relokační registr
Překlad, spojování, zavedení .obj .obj .lib .obj .dll .obj .dll .h .h staticky dynamicky .obj .c CC Link .exe Loader proces .obj
Overlay Proces potřebuje více paměti než je skutečně k dispozici Programátor rozdělí program na nezávislé části a část nezbytnou pro všechny části
Výměna (swapping) Proces musí být v hlavní paměti, aby jeho instrukce mohly být vykonávány procesorem OS uživatelský prostor proces 1 proces 2 hlavní paměť záložní paměť
Překlad adresy Proces pracuje v logickém (virtuálním) adresovém prostoru HW pracuje s fyzickým adresovým prostorem logický adresový prostor fyzický adresový prostor překlad adresy
Spojité přidělování - 1 Jeden paměťový oddíl OS limit relokace uživatelský prostor LA < FA +
Spojité přidělování - 2 Více paměťových oddílů - pevné OS OS 100 K
Spojité přidělování - 3 Více paměťových oddílů - volné OS OS OS OS OS 100 K 100 K 100 K 100 K 100 K 200 K 200 K 200 K 200 K 200 K 150 K 150 K 150 K 150 K 150 K 150 K 150 K 150 K 150 K 150 K
Informace o obsazení paměti Bitmapa bloky pevné velikosti Spojový seznam seznam volných bloků spojování uvolněného bloku se sousedy
Algoritmy na přidělování - 1 First-fit první volný dostatečné velikosti Next-fit jako first-fit začíná se na poslední prohledávané pozici Best-fit nejmenší volný dostatečné velikosti Worst-fit největší volný
Algoritmy na přidělování - 2 First-fit + rychlý - občas rozdělí velkou díru Next-fit jako first-fit ale rychlejší Best-fit - pomalý (prohledává celý seznam) + nechává velké díry vcelku - nechává malinké díry, do kterých se nic nevejde Worst-fit - rozdělí velké díry
Algoritmy na přidělování – Buddy systém Paměť rozdělena na bloky o velikosti 2n Bloky stejné velikosti v seznamu Při přidělení zaokrouhlit na nejbližší 2n Pokud není volný, rozštípnou se větší bloky na příslušné menší velikosti Při uvolnění paměti se slučují sousední bloky (buddy)
Fragmentace paměti Externí Interní Sesypání volný paměťový prostor rozdělen na malé kousky pravidlo 50% Interní nevyužití celého přiděleného prostoru Sesypání pouze při přiřazení adresy za běhu nebo segmentaci
Virtuální paměť - 1 Procesy pracují s virtuální adresou Adresa se převádí na fyzickou Převod nemusí vždy existovat Obraz virtuální paměti je částečně v hlavní paměti a částečně na pomocné paměti Výhody Dříve zejména iluze větší paměti Dnes hlavně ochrana
Virtuální paměť - 2 Virtuální Adresový Prostor Fyzický Adresový Převod adresy OS
Virtuální paměť - 3 Stránkování Segmentace podporovaná všemi velkými CPU a OS jednorozměrný VAP Segmentace dnes pouze Intel IA-32 dvojrozměrný VAP
Stránkování - 1 VAP rozdělen na úseky stejné délky – stránky velikost je mocnina 2 FAP rozdělen na úseky stejné délky jako stránky – rámce převod adres stránkovací tabulkou příznak existence mapování výpadek stránky
Stránkování - 2 VA FA p d f d Stránkovací tabulka p f
Stránkování - 3 oddělené VAP VAP Proces A VAP Proces B FAP ST A ST B
Stránkování - 4 sdílená paměť VAP Proces A VAP Proces B FAP ST A ST B
Stránkovací tabulky Leží v hlavní paměti Problémy: Velké Pomalé
Víceúrovňové stránkování VA FA p1 p2 d f d ST1 p1 f ST2 ST2 p2 f
TLB lokalita chování programů asociativní paměť Platné Stránka Dirty Ochrana Rámec 1 125 RW 654 44 132 485 12 55 R X 142 111 54 108 88 543
Nulaúrovňové stránkovací tabulky Využívá pouze TLB TLB řízena i OS Oblíbené u 64-bitových CPU UltraSPARC III
Inverzní stránkovací tabulky FAP menší než VAP 64-bitové CPU IA-64 VA FA p d f d hash table p f p f hash fn p f
Výpadek stránky výjimka procesoru uložit stav CPU (kontext) zjistit VA kontrola platnosti adresy a práv nalezení volného rámce zrušit mapování na nalezený rámec pokud je vyhazovaný rámec vyhazován, spustit ukládání na disk načíst z disku požadovanou stránku do rámce zavést mapování obnovit kontext
Algoritmy pro výměnu stránek Optimální stránka NRU (Not Recently Used) FIFO Druhá šance Hodiny LRU (Least Recently Used) Náhodná
Optimální stránka Optimální stránka v okamžiku výpadku stránky vybírám stránku, na níž se přistoupí za největší počet instrukcí nedá se implementovat
NRU (Not Recently Used) každá stránka příznaky A (Accessed) a D (Dirty) typicky implementovány HW lze simulovat SW jednou za čas se smažou všechna A při výpadku rozdělím stránky podle A, D vyberu stránku z nejnižší neprázdné třídy A D 1 2 3
FIFO, druhá šance FIFO Druhá šance vykazuje anomálie (Belady) úprava FIFO pokud A=1, zařadím na konec FIFO nevykazuje anomálie
Hodiny modifikace druhé šance jedna x dvě ručičky využívána ve Win2000, Linuxu G H F A E B D C
LRU (Least Recently Used) Stránky často používané v předchozím krátkém časovém úseku budou v nejbližších okamžicích znovu použity lze implementovat v HW 64-bitový čítač, zápis při použití matice n x n bitů podle počtu rámců při použití rámce k nastavit v matici řádek k na 1 a vynulovat sloupec k vybírám řádek s nejnižší binární hodnotou
NFU (Not Frequently Used) SW simulace LRU SW čítač ke každé stránce jednou za čas projdu všechna A a přičtu je k odpovídajícím čítačům vybírám stránku s nejnižším čítačem nezapomíná modifikace – stárnutí (aging) čítače
Alokační strategie Lokální Globální každý proces má svoji množinu rámců a v ní provádí algoritmy pro výměnu pracovní množina Globální procesy sdílí všechny rámce
Implementace stránkování znovuspuštění instrukce sdílení stránek odstranění položky TLB při rušení mapování
Segmentace - 1 program rozdělen na segmenty VAP dvojrozměrný – (s, d) část programu se stejnými vlastnostmi (kód, data, zásobníky) mají různé délky mohou měnit svoji délku za běhu VAP dvojrozměrný – (s, d) FAP jednorozměrný převod adresy segmentovou tabulkou příznak existence mapování výpadek segmentu
Segmentace - 2 VA FA s d + Segmentová tabulka s b
Segmentace - 3 FAP vypadá stejně jako při spojitém přidělování OS
Výhody/problémy segmentace při výpadku nutné vyměnit celý segment a ty mohou být velké lze sesypat segmenty ve FAP nelze mít segment větší než FAP
Kombinace segmentace+stránkování odstraňuje nevýhody segmentace neprovádí se výpadky segmentů VAP Segment data Lineární Adresový Prostor Fyzický Adresový Prostor PAG SEG VAP Segment kód OS OS