Doteraz sme hovorili o instrukciach a operandoch, neskor blokoch a teraz sa presunieme na stranky. Stranka je totiz pamatova jednotka OS, ktora nadobuda velkost od 512 - 8KB. Je stale mensia ako subor, ktory moze mat az niekolko giga a zaroven je kontrolovana OS a nie uzivatelom, ci pamatovym radicom. Virtualna pamat je tiez pod kontrolou OS.

Virtualny priestor je rozdeleny na tzv. pages, ktore sa priraduju jednotlivym procesom. Fyzicka pamat je zase rozdelena do rovnako velkych ramcov, tzv. frames. Velkost stranky je rovnaka ako velkost ramca. Stranky su teda mapovane do ramcov a tvoria suvisly prostor virtualnej pamate, teda virtualny adresovy priestor. Rozdiel oproti cache pamatiam je, ze v pripade VP, nie su vsetky stranky mapovane do ramcov a teda VA priestor nie je podmnozinou PA priestoru. Korenspopndujuce ramce su navyse vo fyzickej pamati rozne umiestnene. Stranka nie je len "jednotkou mapovania" ale aj jednotkou prenosu medzi diskom a hlavnou pamatou.

Kazdy proces, ktory v OS bezi, ma svoju vlastnu tabulku stranok a ta sa mu javi ako linearna pamat. Pamat, ktoru ma proces k dispozicii, nie je obmedzena fyzickou velkostou instalovanej pamate. Bez virtualnej pamate by musel operacny system pridelit aj pamat, ktoru proces v skutocnosti nevyuzije, alebo by ju vyuzil az neskor. Metody spravy pamati zabezpecuju optimalnu vymenu pamatovych stranok, medzi fyz. pamatou a diskom. Malo pouzivana cast pamate tak vobec nemusi zavedena vo fyz. pamati.
Pri zlom dimenzovani realnej operacnej pamate, moze dojst k strate vypoctoveho vykonu (ping pong efekt ako u cache).
Vo VP maju stranky vzdy rovnaku velkost a preto sa da setrit miestom (fragmentacia). Ak proces narasta, tak sa vymenia nepouzivane stranky, ak to nestaci, tak sa stranky odswapuju na disk. Stranky k swapovaniu vybera LRU.
Teraz, stranky sme odswapovali a co ak teraz tie stranky potrebujeme? Ak nenajdeme data v tabulke stranok, tak dostaneme Page Fault. Ziadana stranka sa nacita z disku do prazdneho ramca v pamati, prenos sa deje prostrednictvom DMA. Ked je DMA ukoncene, tak vysle signal prerusenia a updatuje sa tabulka stranok procesu. Pri prepnuti spat na povodnu ulohu, su pozadovane data v hl. pamati - teda stranka sa nacitala. A v pripade, ze nemame dostatok pamate, tak uvolnime ramec tak, ze stranku s dirty bitom naleziacu programu zapiseme na disk a tabulku aktualizujeme.
Co robit, ak je pamat prilis mala?


Co robit, ak je pamat prilis velka?
Pokial proces bezi, tak cela jeho tabulka musi byt vo fyzickej pamati. A ak je pamat prilis velka (napr. 4GB), tak mame problem. Pamat bud uplne zahltime, alebo sa tam TLB vobec nevojde. Riesenie
- viacurovnove strankovanie
- inverzna tabulka stranok
- segmentacia
Viacurovnove strankovanie vyzaduje 3 pristupy do pamate. Ak nenajdem polozku v 1. tabulke, tak pokracujem na nizsiu uroven. Virtualna adresa opat obsahuje page No., offset a este jeden offset d, ktory adresuje fyzicku pamat. ERROR - FIX



V pripade pouzitia segmentou je fyziky pamatovy priestor rozdeleny do segmentov - blokov s roznou velkostou. Segment je skupina po sebe nasledujucich pamatovych miest, ktore mozu menit svoju velkost. Segment vzdy zaujima suvisle miesto vo fyz. pamati. Adresy v segmente su relativne voci zaciatku segmentu.
Data v segmentovej a strankovej tabulke sa fragmentuju externe alebo interne. Externa fragmentacia je typicka pre segmentovanie. Absolutny adresovy priestor je v tomto pripade k dispozicii hned po splneni poziadavku, ale nie je suvislo obsadzovany. Interna fragmentacia je typicka pre strankovanie a teda alokovana cast pamate moze byt vacsia, ako sa pozaduje.