Virtuálna pamäť: Rozdiel medzi revíziami
Smazaný obsah Přidaný obsah
typografia |
jazyk |
||
Riadok 17:
Veľa aplikácií však požaduje prístup k informáciám (kód alebo dáta), ktoré nemôžu byť uložené vo fyzickej pamäti. Toto je častý jav pri operačných systémoch, ktoré dovoľujú súčasný viacnásobný beh procesov (multitasking). Existuje viacero spôsobov, ako zabezpečiť riešenie tohto problému:
Virtuálna pamäť robí prácu programátorov oveľa jednoduchšou. Nezáleži na tom koľko pamäte aplikácia potrebuje, bude sa správať ako keby mala prístup k hlavnej pamäti požadovanej veľkosti a jej dáta budú uložené do virtuálneho pamäťového priestoru. Programátor može kompletne ignorovať potrebu správy presunu dát medzi rôznymi druhmi pamäte. Ak však programátor chce zabrániť častému swapovaniu, mal by venovať pozornosť minimalizáciu počtu blokov, ku ktorým sa pristupuje často.
Riadok 32:
Virtuálna pamäť je zvyčajne implementovaná použitím stránok. Procesy sú umiestnené na disku. Keď chceme vykonávať proces, presunieme ho do pamäte, nemusíme ho však do pamäte presúvať celý, ale len jeho časť. Za tento proces je zodpovedný tzv. stránkovač - pager. Stránkovač predpokladá, ktoré stránky budú pre beh procesu potrebné a presunie ich do pamäti, čím sa zníži réžia potrebná na výmenu procesov v pamäti.
Ku správnej implementácii virtuálnej pamäte je potrebné zabezpečiť mapovanie (prepojenie) virtuálnej pamäte k fyzickej pamäti, a to tak, aby bolo možné rozpoznať, ktoré dáta patria do fyzickej pamäte, aby ich bolo možné rozlíšiť a swapovať. Operačný systém ukladá adresnú prekladaciu tabuľku, mapovanú z virtuálnych čísiel stránok na fyzickú, v dátovej štruktúre
V stránke najnižšie poradie bitov virtuálnej adresy je zachované a užívané priamo ako najnižšie poradie bitov aktuálnej fyzickej adresy.
Pre
Ak sa proces nikdy neobráti na stránku, ktorá je označená ako neplatná, teda potrebuje len tie stránky, ktoré sú skutočne obsiahnuté v pamäti, prebehne tak, ako keby bol celá obsiahnutý v pamäti.
Ak sa proces obráti na stránku, ktorá nie je v pamäti a je označená ako neplatná,
# Skontroluje sa vnútorná tabuľka rep tento proces, aby sa zistilo, či odkaz na danú stránku bol platný.
# Ak odkaz bol neplatný, proces sa ukončí. Ak odkaz bol platný, ale stránka nie je v pamäti, začne sa jej presun.
Riadok 50:
Takýmto spôsobom je možné odštartovať i proces, ktorý nemá v pamäti žiadnu stránku. Vtedy sa jedná o čisté stránkovanie na žiadosť, stránka sa nikdy nepresúva do pamäte, pokiaľ nie je požadovaná.
1.Tabuľka stránok: obsahuje bit pre označenie platnosti/neplatnosti stránky alebo dodatočné bity ore ochranu prístupu k stránke.
2.Periférna pamäť: uchováva stránky, ktoré nie sú momentálne v operačnej pamäti – swapovacie zariadenie alebo swapovací priestor.
Pri zvýšenom počte procesov, ktoré sú naraz spustené môže nastať situácia, keď niektorý z procesov požaduje zavedenie stránky z
Dôležitým problémom je
Algoritmus FIFO
Optimálny algoritmus je algoritmus, ktorý nahradzuje stránku, ktorá nebude potrebná najdlhšiu dobu, čo zaručuje najmenší možný počet výpadkov stránok pri danom pevnom počte rámcov. Veľmi ťažko sa však realizuje, pretože vyžaduje znalosť budúcich odkazov na stránky.
Algoritmus LRU je aproximáciou optimálneho algoritmu, kde blízku budúcnosť nahradzujeme nedávnou minulosťou.
Prideľovanie rámcov je taktika, ktorá určuje, koľko rámcov bude pridelených ktorému procesu. Obyčajne čím menej rámcov vlastní proces, tým viac výpadkov stránok vyvoláva, čo spomaľuje chod systému. Minimálny počet rámcov, ktoré majú byť pridelené procesu, vyplýva z maximálneho počtu rámcov, na ktoré sa je možné pri vyvolaní jednej inštrukcie odvolať. Ako algoritmy sa používajú algoritmus spravodlivého rozdelenia medzi procesy a algoritmus proporcionálneho
V prípade spravodlivého rozdelovania rámcov medzi procesy sa počet pre m rámcov a n procesov určuje zaokrúhlením výrazu m/n. Toto rozdelenie neberie do úvahy veľkosť procesu, čo
Pri proporcionálnom prideľovaní každý proces dostáva rámce podľa svojej veľkosti. Ak celkový počet rámcov je m, požiadavky všetkých procesov S, požiadavky procesu i na pamäť sú si pridelíme ai rámcov procesu pi, kde ai je približne: ai = (si/S) . m.
Dôležitým faktorom je tiež rozhodnutie, či pri nahradzovaní stránky sa táto stránka vyberá lokálne
== Segmentácia na žiadosť ==
V prípade chýbajúcej hardware-ovej podpory umožňujúcej efektívny systém stránkovania na žiadosť, používa sa virtualizačná technika segmentácie na žiadosť. Program sa v tomto prípade zavádza do pamäte po segmentoch, ktoré sú predmetom výmeny. Pri odkaze na segment, ktorý nie je v pamäti, sa vygeneruje prerušenie pre výpadok segmentu. Správa pamäte nájde pre požadovaný segment vhodný úsek v pamäti a presunie ho tam. Využíva pritom striasanie. Segmentácia na žiadosť má silnejšie väzby na štruktúru programu a minimalizuje vnútornú fragmentáciu. Nevýhodou je nebezpečenstvo vonkajšej fragmentácie.
Je ale tiež možné, virtuálna stránka bola označená za nedostupnú z dôvodu, že
== Implementácia VM v OS Linux ==
Riadok 82:
Mapovanie virtuálnych adries na fyzické adresy sa vykonáva prostredníctvom linuxového kernelu. Pri vytvorení nového procesu (pomocou fork()), kernel vytvára novú sadu tabuliek stránok (page tables) pre vytvorený proces. Referenčné adresy pre proces sú virtuálnymi adresami. Nie sú nutne namapované na zhodné fyzické adresy v pamäti. Virtuálna adresa je odovzdaná správe pamäte (MMU), ktorá ju skonvertuje na fyzickú adresu založenú na tabuľkách vytvorených kernelom. Teda, dva rôzne procesy sa môžu odkazovať na rovnakú adresu (napr. 0x08329), ale v skutočnosti sa odkazujú na dve odlišné adresy v závislosti od tabuliek stránok.
Linuxový kernel rozdeľuje 4GB virtuálneho adresného priestoru procesu na dve časti – 3GB a 1GB. Nižšie 3GB virtuálneho adresného priestoru procesu sú
[[Kategória:Informatika]]
|