730 likes | 911 Views
Operációs rendszerek. Memória menedzselés. 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. A memória (tár). Erőforrás, amit
E N D
Operációs rendszerek Memória menedzselés
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
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
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 0. cella 1 1. cella n-1 n-1. cella n n. cella Vadász
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
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
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). Vadász
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
A címleképzések A 0 0 0 B c c c k n n n q C 0 0 c h n n A Vadász
A tárcsere (Swapping) 0 0 c c k n n q • 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. Vadász
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
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
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
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
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
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
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: VaddressDynamic_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 Vadász
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 Vadász
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) Vadász
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
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
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
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ő). Vadász
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
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
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
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
Többszintes laptáblák 0 1 2 3 ... 1023 0 1 2 3 ... 1023 Virtuális cím Második szintű laptáblák p1 p2 o 10 10 12 Első szintű laptábla b + 0 1 2 3 ... 1023 p2 f Vadász
Hasításos (hashed) p o f o p f q r 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 Vadász
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
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
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ó? Vadász
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
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
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
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
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. Vadász
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
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
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
Szegmensenkénti címleképzés Base Address of Segment Table Virtuális cím s d b Segment Map Table + s Fizikai cím s' d m a l s' + b+s 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
A stratégiák • Allokációs 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
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
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
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
Linux swap eszköz • A swap eszköz elején 4086- bájt hosszú bit-térkép (4096-10: 'SWAP_SPACE' füzér). • Ebből: 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) • 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
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
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
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
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