A program • • • • • • • •
Operációs rendszerek Memória menedzselés
Vadász
Memória, címtartomány fogalmak A címkötdés és címleképzés kérdései A tárcsere Memóriamenedzselési osztályok, valós MM Virtuális MM koncepció Lapozós rendszer Szegmentálós rendszer NT esettanulmány
1
Vadász
A memória (tár)
A címtartományok
• Erforrás, amit
• Miután a memória címekkel rendelkez rekeszek készlete, fontos fogalom a címtartomány fogalom • A címtartomány a címek készlete (szemben a memóriával, ami rekeszek készlete)
– Igényelni (kérni, allokálni) kell (a processzek igénylik) – Védeni kell (ellenrzött elérések legyenek)
• Címekkel rendelkez cellák (rekeszek: bájtok, szavak, rekordok) készlete, • Egy-egy cella elérése (load-store) a címére való hivatkozással történhet • A fizikai memória hierarchikus szintekbe szervezett:
• A címtartomány modellje
• A memória modellje
0 1
– Processzorbeli-processzor közeli gyorsítótár – Központi tár – Másodlagos tár Vadász
2
0. cella 1. cella
n-1 n 3
Logikai címtartományok
n-1. cella n. cella Vadász
4
A fizikai címtartományok
• A processzekhez logikai címtartományok tartoznak (Logical Address Space)
• A CPU a fizikai memóriából tud felhozni, letárolni • A fizikai memóriához fizikai címtartományok tartoznak (Physical Address Space)
– Az szemszögükbl nézve van saját processzoruk, – van saját (logikai) memóriájuk. – A processzekhez egy lineáris, folytonos címtartományt szoktunk képzelni.
– A címsín szélességétl függ, mekkora a fizikai címtartomány – Elképzelhet, hogy lehetséges fizikai címhez nem kötdik fizikai memória cella (fizikai címtartomány szakaszokhoz nem tartozik memória)
• Már a logikai címtartományokat is érdemes szakaszolni: – címek a kódnak, – az adatoknak, – a vermeknek. Vadász
5
Vadász
6
A címkötdés (Address Binding)
A címleképzések
• Adott egy cím. Vajon tartozik-e hozzá cella? Melyik? – Kötdés a fordítás során: abszolút cím a tárgymodulokban – Kötdés a link során: abszolút cím a végrehajtható (betölthet) programokban – Kötdés a betöltés (load) során: abszolút címek a processz kontextusban – Kötdés a futás során (dinamikus kötdés): logikai címek a kontextusban. • A logikai címek lehetnek relatív címek, vagy virtuális címek
• Vegyük észre, más-más a probléma (a címleképzés kiváltó oka) az alább esetekben: – Nagyobb a memória, mint a címtartomány (korai rendszerekben 16 bites címzésnél gond volt) (A eset) – A logikai címtartomány és a fizikai címtartomány nem esik egybe (B eset) – A memória kisebb, mint a címtartomány (C eset) – (Természetesen a B eset a másik kettvel együtt is felléphet.)
• A logikai címek és a fizikai címek közötti megfeleltetés (átalakítás) a címleképzés (mapping). Vadász
7
A címleképzések
8
A tárcsere (Swapping)
0
A
c
0 c n
Vadász
• Vegyük észre, a C esetben tárcserére van szükség (átfedés (overlay), virtuális memória). • Tárcserére akkor is szükség lehet, ha különböz processzek (rutinok) felváltva használják ugyanazt a fizikai memória részt.
B k
0 c
n
n q 0
0
C
0
c
0 c
c k
n
n
h
q n
n
Vadász
9
A memóriamenedzselés feladatai
Vadász
10
A memória allokálása
• A memória allokálás • A címleképzés segítése
• Mivel a memória erforrás, igényelni kell • A processzek az igénylk (allokálók)
– Ezt kiegészítve az esetleges tárcsere (swapping out – swapping in, paging out – paging in) segítése
– Ún. statikus allokálás: a processz születésekor, hogy a kontextusa számára legyen tárolási lehetség – Ún. dinamikus allokálás: processz élete során bvíti a rendelkezésére álló memóriát
• Az allokálás (mind a statikus, mind a dinamikus) az MM alrendszer egyik fontos feladata
Vadász
11
Vadász
12
A címleképzés
MM alrendszer osztályozások
• A mai rendszerekben a processzek kontextusában logikai címek vannak (többnyire virtuális címek) • A logikai cím fizikai címre való leképzését, közben a cím kötdés megoldását a MM alrendszer a hardver MMU egységével együtt oldja meg
• A virtuális címzés koncepciójú MM-tl (lásd késbb) megkülönböztetve, vannak valós címzés rendszerek – Fix partíciós és változó partíciós rendszerek
– A címleképzés – kötdés során gondoskodnak a védelemrl – Szükség esetén a ki-be mozgatásról (tárcserérl)
• Korai MM rendszerek, • Felvetett problémáik: címkötdés késleltetése (áthelyezés lehetsége), partíció kiválasztási stratégia (best-, worst-, next fit) címzés védelme. • Némely probléma ma is érdekes (lapozó eszköz foglaltság kezelés stb.)
– A program-fejleszt rendszerek által biztosított átfedési (overlay) technika a valós címzés rendszerekben is megengedte a fizika memóriánál nagyobb logikai memória (logikai címtartomány) használatát Vadász
13
A virtuális memória koncepció
– A processzek (meglehetésen nagy) virtuális címtartományt használhatnak • Állhat több résztartományból (régióból, szakaszból)
– Az MM a virtuális címekhez virtuális rekeszeket biztosít (a processzek számára átlátszó módon) • A virtuális cellák tartalma másodlagos tárolón mindig megtalálható, szükség esetén a fizikai memóriában is
– Mikor a processz egy virtuális címre hivatkozik, nem kell tördnie a címleképzéssel, sem a kötdéssel, sem a tartalom behozatalával. 15
A címkötdés
• A lehetséges virtuális címtartományt a címzési mód határozza meg (pl. 32 bites címzéshez 4 Gbájt) • Egy processz virtuális címtartománya ennél valószínleg kisebb • A lehetséges fizikai címtartomány a címsín szélesség adja, ez lehet nagy. • A fizikai memória (a használható fizikai címtartomány) – bár egyre n a gazdagépek memóriája – ennél is kisebb. Kisebb az összes processz virtuális memóriájánál. Vadász
16
Lapozó rendszerek (Paging) • Lapozós rendszerekben fix méret blokkokban történik a címleképzés • A virtuális címtartomány (vagy annak altartománya) fix méret szakaszokra van osztva • A virtuális memória fix méret blokkokra van osztva: ez a lap (page) • A fizikai memória ugyanolyan (fix) méret lapkeretekre (page frame) van osztva. • Lapozós rendszerekben a folytonos virtuális címtartománynak nem feltétlenül folytonos fizikai címtartomány fog megfelelni, nem folytonos címtartományra is lehet a leképzést végezni
• A taszképít (linker) a végrehajtható-betölthet programokba virtuális címeket épít • A processzek a kontextusukban a virtuális címeket használják • Dinamikus címleképzés van: Vaddress Dynamic_Map Raddress • Elfordulhat a leképzés során, hogy a leképzett cím nem érvényes (not valid): a virtuális cellához nincs fizikai cella kötve, az nincs a fizikai memóriában. – Ekkor ki-be mozgatás (tárcsere) szükséges Vadász
14
Virtuális címtartomány - memória
• Általános megoldást ajánl a címleképzés – kötdés problémára • Lényege:
Vadász
Vadász
17
Vadász
18
Lapozó rendszerek (Paging)
Lapozó rendszerek (Paging)
• (Tegyük fel: egy processz V címtartománya egy régióba tartozik, ezen belül folyamatos (bájtban mérve: 0-n)) • Egy virtuális cím formája: v = (p, o) ahol: p: a lap címe,
• Egy fizikai cím: ahol: f o
• Az o eltolás bitszélessége a lap/lapkeret mérettl függ. • A lap/lapkeret méret architektúra függ!
(értéke 0 - np közötti, ahol np megmondja, hány lapból áll a processz);
o:
r = (f, o) a lapkeret címe, az eltolás (offset).
eltolás a lapon belül.
(értéktartománya át kell fedje a lapot)
Vadász
19
A laptáblák (Page Map Table)
• Egy bejegyzés tartalma: – védelmi és állapot (state) bitek: • védelmi maszk (rwx stb.); • érvényességi (valid/present-absent) bit; • módosítás (dirty bit) jelz;
– lapkeret cím, – leíró a másodlagos tárolóhoz (cím és típus) (lehet ez a lapkeret cím mezben is).
21
Memória allokálás során
Vadász
22
Címleképzés lapozós rendszerben
• Statikus allokálás: készül(nek) laptábla (laptáblák), a szükséges számú bejegyzéssel • A bejegyzések tartalma kitöltdik – a kernel címtartományhoz tartozó bejegyzésekhez még a lapkeret címek is beíródhatnak, – a védelmi bitek és a másodlagos tároló leírók is kitöltdhetnek (leírók az image fájlra vonatkozhatnak, sok bejegyzésben not valid jelzi, nincs lapkeret rendelve a laphoz).
Base Address of Page Table b
Virtuális cím p
23
o
Page Table +
p b+p
f
• Dinamikus allokálás során a laptábla "kiegészül", új bejegyzésekkel bvül (a címtartomány n).
Vadász
20
Egy laptábla bejegyzés
• Minden (egy dimenziós címtartományú, egy régiós) processz számára biztosított egy laptábla. (Több régiós processz: régiónkénti laptábla!) • Ennek címe: egy regiszterben (több régiósnál regiszterekben). • A laptáblának annyi bejegyzése van, ahány lapból áll a processz (egy bejegyzést a p lapcím indexel).
Vadász
Vadász
+
Fizikai cím f o
Itt érthet meg a HW MMU szerepe! Az addíciók HW-esek kell legyenek! Vadász
24
A laphiba (Page Fault)
Kérdések, megoldandó dolgok
• Dinamikus címleképzés során a valid/present-absent bit jelzi: nincs a laphoz lapkeret rendelve. • Klasszikus kivételes esemény (exeption condition). A kezelje (Page Fault Handler) mködésbe lép. • Keres szabad lapkeretet, kilapoz, ha szükséges, belapozza a kérdéses lapot, majd visszatér. • Újra indulhat - most már sikeresen - a leképzés. • A laphiba egész “normális jelenség“. • A laphiba gyakoriság (Page Fault Rata) - jellemzje a processz életének. Vadász
• • • •
Mekkora kell legyen a laptábla? Hogy lehetne csökkenteni méretét? Hogy lehetne a címleképzést tovább gyorsítani? Meghatározandó a – belapozási stratégia • mely lapokat, mennyit hozzunk be egyidejleg?
– mennyiségi stratégia • egyidejleg hány lapkerete legyen/lehet egy processznek?
– kilapozási stratégia • mely lapok legyenek esélyesek kilapozásra?
– elhelyezési stratégia • nem a fizikai memóriára, hanem a másodlagos tárolóra
25
Vadász
Laptábla méret kezelés
26
Többszintes laptáblák
• Méretét meghatározza a processz bájtban mért címtartománya és a lapméret hányadosa: a lapban mért címtartomány. • Méretcsökkentés 1: lapméret növelése (HW korlát) • Méretkezelés: maga a laptábla is kilapozható. VAX/VMS megoldás. • Csökkentés 2.: többszint laptáblák: Intel: 2 szintes, Sun SPARC, Alpha: 3 szint, AMD x64: 4 szint. • Csökkentés 3.: Hasításos laptábla. IA64 • Csökkentés 4.: invertált laptábla. HP, IBM System 38.
Virtuális cím p1 p2 o 10
10
Második szint laptáblák 0 1 2 3
12
Els szint laptábla
b
+
0 1 2 3
... 1023
...
p2
1023
0 1 2 3
f
... 1023 Vadász
27
Hasításos (hashed) •
Fizikai cím
p
f
o
28
Invertált laptábla
Hash függvény: hasító, szétosztó függvény, különböz p, q stb. lapcímeket ugyanarra a hash címre képez
Virtuális cím
Vadász
o
• Címzés bitszélesség növekedéssel nem tud versenyt tartani a laptábla méret csökkentés. • Invertált tábla: bejegyzések lapkeretenként. Tartalmuk: – védelmi, módosítási maszk; – processz azonosító (pid); – a processz lapja (p).
hash
p
Vadász
f
q
• Leképzéshez: megnézni, adott processz adott lapja leképzett-e. • Nem szekvenciális keresés: hash módszerek. • Az ilyen rendszerekben asszociatív tár is!
r
29
Vadász
30
Címleképzés gyorsítás asszociatív tárral • Translation Lookaside Buffer a CPU-ban (TLB). Nem nagy méret. • Ennek egy bejegyzése: szinte ami a PMT egy bejegyzése. • Párhuzamos keresés a TLB-ben: címleképzés igen gyors, ha van találat. • Ha nincs találat: indul a normál laptáblás leképzés. (Ez eredményezhet laphibát. ) • Az asszociatív tár tartalma frissítdik. • Pl.: MIPS R2000 stb. processzorai (SGI), Intel stb. Vadász
• A processzek hivatkozási lánca (Reference String): lapok sorozata. Elre megmondani nehéz. • Lehetséges behozási stratégiák (fetch policies): – Igény szerinti (Demand Paging). Egyszer. • laphiba esetén belapozzuk a kérdéses lapot • eleinte magas laphiba ráta, késbb remélhet az "egyensúly"
– Szükséges és még néhány ("szomszédos" lap) • a "lokalitás elve" érvényesülhet
– "Mohó" belapozás • a szükséges és "sok" további. Megjósolható?
31
A mennyiségi stratégia
– A processz munka-lapkészlete (munkahalmaz): egy idablakban a bennlév lapjainak halmaza. – Nincs laphiba, ha minden lapja a “pillanatnyi” munkakészlethez tartozik. – A “pillanatnyi“ helyzet valójában: egy idablak a hivatkozási láncon. – A munkakészleten eredetileg lapkészletet értettek, ma már – a munkakészlet lapkeret készlet. – A munkakészletet a processz élete során "igazíthatjuk" (adjustment). 33
Kilapozási algoritmusok
• A munkakészlet modellel kapcsolatban a kilapozási problémák eljönnek: amikor belapozandó egy processz egy lapja, kilapozásra – a processz munkakészletébl válasszunk? (Lokális) – Más processzek munkakészletébl is? (Globális)
• Lokális kilapozáshoz: a munkakészlet nagyságát dinamikusan változtatják (határok között), a laphiba rátától függen. • A processzek munkakészleteinek egyensúlyát remélik (ez a Balance Set).
Vadász
34
• A belapozási sorrend a meghatározó: minél régebben lapoztak be egy lapot, annál esélyesebb a kilapozásra. • Nyilvántartás egy láncolt listán: elejérl lapoznak ki, belapozott lap a végére. • Anomália: a régen belapozott, de most is használt, a gyakran használt lapokra.
a bekövetkez lapigény nem jósolható igazán; lapok belapozási ideje; lapok belapozási sorrendje; hivatkozások gyakorisága; Lapok nem írhatósága – írhatósága, módosították-e; magának az algoritmusnak a “költsége“.
Vadász
32
FIFO algoritmus
• Page Replacement Algorithms • Amik befolyásolhatnak: – – – – – –
Vadász
Globális - lokális stratégiák
• Ha nincs stratégia: remélik az egyensúlyt • A munkakészlet (Working Set) modell (Denis, 1970)
Vadász
Belapozási algoritmusok
35
Vadász
36
Második esélyes FIFO
NRU (LRU) algoritmusok
• • • •
Körkörös láncolt listán a belapozott lapok. Laponként egy hivatkozás bit. “Óramutató“ mutatja a lista “elejét“. Kilapozáshoz: ha a “mutatott“ lap hivatkozás bitje bebillentett, akkor azt törlik, és a mutató tovább lép. Ha nem (nem volt hivatkozás rá), akkor kilapozzák. • Mire az óramutató körbejár, újra bebillenhet a hivatkozás bit: kap egy második esélyt a lap. Ha nem billen, menthetetlenül kilapozódik. • Belapozott lap felvevdik a körre. • Ilyen a mach default memóriamenedzsere. Vadász
• Not (Least) Recently Used • Lokalitás elvbl: a mostanában nem használatos lapok esélyesek a kilapozásra. Az “id“ számít. • Láncolt listás nyilvántartás költséges volna! • Az “utolsó 8 id-intervallum históriája“: – referencia bájt léptetés jobbra intervallumonként, – hivatkozott lapnál 1, nem hivatkozottnál 0 lép be. – A referencia bájtok rendezésre adnak lehetséget: kisebb a bájt a kilapozásra esélyes lapoknál.
37
Vadász
NFU (LFU) algoritmusok
A szegmentálás
• Not (Least) Frequently Used • A hivatkozások gyakorisága számít, nem a hivatkozások ideje. • Anomália: régen nagy gyakorisági frekvenciával használt lapok kiszorítják az újakat. Idszerség is figyelembe veend. • Öregedés (aging) a számlálómezre ezen javít. • Költséges a megvalósítás, fleg a rendezés.
Vadász
• “Többdimenziós“ címtartományok: – – – – –
• • • •
a kódnak, az adat szekcióknak, a veremnek, az osztott kódnak, kernel régiónak stb.
A címleképzésben a blokkméret nem fix. A virtuális cím: v = (s,d) Processzenként szegmens tábla. Kevesebb bejegyzés. Ki-be söprés (swapping in-out), ha szükséges.
39
Vadász
Szegmensenkénti címleképzés Base Address of Segment Table b
40
A stratégiák • Allokációs stratégia
Virtuális cím s
38
– egyidejleg szegmensnyit a fizikai memóriában
d
• Behozási stratégia Segment Map Table
– igény szerinti a szegmensre
+
s
b+s
m a
l
s'
+
• Kisöprési stratégia
Fizikai cím s' d
– LRU
• Elhelyezési stratégia s s' d a l m Vadász
szegmens szám szegmens cím diplacement (eltolás) cím a swap tárolón szegmens hossz státus (valid, rwx stb)
– First vagy next fit
41
Vadász
42
Szegmensenkénti leképzés vagy lapozás: lehetségek
A "swap" eszköz/fájl struktúra • A mai rendszerekben lehet
• Tiszta lapozó rendszerek (Pure Paging) • Tiszta szegmentáló rendszerek. • Szegmentáló és lapozó rendszerek. – – – –
– swap/paging device (a másodlagos tároló partíció), – swap/paging file (a másodlagos tároló a fájl), – mindkettt úgy foghatjuk fel, hogy lapméret blokkok sora.
Ekkor a “teljes“ kontextus ki-besöprdik, szegmensekre külön laptáblák, lapozás a szegmenseken belül. Ma ezek gyakoriak.
Vadász
• Akár szegmensenkénti leképzés, akár laponkénti leképzés van: swap/paging eszközrl/fájlról beszélünk. • Ami érdekes lehet: hogy menedzselik a swap/paging eszközön a szabad területet. 43
Klasszikus Unix swap eszköz
• A swap eszköz elején 4086- bájt hosszú bit-térkép (4096-10: 'SWAP_SPACE' füzér). – Ebbl: max 4086*8-1=32 687 lap menedzselhet egy eszközön. – Ez kicsi, ezért több swap eszköz lehet (ma max 8)
– egy bejegyzés: addr+hossz pár, szabad területet jelez.
• Foglalás: first-fit startégiával, a szabad terület elejére, a bejegyzést "igazítja" (el is tünteheti) • Felszabadítás: szomszédos szabad területek összefzésével
• Bebillentett bit ketts jelentése: – adott régió lapját ide lehet kilapozni, – újabb régió swap területe itt nem foglalható.
– ha eltte + utána szabad: a 2 bejegyzésbl 1-et csinál, – ha eltte vagy utána szabad: a bejegyzést igazítja
• Ne feledjük: csak az irható lapok/régiók számára foglanak helyet a swap eszközön/fájlon.
• Ne feledjük: csak az irható lapok/régiók számára foglanak helyet a swap eszközön/fájlon. 45
Az NT memóriamenedzselés • • • • • • • •
Vadász
46
Az NT MM virtuális
Virtuális, lapozós; Virtual Address Descriptor-okat (VAD) használ; TLB-t is használ; Kétszintes laptáblás (osztott memóriához + 1 szint); Lapkeret adatbázist is használ; Munkakészletet használ; Önálló taszk a kilapozó; Igény szerinti belapozós.
Vadász
44
Linux swap eszköz
• Adott a swap partíció, 0-n unitok (blokkok) • Adott a szabad területek térképe (map, map-entries): in core (esetleg a 0-ik blokkon)
Vadász
Vadász
• 32 bites címzés: 232 lineáris címtartomány (4GB) – A fels 2GB rendszer címtartomány, kernel módban látható (Pentium 1GB). – Az alsó 2GB taszkonként egyedi címtartomány (Pentium 3GB).
• Vannak lefoglalt V címtartomány szakaszok. – Statikus allokálás: mikor a taszk készül, akkor foglalják ezeket a szakaszokat. – Dinamikus allokálás (alloc, malloc, stack bvítés stb.)
47
Vadász
48
A Virtual Address Descriptorok
A címleképzés • Miután a VAD-on túl vagyunk, indul a TLB vizsgálat.
• A VAD a lefoglalt címtartományok leíróit (kezd-végcím, néhány további adat) tartalmazza, • bináris fa struktúrába rendezve (gyors keresés). • Hol van szerepe?
– TLB: kisméret asszociatív tár, 2 oszloppal • • • • •
– A címleképzés elején: elször a VAD struktúrát nézik, lefoglalt címterületre történt-e a hivatkozás. – A memória allokálásnál: új VAD leírót kell felvenni + VM-t hozzárendelni az új címtartományhoz. Ez súgja a 2 szintet: • Elször csak VAD leírót veszünk fel (alloc), • Amikor tényleg használni akarjuk az új mem-et (committing), elkészítjük a laptábla bejegyzéseket stb.
egyikben a VA fels 20bitje (párhuzamos keresés ebben), másikban a laptábla rekord (ld. késbb). Találat esetén nyer az ügy! Ha nincs találat: indul a “szokásos“ laponkénti leképzés. Ha változás van a Page Dir-ben vagy Page Table-kban, a TLB frissül.
– Leképzett fájl (Mapped File) létrehozásánál (ld. késbb). – Nincs szerepe a lapozásnál (ez már nem a címtartomány síkja!) Vadász
49
Laponkénti leképzés
10 bit
a Virtual Address Space fix méret része, a Virtual Memory fix méret blokkja. Létezik (összetett) lapcím, létezik lapon belüli eltolás (offset), a kett adja a VA-t.
10 bit
12 bit
Page Dir Index Page Table Index
Offset
A lapméret Az offset szélesség: 12 bit
Page Dir (Lapkatalógus)
Page Tables (Laptáblák)
212 = 4KB
A lapkatalógus méret (Taszkonként 1 db)
PD record
• Lapkeret (Page-frame): – – – –
50
Az NT 32 bites virtuális címe
• Lap (Page): – – – – –
Vadász
210 = 1024 bejegyzés Egy bejegyzése: 4 Byte
a RA-space fix méret része, a RM fix méret blokkja (belefér egy lap). Létezik lapkeret cím, a lapkeret cím és az eltolás (offset) adja a RA-t,
PT record
Egy laptábla méret (Taszkonként szükséges számú laptábla van) 210 = 1024 bejegyzés Egy bejegyzése: 4 Byte
Vadász
51
Egy laptábla bejegyzés tartalma
52
Laptábla bejegyzésben a címek
• Státusz bitek (érvényes, nem érvényes, prototípus laptábla index
• Lapkeret cím • Másodlagos tároló blokk cím • Prototípus laptábla index. Osztott memória-használathoz (akár klasszikus, akár leképzett fájl) további szint a prototípus laptábla. Miután ugyanazt a lapkeretet kell használni, nem indexelhetjük közvetlenül. Pl. ha kilapozzák, minden laptáblába be kellene írni, hogy érvénytelen, s ki tudja, hány taszk használja. Ilyenkor a prototípus laptáblában rögzítettek az védelmi bitek! Szerencsére mindez transzparens!
jelzésére)
• Védelmi bitek – – – – – – –
Vadász
Csak olvasható (read only) lap Teljes jogú (r/w) lap Csak futtatható (exec only) lap (spec. processzorhoz) Figyelt (guarded) lap (elérése kivételt generál) Tiltott lap (elérése kivételt generál) Zárolt lap (nem kilapozható) Módosításkor másolt (copy on write) lap (halogatott memória taktikához, ld. késbb)
• Címek Vadász
53
Vadász
54
Laponkénti leképzés
Halogatott gazdálkodási taktika
• Nincs találat a TLB-ben: • Veszik a lapkatalógus címét (regiszterben), • hozzáadják a VA fels 10 bites indexét: ez bemutat a katalógusba. • Veszik ennek bejegyzését: ez egy laptábla cím. Hozzáadják a VA második 10 bites indexét: ez mutat egy laptábla rekordra. • Veszik a tábla rekordját: – a státusból eldl: laphiba van-e. Indulhat a kezelje, ezt segíti a másodlagos tároló cím a rekordban ... – Nincs laphiba: vehet a rekordból a keretcím (további szint a prototípus laptábla esetén). • Keretcím és a VA offsettje adja a RA-t. Vadász
55
A leképzett fájl objektum
57
Keretállapotok és listák
Vadász
56
• Létezik lapkeret adatbázis (Page Frame Database), annyi bejegyzéssel, ahány lapkeret van. • Egy bejegyzés tartalma: – Érvényes (valid) keret: használatban van, benne egy lap. – Szabad (free) keret. Taszk exitjénél az MM a hozzá tartozó kereteket felszabadítja. – Nullázott (zeroed). Szabad és 0-kkal felülírt keretek. (A C2 biztonsági elírás követelménye). – Készenléti (standby) keret: már felszabadított, de még benne az érintetlenül hagyott adatok. Visszakérhetk belapozás nélkül, csak érvényesre kell állítani ket. Az átmeneti bit is bebillentett. – Módosított (modified) keret: írta a taszk, így ha ha lemond róla, elveszik tle és ki akarják osztani másik taszknak, eltte ki kell írni! Az átmeneti bit (transition flag) is bebillentett. – Hibás (bad) keret: megbízhatatlanul mködre ráírja az MM. – Visszamutató a taszk laptábla bejegyzésére (ahol értelmes). Vadász
58
A módosított lapíró
• Egy taszk egy laptábla bejegyzése nemcsak a lapkeretet címezi, hanem a lapkeret adatbázis bejegyzést is! Nemcsak érvényes, hanem módosított és készenléti lapkeretre is mutathat. • A visszamutató azért kell, mert ha az MM fel akar használni egy módosított vagy készenléti keretet, javítania kell a laptábla bejegyzést érvénytelenre. • Az MM a különböz állapotú kereteket 5 láncolt listán nyilvántartja! • Van szabad, készenléti, módosított, nullázott és hibás lista. • A nullázott, a szabad és a készenléti lista elemei az ún. felhasználható keretek.
Vadász
– PL. POSIX taszk-kreációban a gyermek kontextusa (kezdetben az adatok is) megosztódnak a szüljével: a lapjaik ilyen lapbejegyzéseket kapnak. Legtöbbször a gyermek nem módosítja az adatokat sem. – Ha bármelyik (szül, gyermek) mégis módosít, az ilyen lapokat az MM lemásolja új lapkeretbe, és a laptábla bejegyzéseket frissíti (a copy on write bejegyzést törli, a módosítónál az új lapkeret-hivatkozást jegyzi fel, a másiknál meghagyja a régit.)
A fizikai memória nyivántartása
• Különleges memóriaallokáció! • A fájl objektumot beillesztik a taszk címtartományába (VAD leíró készül, ez a címtartomány a nézet: view). • A címtartományhoz lapkatalógus bejegyzés(ek), laptábla(k) készülnek, címezhetk majd lapkeretek, amikre a be- és kilapozás a kérdéses fájlra történnek (és nem a Paging Filera). Mindezt az MM intézi majd. • Ezen a címtartományon (a view-on) a taszk úgy látja a fájlt, mintha teljes egészében a memóriában volna! • Több taszk leképezheti ugyanazt a fájlt: osztoznak rajta • A klasszikus virtuális memória pedig a leképzett fájl speciális esete: a leképzett fájl ilyenkor a Paging File.
Vadász
• Lehetnek módosításkor másolt lapbejegyzések. • Osztott memóriahasználat halogató taktikája megvalósítható.
• A Modified Page Writer egy állandóan futó rendszertaszk. • Ha a felhasználható keretek száma egy határ alá esik, lemezre írja a módosított kereteket, és átteszi azokat a készenléti listára (növeli a felhasználható készletet).
A lapkeret-adatbázis védelme • Forgózárral (spinlock semaphor) védik. • Többprocesszoros rendszernél is csak egy taszkot szolgál ki a VMM, • sok processzornál sorbaállás van a VMM kezelhöz. Ez a közös memória hátránya.
59
Vadász
60
Laphiba kezelés
Laphiba kezelés
• Az érvénytelen laptábla bejegyzésig eljutott a címleképzés, bekövetkezett a laphiba. De ott van a másodlagos tároló cím: mit kellene belapozni. • A kezel elször a nullázott kereteket használná. • Ha nincs ilyen, akkor egy szabad keretet. • Ha ez sincs, akkor készenléti keretet. • Ha ez sincs: valamely keretet fel kell szabadítani.
• A kezel kilapozás helyett csak “listára tesz” Módosított sor
Készenléti sor
• Az NT lokális, legrégebben betöltött algoritmust használ. • A felszabadított kereteket a handler nem lapozza ki, hanem a készenléti vagy módosított listára teszi! (Ezért akár rögtön vissza is kérhetk belapozás nélkül!) Vadász
61
A taszkok munkakészlete
Vadász
62
• Ha a VMM úgy találja, indítja a módosított-lap író taszkot. Ez kilapoz, csökkenti a módosított- és növeli a készenléti listát. • Ha ez nem segít, nézi a taszkokat, és azok munkakészletét a min-re csökkenti. • Ha ez sem segít, valamennyi taszk munkakészletét, annak min értékét csökkenti. • Ha ez sem segít, akkor menjünk memóriát vásárolni! • Ha a memória krízis megsznik, a laphiba rátától függen készletnövekedés is lehet: beállhat újra az egyensúly.
63
A belapozás
Vadász
64
A védelem
• Tulajdonképpen igény szerinti belapozás (Demand Paging) van, • de a szükséges lapot közrefogó néhány lapot is belapozzák (ha a munkakészlet megengedi). (Cachingnek nevezik)
Vadász
Nullázott sor
Összefoglalva, a kilapozás
• Minden taszk kap Working Set-et: ez lapkeret-készlet. • Elírt max-min értéke van a készletnek, taszkonként ez változik. • Ha a taszk eléri a max. értékét, újabb memóriafoglalási kérelmek esetén „kilapoznak” a készletébl (akkor is, ha vannak szabad keretek: ne sajátítson ki sokat egy taszk!) • Automatikus munkakészlet szabályozás (Workig Set Trimming) folyik: – a taszkok laphiba rátájától függen csökkentik vagy növelik (utóbbit ha vannak szabad keretek) a munkakészletük max. méretét. – Bizonyos esetekben a min. értékeket is.
Vadász
Szabad sor
• Els szintje a VAD struktúrában: – a kernel és felhasználói címtartományok már itt szétválnak.
• A taszkok egymás felhasználói szint címeiket azért nem érhetik el, mert saját laptábláik vannak. • A közös memória a prototípus laptáblák segítségével mégis megoldható. • Taszk saját memóriáját is védheti a laptábla védelmi bitjeivel.
65
Vadász
66
Megjegyzések még
Most már értjük, hogy az NT memóriamenedzselés
• A gyorsítótárak – – – –
Ma már két szint (L1 és L2 Cache), külön ICache, DCache. Szerencsénkre ez tisztán hardveres és transzparens ügy! Mindenestre ami Cache-ban van, az be is van lapozva!
Vadász
• • • • • • • •
67
Operációs rendszerek Memória menedzselés Vége
Vadász
69
Virtuális, lapozós; Virtual Address Descriptor-okat (VAD) használ; TLB-t is használ; Kétszintes laptáblás (osztott memóriához + 1 szint); Lapkeret adatbázist is használ; Munkakészletet használ; Önálló taszk a kilapozó; Igény szerinti belapozós.
Vadász
68