Upravnik virtualnega pomnilnika


Fizi�ni ali resni�ni pomnilnik ra�unalnika je organiziran kot zaporedje bytov, ki so o�tevil�eni  od 0 do �tevila, ki pove zgornjo mejo pomnilnika (minus 1).
 
Logi�ni pomnilnik (tudi virtualni pomnilnik) je pogled programa na pomnilnik. Naslovi virtualnega pomnilnika so o�tevil�eni od 0 do zgornje meje naslovljivega prostora.

  Virtualni naslovni prostor je unikaten naslovni prostor, na voljo posameznemu procesu.

 Normalno imajo procesi NT 2GB privatnega naslovnega prostora, operacijski sistem pa preostalih 2GB.

V nekaterih primerih imamo vklju�eno opcijo, ki omogo�a velikost 3GB uporabni�kega naslovnega prostora na ra�un sistemskega
 
 
 
 

 


 
 
Za primerjavo si oglejmo, kako je organizirana uporaba virtualnega naslovnega prostora pri Windows 98 in Windows ME.

Tudi v tem primeru imamo 4GB virtualnega naslovnega prostora, od tega 2GB za vsak proces. Preostalih 2GB je razdeljenih med sistem (1GB), in souporabne sekcije (shared memory sections, 1GB).

Zna�ilnost 1GB souporabnega prostora je, da lako vanj pi�e katerikoli proces (win32) in to v uporabni�kem re�imu.

Pri Windows 2000 so souporabne pomnilni�ke sekcije znotraj privatnega naslova procesa,kar je bolj varno.


 
Slika prikazuje podrobnej�o razdelitev sistemskega naslovnega prostora (v klasi�nem primeru, ko imamo za to 2GB prostora)

Procesne tabele strani in direktorij strani opisujejo preslikavo virtualnih naslovov.

Mno�ici virtualnih strani, ki je reziden�na v fizi�nem pomnilniku, pravimo delovna mno�ica (working set). Pri NT poznamo dve vrsti delovnih mno�ic: sistemsko delovno mno�ico in procesno delovno mno�ico.

 


 
Resni�ni pomnilnik je obi�ajno precej manj�i od virtualnega. Zato mora sistem za upravljanje z virtualnim pomnilnikom izvajati predvsem dve nalogi:

Preslikavati podmno�ice virtualnih naslovov na realne pomnilni�ke lokacije.
 

Prepisovati vsebino dela realnega pomnilnika na disk, ko pride sistem do stanja, da je realnega pomnilnika manj, kot bi ga potreboval. Kasneje lahko tako shranjen del pomnilnika spet prepi�e v realni pomnilnik (memory swapping).


 
Da bi bilo prepisovanja na disk in nazaj �immanj, je virtualni naslovni prostor razdeljen v bloke enake dol�ine, imenovane strani.

 Podobno je fizi�ni pomnilnik razdeljen na okvirje strani (page frames). Strani virtualnega pomnilnika, ki se nahajajo v fizi�nem pomnilniku in so takoj dostopne, so veljavne strani. Strani, ki so shranjene na disku ali niso takoj dostopne, so neveljavne strani. 

�e neka nit dostopa do neveljavne strani, pride do izpada strani (page fault). V tem primeru nalo�i sistem v pomnilnik stran, ki je povzro�ila napako, in �e nekaj strani v njeni okolici.

Ko  je zapolnjen �e ves fizi�ni pomnilnik, pride do zamenjave strani po principu LRU (Least Recently Used) oziroma FIFO (First in-First out). Prva strategija je uporabljena na enoprocesorskih, druga pa na ve�procesorskih sistemih. 

Uporabni�ke aplikacije uporabljajo 32-bitne virtualne naslove. Vsakemu virtualnemu naslovu ustreza sistemska struktura PTE (Page Table Entry), ki vsebuje fizi�no adreso, dodeljeno temu virtualnemu naslovu.


 
Tabele strani torej vsebujejo PTE. Te imajo dve polji: Takoimenovani PFN (Page Frame Number), ki pove  stran, kjer se nahajajo podatki, ter vrsto zastavic, ki opisujejo status in za��ito strani.

Izgled strukture PTE pri implementaciji Windows NT na Intelovi arhitekturi.


 
Elementi PFN (Page Frame Numbers) so sicer fiksnih dol�in, vendar je njihovo stanje odvisno od stanja strani. Glede na to stanje imajo posamezna polja v PFN razli�en pomen.

 
Vsak proces ima en direktorij strani (Page directory), ki ga sestavljajo elementi PDE (Page Directory Entries) 

Posamezni PDE ka�e na neko tabelo strani danega procesa. Takih tabel je ve�, saj se tvorijo po potrebi med izvajanjem procesa.

Imamo tabele strani, ki opisujejo sistemski naslovni prostor, in tabele strani, ki opisujejo privatni naslovni prostor procesa.


 
Primitivi, ki jih uporablja upravnik navideznega pomnilnika, so sekcije  (section objects).  Take sekcije uporablja en proces, lahko pa so v souporabi ve� procesov. 

Tako  Windows NT omogo�a koncept souporabljenega pomnilnika (shared memory). Po tem konceptu lahko dolo�eno stran, ki je enaka v  virtualnih naslovnih prostorih dveh ali ve� procesov, le-ti vidijo in souporabljajo.

Windows NT zagotavlja mehanizem za��ite, ki prepre�uje, da ne bi en proces nehote pokvariln vsebine naslovnega prostora drugega.

V primeru souporabnih pomnilni�kih sekcij zagotavlja to mehanizem ACL (Access Control List), ki dovoljuje poseg v souporaben pomnilnik le poobla��enim procesom.
 
 
 
 
 
 

 


 
 
Dinamika seznamov strani.

Okvirji strani prehajajo med seznami strani na ve� na�inov:

Upravnik pomnilnika lahko zahteva (zaradi varnosti). izpraznjeno stran (zero page), lahko pa mu zado��a �e prosta (�e ne zbrisana) stran.

Strani, ki so spro��ane s strani procesov, se vra�ajo v seznam "standby", �e niso bile spremenjene, sicer pa kon�ajo najprej v seznamu spremenjenih strani, dokler jih sistem (modified page writer) ne zapi�e na disk. Ta zapisovalec se zbudi, �e postane seznam spremenjenih strani predolg ali pa �e postaneta seznama prostih oziroma zbrisanih strani prekratka.

kak�na je razlika med soft in hard page fault