Viz přednáška 09_2012 ZOS. Program větší než dostupná fyzická paměť => mechanismus překrývání (overlays). Jako řešení tohoto problému se dnes nejčastěji používá právě virtuální paměť. 

Překrývání (overlays)

Program – rozdělen na moduly tak, aby se daly postupně zavádět jednotlivé části do paměti, která je menší než celková paměť potřebná pro běh aplikace. (analogie s koberci)

Start – spuštěna část 0, při skončení zavede část 1…

Časté zavádění některých modulů

Více překryvných modulů + data v paměti současně

Moduly zaváděny dle potřeby (nejen 0, 1, 2…)

Mechanismus odkládání (jako odkládání procesů)

Zavádění modulů zařizuje OS

Rozdělení programů i dat na části – navrhuje programátor (Např. vytváření DLL)

Vliv rozdělení na výkonnost, komplikované

Pro každou úlohu nové rozdělení

Virtuální paměť

Potřebujeme rozsáhlý adresový prostor

Ve skutečné paměti je pouze část adresového prostoru

Jinak by to bylo příliš drahé

Zbytek může být odložen na disku

Fyzická paměť slouží jako cache virtuálního adresního prostoru procesů

Proces – používá virtuální adresy

Pokud požadovaná část VA prostoru je ve fyzické paměti, tak MMU převede VA => FA, přístup k paměti

Pokud požadovaná část není ve fyzické paměti, OS si ji musí přečíst z disku I/O operace – přidělení CPU jinému procesu

Většina systémů virtuální paměti používá stránkování

Program používá virtuální adresy

Musíme rychle zjistit, zda je požadovaná adresa v paměti – pokud ano, převedeme VA na FA

Musí být co nejrychlejší, děje se při každém přístupu do paměti

VAP – stránky (pages) pevné délky. Délka je obvykle mocnina 2, nejčastěji se jedná o 4KB, běžně 512B – 8KB

Fyzická paměť – rámce (page frames) stejné délky. Rámec může obsahovat PRÁVĚ JEDNU stránku. Na známém místě v paměti pak musí být TABULKA STRÁNEK. Ta poskytuje mapování virtuálních stránek na rámce.

Součástí PCB (tabulka procesů) – určuje, kde leží jeho tabulka stránek

Velikost záznamu v tabulce stránek je 32 bitů kde vyšších 20 bitů určuje číslo stránky a nižších 12 bitů určuje offset

Číslo rámce má pak 20 bitů (takže max. 2^20 stránek)

Výpočet adresy

Je dána VA(p1)=100. Určete FA. Tabulka stránek je:

Číslo stránky

Máme-li více procesů, každý má svou vlastní tabulku stránek.

Virtuální adresu rozdělíme na číslo stránky a offset. 

Str = VA div 4096 (dělení)

Offset = VA mod 4096 (zbytek po dělení)

Převod pomocí tabulky stránek – převedeme číslo stránky na číslo rámce

tab_str[0] = 1 (pro stránku 0 je číslo rámce 1) 

Z čísla rámce a offsetu sestavíme fyzickou adresu:

FA = 4196 v daném případě

V reálném systému dělení znamená rozdělení na vyšší a nižší bity adresy (proto mocnina dvou)

Nižší bity – offset

Vyšší bity – číslo stránky

Výpadek stránky způsobí výjimku, zachycena OS pomocí přerušení

OS iniciuje zavádění stránky a přepne na jiný proces

Proces může pokračovat

Pokud daná stránka procesu není namapována na určitý rámec ve fyzické paměti a chceme k ní přistoupit, dojde k výpadku stránky – vyvolání přerušení operačního systému. Operační systém se postará o to, aby danou stránku zavedl do nějakého rámce ve fyzické paměti, nastavil mapování a poté může přístup proběhnout.

Vnitřní fragmentace (část přidělené paměti je nevyužita), vnější fragmentace (souvislý paměťový prostor mapován do nesouvislých částí paměti)…

Tabulka stránek procesu – mapuje číslo stránky na číslo fyzického rámce, obsahuje i další informace jako např. příznaky ochrany. 

Ochrana – v tabulce stránek jsou pouze ty stránky, ke kterým má proces přístup. Při přepnutí na jiný proces přepne MMU na jinou tabulku stránek.

velikost tabulky stránek – pomůže víceúrovňová struktura

rychlost převodu VA -> FA – pomůže TLB (Transaction Look-aside Buffer)

dosáhneme zpomalení jen 5 až 10%

Přepnutí kontextu na jiný proces – problém (vymazání cache, …); než se TLB opět zaplní – pomalý přístup

Invertovaná tabulka stránek – řešení problému velikosti celé tabulky, obsahuje položky pro každý fyzický rámec. Omezený počet – dán velikostí RAM – VA je 64 bitů, 4KB stránky, 256MB RAM – 65536 položek. Forma položky: (id procesu, číslo stránky).

Při výpadku stránek nastupují algoritmy nahrazování stránek: FIFO, …

 The physical address of the Page Directory in use is stored in a control register

 The Directory field within the linear address determines the entry in the Page

Z FJP o rozdělení paměti:
