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).
![]() |
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:
|
![]() |
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. |