Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Operációs rendszerek Memória menedzselés.

Hasonló előadás


Az előadások a következő témára: "Operációs rendszerek Memória menedzselés."— Előadás másolata:

1 Operációs rendszerek Memória menedzselés

2 A program Memória, címtartomány fogalmak
A címkötődé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 Vadász

3 A memória (tár) Erőforrás, amit
Igényelni (kérni, allokálni) kell (a processzek igénylik) Védeni kell (ellenőrzö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: Processzorbeli-processzor közeli gyorsítótár Központi tár Másodlagos tár Vadász

4 A címtartományok 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) A címtartomány modellje A memória modellje 0. cella 1 1. cella n-1 n-1. cella n n. cella Vadász

5 Logikai címtartományok
A processzekhez logikai címtartományok tartoznak (Logical Address Space) Az ő szemszögükből 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. Már a logikai címtartományokat is érdemes szakaszolni: címek a kódnak, az adatoknak, a vermeknek. Vadász

6 A fizikai címtartományok
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) A címsín szélességétől függ, mekkora a fizikai címtartomány Elképzelhető, hogy lehetséges fizikai címhez nem kötődik fizikai memória cella (fizikai címtartomány szakaszokhoz nem tartozik memória) Vadász

7 A címkötődés (Address Binding)
Adott egy cím. Vajon tartozik-e hozzá cella? Melyik? Kötődés a fordítás során: abszolút cím a tárgymodulokban Kötődés a link során: abszolút cím a végrehajtható (betölthető) programokban Kötődés a betöltés (load) során: abszolút címek a processz kontextusban Kötődés a futás során (dinamikus kötődés): logikai címek a kontextusban. A logikai címek lehetnek relatív címek, vagy virtuális címek A logikai címek és a fizikai címek közötti megfeleltetés (átalakítás) a címleképzés (mapping). Az első három kötődés esetén a processz logikai címtartomány egybe esik a fizikai címtartománnyal ... A leképzés ekkor pusztán ellenőrzés, esetleg a relokációs regiszter és a relatív cím addíciója ... Vadász

8 A címleképzések 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 kettővel együtt is felléphet.) Vadász

9 A címleképzések n c A A n c k q B n c h C Vadász

10 A tárcsere (Swapping) 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. n c k q Vadász

11 A memóriamenedzselés feladatai
A memória allokálás A címleképzés segítése Ezt kiegészítve az esetleges tárcsere (swapping out – swapping in, paging out – paging in) segítése Vadász

12 A memória allokálása Mivel a memória erőforrás, igényelni kell
A processzek az igénylők (allokálók) Ún. statikus allokálás: a processz születésekor, hogy a kontextusa számára legyen tárolási lehetőség Ún. dinamikus allokálás: processz élete során bőví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

13 A címleképzés 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ötődés megoldását a MM alrendszer a hardver MMU egységével együtt oldja meg A címleképzés – kötődés során gondoskodnak a védelemről Szükség esetén a ki-be mozgatásról (tárcseréről) Vadász

14 MM alrendszer osztályozások
A virtuális címzés koncepciójú MM-től (lásd később) megkülönböztetve, vannak valós címzésű rendszerek Fix partíciós és változó partíciós rendszerek Korai MM rendszerek, Felvetett problémáik: címkötődés késleltetése (áthelyezés lehetősé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

15 A virtuális memória koncepció
Általános megoldást ajánl a címleképzés – kötődés problémára Lényege: 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örődnie a címleképzéssel, sem a kötődéssel, sem a tartalom behozatalával. Vadász

16 Virtuális címtartomány - memória
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ínűleg 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

17 Vaddress Dynamic_Map Raddress
A címkötődés 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 Előfordulhat 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 Vajon jó fogalmazás ez: a leképzett cím nem érvényes? Nem a leképzett címhez kötött cella az, ami nem érvényes? Vadász

18 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 Figyeljünk fel a 3 megfogalmazásra: … a címleképzést fix méretű blokkokra osztás segíti … 2. … a címtartomány fix méretű szakaszokra osztott … 3. … a virtuális memória fix méretű blokkokra osztható … Ez a lap. És egy negyedik mondat is van: a lapkeret a fizikai memória fix mérretű blokkja. A 3 mondat egymást helyettesítő mondatok,más-más oldalról ugyanazt fejtik ki. De ügyeljünk: a címtartomány szakaszokra, a memória blokkokra osztott. Vadász

19 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, (értéke 0 - np közötti, ahol np megmondja, hány lapból áll a processz); o: eltolás a lapon belül. (értéktartománya át kell fedje a lapot) A címtartomány nemcsak bájtban, hanem lapban is megragadható! A 0 – n bájtban mért címtartomány lapban mérve 0 – np lehet. Vadász

20 Lapozó rendszerek (Paging)
Egy fizikai cím: r = (f, o) ahol: f a lapkeret címe, o az eltolás (offset). Az o eltolás bitszélessége a lap/lapkeret mérettől függ. A lap/lapkeret méret architektúra függő! Vadász

21 A laptáblák (Page Map Table)
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

22 Egy laptábla bejegyzés
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 mezőben is). Vadász

23 Memória allokálás során
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öltődik 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öltődhetnek (leírók az image fájlra vonatkozhatnak, sok bejegyzésben not valid jelzi, nincs lapkeret rendelve a laphoz). Dinamikus allokálás során a laptábla "kiegészül", új bejegyzésekkel bővül (a címtartomány nő). Emlékezzünk! A memória allokálás az egyik (ritkább) feladata az MM alrendszernek! Vadász

24 Címleképzés lapozós rendszerben
Base Address of Page Table Virtuális cím p o b Page Table + p Fizikai cím f o f + b+p Itt érthető meg a HW MMU szerepe! Az addíciók HW-esek kell legyenek! Vadász

25 A laphiba (Page Fault) 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 kezelője (Page Fault Handler) műkö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) - jellemzője a processz életének. Vadász

26 Kérdések, megoldandó dolgok
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 egyidejűleg? mennyiségi stratégia egyidejűleg 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 Vadász

27 Laptábla méret kezelés
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. Vadász

28 Többszintes laptáblák
Virtuális cím Második szintű laptáblák p1 p2 o 1 2 3 ... 1023 Első szintű laptábla 1 2 3 ... 1023 b + 1 2 3 ... 1023 p2 f Vadász

29 Hasításos (hashed) p o p f q r f o Virtuális cím Fizikai cím hash
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 Fizikai cím p o p f q r hash f o 32 bitesnél nagyobb szélességek esetén gyakori, általános. A p lapcímből a hash függvény segítségével előállított cím a laptábla bejegyzését indexeli. A bejegyzésből láncolt lista indul: a láncon a rendre a p, q lapcímek és a hozzájuk tartozó keretcímek vannak. Megkeresik a láncon a p lapcímhez tartozó elemet, annak keretcíme már használható ... Vadász

30 Invertált laptábla 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). 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! Vadász

31 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ítődik. Pl.: MIPS R2000 stb. processzorai (SGI), Intel stb. Vadász

32 Belapozási algoritmusok
A processzek hivatkozási lánca (Reference String): lapok sorozata. Előre 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ésőbb 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ó? Mit lapozzunk be? Egyszerre hányat? Vadász

33 A mennyiségi stratégia
Ha nincs stratégia: remélik az egyensúlyt A munkakészlet (Working Set) modell (Denis, 1970) A processz munka-lapkészlete (munkahalmaz): egy időablakban a bennlévő lapjainak halmaza. Nincs laphiba, ha minden lapja a “pillanatnyi” munkakészlethez tartozik. A “pillanatnyi“ helyzet valójában: egy időablak 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). Vadász

34 Globális - lokális stratégiák
A munkakészlet modellel kapcsolatban a kilapozási problémák előjönnek: amikor belapozandó egy processz egy lapja, kilapozásra a processz munkakészletéből válasszunk? (Lokális) Más processzek munkakészletéből 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üggően. A processzek munkakészleteinek egyensúlyát remélik (ez a Balance Set). Vadász

35 Kilapozási algoritmusok
Page Replacement Algorithms Amik befolyásolhatnak: 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

36 FIFO algoritmus 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éről lapoznak ki, belapozott lap a végére. Anomália: a régen belapozott, de most is használt, a gyakran használt lapokra. Vadász

37 Második esélyes FIFO 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 felvevődik a körre. Ilyen a mach default memóriamenedzsere. A hivatkozási idő figyelembe van véve: amely lapra az aktuális körben hivatkoznak, az még marad … Egy környi idő van figyelembe véve. Vadász

38 NRU (LRU) algoritmusok
Not (Least) Recently Used Lokalitás elvből: 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 lehetőséget: kisebb a bájt a kilapozásra esélyes lapoknál. Vadász

39 NFU (LFU) algoritmusok
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. Időszerűség is figyelembe veendő. Öregedés (aging) a számlálómezőre ezen javít. Költséges a megvalósítás, főleg a rendezés. Vadász

40 A szegmentálás “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. Vadász

41 Szegmensenkénti címleképzés
b Base Address of Segment Table Virtuális cím s d s' Segment Map Table + Fizikai cím b+s m a l s szegmens szám s' szegmens cím d diplacement (eltolás) a cím a swap tárolón l szegmens hossz m státus (valid, rwx stb) Vadász

42 A stratégiák Allokációs stratégia Behozási stratégia
egyidejűleg szegmensnyit a fizikai memóriában Behozási stratégia igény szerinti a szegmensre Kisöprési stratégia LRU Elhelyezési stratégia First vagy next fit Vadász

43 Szegmensenkénti leképzés vagy lapozás: lehetőségek
Tiszta lapozó rendszerek (Pure Paging) Tiszta szegmentáló rendszerek. Szegmentáló és lapozó rendszerek. Ekkor a “teljes“ kontextus ki-besöprődik, szegmensekre külön laptáblák, lapozás a szegmenseken belül. Ma ezek gyakoriak. Vadász

44 A "swap" eszköz/fájl struktúra
A mai rendszerekben lehet swap/paging device (a másodlagos tároló partíció), swap/paging file (a másodlagos tároló a fájl), mindkettőt úgy foghatjuk fel, hogy lapméretű blokkok sora. Akár szegmensenkénti leképzés, akár laponkénti leképzés van: swap/paging eszközről/fájlról beszélünk. Ami érdekes lehet: hogy menedzselik a swap/paging eszközön a szabad területet. Vadász

45 Klasszikus Unix 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) 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 összefűzésével ha előtte + utána szabad: a 2 bejegyzésből 1-et csinál, ha előtte 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. Vadász

46 Linux swap eszköz A swap eszköz elején bájt hosszú bit-térkép ( : 'SWAP_SPACE' füzér). Ebből: max 4086*8-1= lap menedzselhető egy eszközön. Ez kicsi, ezért több swap eszköz lehet (ma max 8) Bebillentett bit kettős jelentése: adott régió lapját ide lehet kilapozni, újabb régió swap területe itt nem foglalható. Ne feledjük: csak az irható lapok/régiók számára foglanak helyet a swap eszközön/fájlon. Vadász

47 Az NT memóriamenedzselés
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

48 Az NT MM virtuális 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 bővítés stb.) Vadász

49 A Virtual Address Descriptorok
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? A címleképzés elején: előszö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: Előszö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. Leképzett fájl (Mapped File) létrehozásánál (ld. később). Nincs szerepe a lapozásnál (ez már nem a címtartomány síkja!) Vadász

50 A címleképzés Miután a VAD-on túl vagyunk, indul a TLB vizsgálat.
TLB: kisméretű asszociatív tár, 2 oszloppal egyikben a VA felső 20bitje (párhuzamos keresés ebben), másikban a laptábla rekord (ld. később). 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. Vadász

51 Laponkénti leképzés Lap (Page): Lapkeret (Page-frame):
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. Lapkeret (Page-frame): 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, Vadász

52 Az NT 32 bites virtuális címe
A lapméret Az offset szélesség: 12 bit 212 = 4KB Page Dir Index Page Table Index Offset Page Tables (Laptáblák) Page Dir (Lapkatalógus) A lapkatalógus méret (Taszkonként 1 db) 210 = 1024 bejegyzés Egy bejegyzése: 4 Byte PD record 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

53 Egy laptábla bejegyzés tartalma
Státusz bitek (érvényes, nem érvényes, prototípus laptábla index jelzésére) Védelmi bitek 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ésőbb) Címek Vadász

54 Laptábla bejegyzésben a címek
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! Vadász

55 Laponkénti leképzés 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 eldől: laphiba van-e. Indulhat a kezelője, 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

56 Halogatott gazdálkodási taktika
Lehetnek módosításkor másolt lapbejegyzések. Osztott memóriahasználat halogató taktikája megvalósítható. PL. POSIX taszk-kreációban a gyermek kontextusa (kezdetben az adatok is) megosztódnak a szülőjé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.) Vadász

57 A leképzett fájl objektum
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ímezhetők majd lapkeretek, amikre a be- és kilapozás a kérdéses fájlra történnek (és nem a Paging File-ra). 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 osztott memória pedig a leképzett fájl speciális esete: a leképzett fájl ilyenkor a Paging File. Figyeltünk? Memória allokálásnál új VAD leíró keletkezik. Ez az „alloc”. Ekkor még nincs laptábla, ami ezt a „view”-t kezeli majd. A „comitting” során készül majd a lapkatalógus (első szintű tábla) és a kellő számú laptábla (második szint). Értik? Akkor válaszoljanak: hány lapkatalógusa van az NT-n futó taszkoknak? A válasz: ahány VAD bejegyzésük van! De legalább 2: egy a kernel (felső) címtartománynak, amin persze osztoznak a taszkok, és egy a user címtartománynak (alsó). Ha leképzett fájlt kreálunk, akkor még egy lapkatalógus keletkezik. POSIX osztott memória szegmens attach során „új címtartományt kérünk”: még egy lapkatalógus. Vadász

58 A fizikai memória nyivántartása
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érhetők 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 tőle és ki akarják osztani másik taszknak, előtte ki kell írni! Az átmeneti bit (transition flag) is bebillentett. Hibás (bad) keret: megbízhatatlanul működőre ráírja az MM. Visszamutató a taszk laptábla bejegyzésére (ahol értelmes). Vadász

59 Keretállapotok és listák
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

60 A lapkeret-adatbázis védelme
A módosított lapíró 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 kezelőhöz. Ez a közös memória hátránya. Vadász

61 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ő előszö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. Az NT lokális, legrégebben betöltött (NRU) 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érhetők belapozás nélkül!) Vadász

62 Laphiba kezelés A kezelő kilapozás helyett csak “listára tesz”
Módosított sor Készenléti sor Szabad sor Nullázott sor Vadász

63 A taszkok munkakészlete
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éből (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üggően 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

64 Összefoglalva kilapozás
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 megszűnik, a laphiba rátától függően készletnövekedés is lehet: beállhat újra az egyensúly. Vadász

65 A belapozás 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

66 A védelem 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. Vadász

67 Megjegyzések még 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

68 Most már értjük, hogy az NT memóriamenedzselés
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

69 Memória menedzselés Vége
Operációs rendszerek Memória menedzselés Vége


Letölteni ppt "Operációs rendszerek Memória menedzselés."

Hasonló előadás


Google Hirdetések