Téma 8 Virtuální paměť Obsah. Principy irtuální paměti. Stránkoání na žádost. Politika náhrad stránek a algoritmy ýběru oběti. Algoritmus LRU a jeho aproximace. Přiděloání prostoru procesům, problém ýprasku 6. Praconí množiny 7. Otázka elikosti stránek Principy irtuální paměti Virtuální paměť Separace LAP a FAP Ve FAP se nacházejí pouze potřebné části programů a dat LAP může být ětší než FAP Adresní prostory lze sdílet Lze efektiněji ytářet procesy Častá synonyma irtuální paměť logická paměť, LAP reálná paměť fyzická paměť, FAP ABOSS (J. Lažanský) erze: Podzim Techniky stránkoání Virtuální paměť Techniky implementace stránkoání na žádost (Demand Paging), segmentace na žádost (Demand Segmentation) Líné metody, nedělá nic dopředu stránkoání při spuštění Program je celý ložen do paměti při spuštění předstránkoání (Prepaging) Nahráá stránku, která bude praděpodobně brzy použita přednahrání (Swap prefetch) Při ýpadku stránky nahraj i sousední stránky čištění (Pre-cleaning) Změněné rámce jsou uloženy na disk době, kdy systém není ytížen ABOSS (J. Lažanský) erze: Podzim... Virtuální paměti je ětší než reálná Virtuální paměť ABOSS (J. Lažanský) erze: Podzim Virtuální paměť ABOSS (J. Lažanský) erze: Podzim Virtuální paměť
Procesy e irtuální paměti Při startu procesu zaede OS do FAP pouze tu část programu (LAP) kam se iniciálně předáá řízení Pak dochází k dynamickým ýměnám částí LAP e FAP po stránkách či po segmentech na žádost, tj. až když je jejich obsah referencoán Pro překlad LA FA Tabulkou stránek (PT) nebo tabulkou segmentů (ST) Každá položka PT/ST obsahuje příznak indikující přítomnost příslušné stránky (segmentu) e FAP příznak alid/inalid Sadu stránek procesu, které jsou e FAP nazýáme rezidentní množinou (resident set) Odkaz mimo rezidentní množinu způsobuje přerušení ýpadkem stránky/segmentu (page /segment fault ) Proces, jemuž chybí stránka, označí OS jako pozastaený OS spustí I/O operace k zaedení chybějící stránky do FAP (možná bude muset napřed uolnit některý rámec, iz politika nahrazoání dále) Během I/O přenosu běží jiné procesy; po zaedení stránky do paměti se aktualizuje tabulka stránek, náš proces je označen jako připraený a počká si na CPU, aby mohl pokračoat ABOSS (J. Lažanský) erze: Podzim Princip lokality Virtuální paměť Odkazy na instrukce programu a data toříají shluky Vzniká časoá lokalita a prostoroá lokalita Proádění programu je s ýjimkou skoků a olání podprogramů sekenční Programy mají tendenci zůstáat po jistou dobu rámci nejýše několika procedur Většina iteratiních postupů předstauje malý počet často opakoaných instrukcí, Často zpracoáanou strukturou je pole dat nebo posloupnost záznamů, které se nacházejí sousedních paměťoých lokacích Lze pouze dělat odhady o částech programu/dat, která budou potřebná nejbližší budoucnosti Hlaní paměť se může zaplnit V takoém případě, něco umístit do FAP znamená, že nejdříe musíme něco z FAP odložit ABOSS (J. Lažanský) erze: Podzim Obyklá skladba logické paměti jednoho procesu Zásobník Halda (heap) Data Kód Logická paměť procesů Zásobník Halda (heap) Sdílená knihona Data Kód Sdílení irtuální paměti Sdílené stránky Stránkoání na žádost Zásobník Halda (heap) Sdílená knihona Data Kód Virtuální paměť 6 Kdy stránku zaádět? (Fetch policy) Při překladu LA FA se zjistí, že stránka není e FAP (bit Valid/Inalid položce PT) Pokud je inalid, generuje se přerušení typu ýpadek stránky Při inicializaci procesu jsou šechny bity nastaeny na inalid Základní politika: Vlastní stránkoání na žádost (Demand paging) Stránka se zaádí jako důsledek přerušení typu ýpadek stránky Výhoda: Málo I/O operací Neýhoda: Na počátku běhu procesu se tak toří série ýpadků stránek a proces se pomalu rozbíhá ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 7 ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 8
Stránkoání na žádost ylepšení Předstránkoání (Pre-paging) Sousední stránky LAP obykle sousedí i na sekundární paměti, a tak je jich zaádění poměrně rychlé bez elkých přejezdů diskoých hlaiček Platí princip časoé lokality proces bude praděpodobně brzy odkazoat blízkou stránku LAP Zaádí se proto najednou íce stránek Vhodné zejména při inicializaci procesu Výhoda: Menší počet ýpadků stránek Neýhoda: Často se zaádějí i nepotřebné stránky Čištění (Pre-cleaning) Pokud má počítač olnou kapacitu na I/O operace, lze spustit proces kopíroání změněných stránek na disk Výhoda: uolnění stránky je rychlé, pouze nahrání noé stránky Neýhoda: Může se jednat o zbytečnou práci, stránka se ještě může změnit ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 9 Stránkoání Politika nahrazoání Co činit, pokud není olný rámec e FAP Např. okamžiku zýšení stupně paralelismu (noý proces) Musí se yhledat hodná stránka pro náhradu (tz. oběť) Politika nahrazoání (Replacement Policy) někdy též politika ýběru oběti Kterou stránku obětoat a yhodit z FAP? Kritérium optimality algoritmu: minimalizace počtu (či frekence) ýpadků stránek Určení oběti: Politika nahrazoání říká, jak řešit problémy typu Kolik rámců procesu přidělit? Kde hledat oběti? Jen mezi stránkami procesu, kterému stránka ypadla nebo lze ybrat oběť i mezi stránkami patřícími ostatním procesům? Některé stránky nelze obětoat Některé stránky jsou zamčené, tj. neodložitelné, typicky V/V yronáací paměti, řídicí struktury OS,... Je-li to třeba, musí se rámec ypsat na disk ( swap out ) Nutné, pokud byla stránka od sého předchozího swap in modifikoána. K tomu účelu je řádku PT tz. dirty (modified) bit, který je automaticky ABOSS (J. Lažanský) erze: Podzim (hardwaroě) nastaoán při zápisu do stránky (rámce). Virtuální paměť /i (Valid/Inalid) bit tabulce stránek (PT) Stránka Stránka Stránka Stránka Stránka Stránka Logická paměť ABOSS (J. Lažanský) erze: Podzim ABOSS (J. Lažanský) erze: Podzim Čísla rámců 6 7 9 i i i Tabulka stránek /i bity 6 7 8 9 n Stránka Stránka Stránka Stránka Stránka. Fyzická paměť Algoritmy ýběru oběti Virtuální paměť Požadujeme minimální frekenci ýpadků stránek Volba hodného algoritmu Algoritmus se yhodnocuje tak, že se pro zadanou posloupnost referencí na stránky (tz. řetězec referencí) se modeluje a počítá množstí ýpadků stránek při daném počtu rámců Pro naše ukázky použijeme řetězec referencí,,,,,,,,,,, Očekáané choání: kalitatiní graf Počet ýpadků stránky 8 6 8 6 6 Počet rámců Virtuální paměť
ABOSS (J. Lažanský) erze: Podzim Algoritmus First-In-First-Out (FIFO) rámce (e FAP mohou být až stránky) Reference: Číslo rámce rámce (e FAP mohou být až stránky) Reference: Číslo rámce Beladyho anomálie (oproti očekáání: íce rámců íce ýpadků) FIFO jednoduché, ašak neefektiní I staré stránky se použíají často Obsahy rámců Obsahy rámců Výpadky tučně 9 ýpadků Výpadky tučně ýpadků Virtuální paměť Algoritmus LRU (Least Recently Used) Predikce založená na nedáné historii Předpoklad: Stránka, která nebylo dlouho odkazoána, nebude odkazoána ani blízké budoucnosti Oběť stránka, která nejdelší dobu nebyla odkazoána LRU se poažuje za nejlepší aproximaci optimálního algoritmu Příklad: rámce Reference: Číslo rámce Obsahy rámců Výpadky tučně 8 ýpadků ABOSS (J. Lažanský) erze: Podzim Optimální algoritmus Oběť stránka, která bude odkazoána ze šech nejpozději (tj. po nejdelší dobu se do ní odkaz nepoede) Budoucnost šak neznáme lze jen přibližně predikoat Lze užít jen jako poronáací standard pro ostatní algoritmy Příklad: rámce Díky zadanému řetězci referencí známe budoucnost Reference: Číslo rámce Obsahy rámců Algoritmus LRU implementace 6 ýpadků (Lepšího ýsledku dosáhnout nelze) Virtuální paměť Řízení hodinami Ke každé stránce (rámci) je hardwaroě připojen jeden časoací registr, do nějž se při přístupu do stránky okopírují systémoé hodiny. Při hledání oběti se použije stránka s nejstarším časoým údajem Přesné, ale náročné jak hardwaroě tak i softwaroě prohledáání časoacích registrů Zásobníkoá implementace Použíá se obousměrně ázaný zásobník čísel referencoaných stránek Při referenci přesune číslo stránky na rchol zásobníku Při určoání oběti se nemusí prohledáat, oběť je na dně zásobníku Přesun na rchol zásobníku je elmi náročný a hardwaroě obtížně řešitelný, softwaroé řešení nepřichází úahu Nutno dělat při každém přístupu do paměti! FIFO ýpadků; optimální algoritmus 6 ýpadků ABOSS (J. Lažanský) erze: Podzim Virtuální paměť ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 6
Aproximace algoritmu LRU Algoritmus Druhá šance Příznak přístupu (Access bit, reference bit) a-bit Spojen s každou stránkou, po swap-in =, při referenci rámce hardwaroě nastaoán na Jako oběť se olí stránka s a = (existuje-li). Algoritmus druhá šance Použíá a-bit, FIFO seznam zaedených stránek a tz. mechanismus hodinoé ručičky Každá reference rámce přidá žiot Každé ukázání hodinoé ručičky způsobí, že rámec ztratí jeden žiot Obětí se stane stránka, na niž ukáže hodinoá ručička a rámec nemá žádný žiot, který by mohl ztratit Fakticky FIFO, ašak z ýběru oběti se ynecháá stránka aspoň jednou referencoaná od posledního ýpadku G/ H/ F/ A/ E/ B/ D/ C/ Při ýpadku stránky se zkoumá rámec, na nějž ukazuje ručička. Akce záisí na hodnotě a-bitu: a=: ezmi tuto stránku jako oběť a=: ynuluj a, ponechej stránku paměti a posuň ručičku o pozici dále na další stránku aplikuj tatáž praidla Numerické simulace choání tohoto algoritmu ukazuje, že je elmi blízký opradoému LRU ABOSS (J. Lažanský) erze: Podzim Modifikace aproximoaného LRU Virtuální paměť 7 Modifikoaná druhá šance NRU not recently used Použíá edle a-bitu i bit modifikace stránky (dirty bit, d-bit) Časoač praidelně maže a-bit, proto je možná stránka s nastaeným d-bitem a nuloým a-bitem Pořadí ýběru (da):,,, Priorita d-bitu šetří nutnost ýpisu modifikoané stránky na disk Stárnutí (aging) a-bit je rámci zoleného časoého okna praidelně ukládán a staré hodnoty a-bitu jsou posouány Časoé okno omezeno HW architekturou Pokud je historie přístupu ke stránce {,,,,}, pak to odpoídá číslu () Nejmenší hodnota značí stránku, která byla použita nejpozději e snímaném časoém okně ABOSS (J. Lažanský) erze: Podzim Čítací algoritmy Virtuální paměť 8 Čítač referencí Ke každému rámci je přiřazen čítač Při swap-in se nuluje S každou referencí rámce se obsah čítače inkrementuje Algoritmus LFU (Least Frequently Used) obětí je stránka s nejmenší hodnotou čítače (nejméně často odkazoaná stránka) Algoritmus MFU (Most Frequently Used) obětí je stránka s nejětší hodnotou čítače Zdánliě podiné, ašak myšlenka je takoá, že stránka s nejmenším čítačem byla praděpodobně práě zaedena do paměti ( souislosti s pre-pagingem ) a ještě nestačila být referencoána ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 9 ABOSS (J. Lažanský) erze: Podzim Virtuální paměť
Přiděloání rámců procesům Lokální nahrazoání Proces má pený počet rámců a stránka se nahrazuje z jeho množiny rámců Globální nahrazoání Proces může použít liboolný rámec paměti Principy přiděloání Pené přiděloání Procesu je přidělen pený počet rámců (buď zcela fixně, nebo úměrně elikosti jeho LAP) Prioritní přiděloání Procesy s yšší prioritou dostanou ětší počet rámců, aby běžely rychleji Způsobí-li proces ýpadek, je mu přidělen rámec dosud patřící procesu s nižší prioritou Přiděloání rámců procesům () Obyklé politiky Pený počet rámců Podhodnocení potřebného počtu rámců způsobí elkou frekenci ýpadků Nadhodnocení má za následek snížení stupně paralelismu Proměnný počet rámců přiděloaných globálně (tj. z rámců dosud patřících liboolnému procesu) Snadná a klasická implementace, užíáno mnoha OS (UNIXy) Nebezpečí ýprasku (thrashing) mnoho procesů s malým počtem přidělených rámců mnoho ýpadků Proměnný počet rámců přiděloaných lokálně (tj. z rámců patřících procesu, který způsobil ýpadek) Tz. praconí množiny (working sets) průběžně se zjišťuje posloupnost odkazů na stránky a na základě této historie se určuje způsob ýběru obětí Velmi hodná technika, jen je třeba průběžně sledoat paměťoé potřeby jednotliých procesů a přiděloat jim odpoídající počet rámců ABOSS (J. Lažanský) erze: Podzim ABOSS (J. Lažanský) erze: Podzim Problém ýprasku, Thrashing Virtuální paměť Jestliže proces nemá paměti dost stránek, generuje ýpadky stránek elmi často nízké yužití CPU OS má dojem, že může zýšit stupeň multiprogramoání, protože se stále se čeká na dokončení V/V operací (odkládání a zaádění stránek) Tak se dostáají do systému další procesy a situace se zhoršuje Thrashing počítač nedělá nic jiného než ýměny stránek Využití CPU Stupeň multiprogramoání Virtuální paměť ABOSS (J. Lažanský) erze: Podzim Virtuální paměť Jak reálně řídit irtuální paměť? Kolik rámců dáat procesu k jeho běhu? Model praconí množiny procesu P i (working set) WS i Množina stránek, kterou proces referencoal při posledních n přístupech do paměti (n ~. tz. okno praconí množiny) WS i se čase mění Praconí množina je aproximace prostoroé lokality procesu Jak to ale určoat? Při každém přerušení od časoače lze např. sledoat a-bity stránek procesu, nuloat je a pamatoat si jejich předchozí hodnoty. Jestliže a-bit bude nastaen, byla stránka od posledního hodinoého tiku referencoána a patří do WS i Časoě náročné, může interferoat s algoritmem olby oběti stránky, ašak účelné a často použíané Pokud suma šech WS i (počítaná přes šechny procesy) přeýší kapacitu dostupné fyzické paměti, zniká ýprask (thrashing) Ochrana před znikem ýprasku např. jeden proces se pozastaí ABOSS (J. Lažanský) erze: Podzim Virtuální paměť
ABOSS (J. Lažanský) erze: Podzim Model praconí množiny (working set) Implementace (aproximace) Pomocí časoače a a-bitů jednotliých stránek Např. pro n= : Časoač přerušuje každých. časoých jednotek O každé stránce se paměti eidují bity Při přerušení se okopírují a-bity do eidenční tabulky a a-bit Je-li aspoň jeden bit položce eidenční tabulky =, stránka je e WS Možné zpřesnění: O každé stránce bitů, přerušení každých časoých jednotek Větší režie paměti, častější úpraa eidenční tabulky ABOSS (J. Lažanský) erze: Podzim Způsob programoání a ýpadky Virtuální paměť Technika programoání aplikací může ýznamně olinit efektiitu double data[][]; Předpokládáme, že double zabírá 8 bytů Každý řádek pole zabírá KB a je uložen jedné stránce elké KB Postup : for (j = ; j <; j++) for (i = ; i < ; i++) data[i][j] = i*j; Potenciálně až x = 6 ýpadků Postup : for (i = ; i <; i++) for (j = ; j < ; j++) data[i][j] = i*j; Jen potenciálních ýpadků Je tedy dobré ědět, jak se data ukládají paměti a účelně k nim přistupoat Virtuální paměť 7 Velké stránky Malý počet ýpadků Velká nitřní fragmentace Pokud délka stránky je ětší než délka programu, še je e FAP a není potřeba žádná irtualizace ABOSS (J. Lažanský) erze: Podzim Otázka elikosti stránek Malé stránky Velikost stránky P Velký počet malých stránek Stránka se často najde paměti málo ýpadků Čím menší stránky, tím je menší nitřní fragmentace, ašak klesá efektiita diskoých operací při ýměnách stránek (mnoho přenosů malých bloků) stránek íce a roste potřebná elikost tabulky stránek a s tím spojená náročnost yhledání hodné oběti při ýpadku stránky Veliká tabulka stránek (PT) PT trale (neodložitelně) e FAP zabírá mnoho místa a zmenšuje efektině yužitelnou paměť Umístění PT e irtuální paměti způsobuje až dojnásobný počet ýpadků stránek (samotný přístup do PT může způsobit ýpadek!) ABOSS (J. Lažanský) erze: Podzim Frekence ýpadků stánek Mnoho malých stránek e FAP Méně stánek, ašak mnohé obsahují nepotřebná data Stránkoání e Windows XP Celý proces jedné stránce Virtuální paměť 6 Stránkoání na žádost s použitím,,prepaging do paměti se zaádí chybějící stránka a stránky okolní Použíá se technika praconích množin (WS) Z měření WS se určuje minimální počet stránek, které musí mít proces e FAP Klesne-li objem olné paměti systému pod jistý práh, automaticky se přehodnotí WS s cílem obnoit dostatečný objem olné paměti Z FAP se odstraňují stránky procesům, které mají hlaní paměti íce než minimum určené metodou WS Přesto se praxi setkááme u Windows XP s nedostatkem paměti ýpraskem Doporučené minimum fyzické paměti 8 MB Reálně použitelné minimum 8 MB Virtuální paměť 8
Dotazy ABOSS (J. Lažanský) erze: Podzim Virtuální paměť 9