Algoritmy nahrazování stránek paměti
· Pokud všechny rámce obsazené a nastane výpadek stránky, je nutné některou stránku vyhodit a rámec uvolnit · Vyhození - Pokud byla stránka modifikována, zapíše se na disk - Pokud oproti kopii na disku nebyla modifikovaná, bude pouze uvolněna · Otázka - kterou stránku vyhodit? Algoritmus FIFO · Udržujeme seznam všech stránek v pořadí, ve kterém byly zavedeny · Vyhazujeme nejstarší stránku (je možné, že se vyhodí stránka, která se bude brzy potřebovat) Algoritmus MIN/OPT · V paměti je množina stránek, každá stránka je označena počtem instrukcí, po který se k ní nebude přistupovat · V okamžiku výpadku stránky se vybere stránka s nejvyšším označením · Algoritmus je optimální, tj. vybere se stránka, která bude zapotřebí nejvzdáleněji v budoucnosti · Není realizovatelný (neexistuje způsob, jakým by OS mohl zjistit, která stránka bude zapotřebí jako příští) Algoritmus Least Recently Used nejdele nepouzita (pohled do minulosti) � princip lokality { stranky pouzivane v poslednich instrukcich se budou pravdepodobne pouzivat i v nasledujicich { pokud se stranka dlouho nepouzivala, pravdepodobne nebude brzy zapotrebi � Vyhazovat zbozi, na kterem je v prodejne nejvice prachu = nejdele nebylo pozadovano � Obtizna implementace � sw reseni (neni pouzitelne) { seznam stranek v poradi referenci { vypadek { vyhozeni stranky ze zacatku seznamu { zpomaleni cca 10x, nutna podpora hw � hw reseni { citac � MMU obsahuje citac (64bit), pri kazdem pristupu do pameti zvetsen � kazda polozka v tabulce stranek { pole pro ulozeni citace � odkaz do pameti { obsah citace se zapise do polozky pro odkazovanou stranku � vypadek stranky { vyhod�� se stranka s nejnizsim cislem Algoritmus Not-Recently-Used · Bit R - nastaven na 1 při čtení nebo zápisu do stránky · Bit M - nastaven na 1 při zápisu do stránky; označuje, že se stránka má při vyhození zapsat na disk · Na začátku mají všechny stránky R=0, M=0, bit R je OS nastavován periodicky na 0 · 4 kategorie: Třída 0: R=0, M=0 Třída 1: R=0, M=1 Třída 2: R=1, M=0 Třída 3: R=1, M=1 · Algoritmus vyhodí stránku z nejnižší neprázdné třídy, výběr mezi stránkami ve stejné třídě je náhodný · Jednoduchý, efektivně implementovatelný, ale nevýkonný Algoritmus Second Chance · Vychází z algoritmu FIFO · Vyhledává nejstarší stránku, která nebyla referencována v poslední době · Pokud byly všechny referencovány => FIFO { zabranit vyhozeni casto pouzivane { dle bitu R nejstarsi stranky R = 0 ... stranka je nejstarsi, nepouzivana { vyhodime R = 1 ... nastavme R=0, presuneme na konec seznamu stranek (jako by byla nove zavedena)
Algoritmus Clock Optimalizace datovych struktur algoritmu Second Chance � Stranky udrzovany v kruhovem seznamu � Ukazatel na nejstarsi stranku { "rucicka hodin\ � Vypadek stranky { najit stranku k vyhozeni � Stranka kam ukazuje rucicka { ma-li R=0, stranku vyhodime a rucicku posuneme o jednu pozici { ma-li R=1, nastavime R na 0, rucicku posuneme o 1 pozici, opakovani,.. � Od SC se lisi pouze implementaci � Varianty Clock pouzivaji napr. BSD UNIX
Algoritmus Aging · Každá položka má pole „stáří“, na počátku = 0 · Při každém přerušení časovače - posun pole „stáří“ o 1 bit vpravo, zleva se přidá hodnota bitu R, nastavení R na 0 · Při výpadku stránky se vyhodí stránka, jejíž pole „stáří“ má nejnižší hodnotu