Virtuální adresový prostor.
Thursday, May 30, 2013
8:26 AM
ZOS
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
Virtuální adresy
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í
Mechanismus stránkování (paging)
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.
Tabulka stránek
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
Velikost stránky = 4096B.
Je dána VA(p1)=100. Určete FA. Tabulka stránek je:
Číslo stránky
Rámec
--
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) 
tab_str[1] = 2 
tab_str[2] = -- stránka není namapována 
tab_str[3] = 0 
Pro VA = 100 je stránka 0, offset 100 => tedy rámec 1 
Z čísla rámce a offsetu sestavíme fyzickou adresu:
FA = rámec * 4096 + offset
FA = 1 * 4096 + 100
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
stránka není mapována
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
Po zavedení stránky OS upraví mapování (tabulku stránek)
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. 
Relokace = mapování VA na FA
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.
Problémy
velikost tabulky stránek – pomůže víceúrovňová struktura
rychlost převodu VA -> FA – pomůže TLB (Transaction Look-aside Buffer)
HW cache
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, …
OPT, LRU, NRU, second chance, aging, clock
Each active process must have a Page Directory assigned to it. However, there is no
need to allocate RAM for all Page Tables of a process at once; it is more efficient to
allocate RAM for a Page Table only when the process effectively needs it.
 The physical address of the Page Directory in use is stored in a control register
named cr3 .
 The Directory field within the linear address determines the entry in the Page
Directory that points to the proper Page Table. The address's Table field, in turn,
determines the entry in the Page Table that contains the physical address of the page
frame containing the page. The Offset field determines the relative position within the
page frame (see Figure 2-7). Because it is 12 bits long, each page consists of 4096
bytes of data.
Z FJP o rozdělení paměti:
From <[link]> 