You are on page 1of 14

OPERACINĖS SISTEMOS

VIRTUALI ATMINTIS
8 paskaita.
Įvadas
• Visi kreipiniai į atmintį proceso ribose pateikiami
loginiu adresu, kuris dinamiškai transliuojamas į
fizinį adresą vykdymo metu. Tai reiškia, kad
procesas gali būti pašalintas iš atminties į diską ir
savo vykdymo metu gali būti skirtingose atminties
vietose.
• Procesas gali būti padalintas į dalis (puslapius,
segmentus), kurie ne būtinai talpinami
pagrindinėje atmintyje vienu nepertraukiamu
bloku. Toks mechanizmas yra palaikomas dėl
dinaminio adresų transliavimo, naudojant
puslapių ir segmentų lenteles.
Virtuali atmintis
• Tokiu būdu, mes galime teigti, kad visų proceso puslapių
ar segmentų būvimas pagrindinėje atmintyje vienu metu
nėra būtinas.

Panagrinėkime, kaip tai gali įvykti. Paprastumo dėlei


puslapį ar segmentą vadinsime bloku.
Proceso talpinimas atmintyje
• OS pradeda talpinti procesą nuo bloko, kuriame
yra programos pradžia.
• Proceso dalis patalpinama į pagrindinę atmintį
yra vadinama rezidentine proceso dalimi.
• Proceso apdorojimo metu visi kreipiniai vyksta tik
į rezidentinę proceso dalį.
• Naudojant puslapių ir segmentų lenteles, visada
galima nustatyti ar blokas į kurį kreipimasi yra
pagrindinėje atmintyje ar ne.
Puslapinė organizacija
Puslapio numeris Poslinkis

P M Valdymo Kadro numeris


bitai

Bitas P - nurodo, ar duotas puslapis yra pagrindinėje atmintyje


ar ne.
Bitas M - nurodo, ar buvo padaryti duomenų pakeitimai
puslapyje ar ne.
Valdymo bitai - gali būti skirti apsaugai arba bendro naudojimo
plotui puslapio lygmenyje.
Adresų transliavimas puslapinėje
organizacijoje
Bazinis adresų transliavimo mechanizmas tai transliavimas
virtualaus adreso į realų.

• Vykdant procesą startinis jo puslapio lentelės adresas


saugomas registre
• Puslapio numeris iš virtualaus adreso naudojamas kaip
elemento indeksas, kuriame ieškomas atitinkamas kadro
numeris.
• Po to šis numeris apjungiamas su poslinkiu iš virtualaus
adreso tam, kad gauti mus dominantį realų atminties
ląstelės adresą.
Adresų transliavimas puslapinėje
organizacijoje
Puslapių lentelės
• Daugelyje sistemų kiekvienam procesui yra viena puslapių
lentelė.
• Tačiau kiekvienas procesas gali naudoti gana didelį virtualios
atminties kiekį. Pavyzdžiui VAX architektūroje kiekvienas
procesas gali turėti 231=2 Gb virtualios atminties. Naudojant
29=512 Kb puslapio dydį, mums reikės iki 222 įrašų puslapio
lentelėje kiekvienam procesui. Suprantama, kad tiek atminties
skirti procesų lentelėms būtų neefektyvu.

• Todėl daugelyje atveju procesų lentelės saugomos ne realioje,


bet irgi virtualioje atmintyje. Tai reiškia, kad pačios puslapių
lentelės yra puslapinės organizacijos objektai.
Puslapių lentelės
• 32 bitų adresacija. Poslinkis 12, Puslapiams: 20

0 0 1 1 ...

220
32 bitai/ 8= 4 Baitai
Adresas=32 bitai
220 * 4 Baitai= 4MB

0
Puslapių lentelės
• Kai kurie procesoriai naudoja dviejų lygmenų schemą,
skirtą didėms puslapių lentelėms.
• Tokioje schemoje egzistuoja puslapių lentelių katalogas,
kuriame kiekvienas įrašas atitinka nuorodą į puslapių
lentelę.
• Tokiu būdu:
jei katalogo dydis X,
maksimalus puslapio dydis Y,
tai procesas gali būti sudarytas iš XxY puslapių.
Dviejų lygmenų hierarchinė puslapių
lentelė (32-bitų adresacija)
2132 Pav.
0 2232 2 3 4 5 6 … 100

1 2 3

2 22

1 2 3

2
32
1925 Pav.
0 1 2 3 4 5 6 … 100

0 1 2 3 4 … 100
padėk

1
2
3 Padėklas
9 eil 0 1 2 3 ... 10
… 0
100 1
Eilių 2
3

10
Adresų transliavimas dviejų lygmenų
puslapinėje
organizacijoje

You might also like