Mi a különbség az oldalméret és az oldaltáblázat bejegyzési mérete között?

Legjobb válasz

Nos, az oldal mérete az 1 oldal számára szükséges terület. (Ez elég egyszerű )

Ahhoz, hogy itt csak egy kis háttér álljon rendelkezésre, az oldaltábla egy virtuális és fizikai cím közötti konverzió táblája, amelyet az operációs rendszer mesterségesen span használ. > növeli a rendszerben rendelkezésre álló fő memória teljes mennyiségét. A fizikai memória a tényleges bit, amely a memóriában található címeken található (DRAM), a virtuális memória az, ahol az operációs rendszer hazudik a folyamatoknak, hogy megmondják nekik, hol vannak a dolgok elvégzése érdekében. hasonlóan 2 ^ 64 bites címteret engednek meg annak ellenére, hogy általában a 2 ^ 34 bit a RAM. (2 ^ 32 bit 4 gigabájt, tehát 2 ^ 34 16 gb.)

Most az alapértelmezett oldal táblázatméretek 4096 kb az egyes folyamatokhoz, de az oldaltáblázat bejegyzéseinek száma növekedhet, ha a folyamatnak nagyobb folyamatterületre van szüksége. Az oldaltáblák méretei eleinte kisebb vagy nagyobb mennyiségeket vagy memóriát is elkülöníthetnek, csupán annyi, hogy általában a 4 kb a legjobb méret a legtöbb folyamathoz. Tehát az oldal táblázat bejegyzés mérete pontosan megfelelő helyet jelentene bármely cím megtartásához egy 32 bites címtérben.

Vegyünk egy példát itt: Vegyünk egy 32 bites logikai címterű rendszert. Ha az oldal méret egy ilyen rendszerben 4 KB (212), akkor egy oldaltábla legfeljebb 1 millió bejegyzésből állhat (232/212). Feltéve, hogy minden bejegyzés 4 bájtból áll , minden folyamathoz legfeljebb 4 MB fizikai címterületre lehet szükség csak az oldaltáblázathoz.

Hogyan érthetjük meg teljes mértékben?

Válasz: 4 bájt (32 bit ) pontosan megfelelõ hely a címek tárolására egy 32 bites címtérben. Mivel 1 millió 4 bájtos bejegyzés 4MB-t tesz ki, egy folyamathoz “4” fizikai címterületre lehet szükség.

Válasz

A oldal ta A ble -ot az operációs rendszer folyamatonként karbantartja. Minden folyamatnak megvan a maga oldaltáblája , és ezért nem kell semmiféle folyamatazonosítót tárolnunk az oldal táblában. Az oldaltábla egy adott logikai / virtuális oldalszámot leképez a tényleges fizikai keret / oldal címére.

A memória hivatkozás logikai címe a következő:

Logikai cím:

Az oldalszám (virtuális oldalszám) arra szolgál, hogy felkutasson az oldal táblába, és megkapja annak a fizikai keretnek az alapcímét, amelyhez hozzárendelt. A keret (f) alapcímét azután eltolja az oldal (d) eltolásával, hogy megkapja a fizikai memória keret címét:

f = oldal-tábla [p]

Fizikai cím:

Most fontolja meg a következő rendszert:

1. logikai címtér: 32 bites 2. oldalméret: 4KB (2 ^ 12) 3. oldaltábla bejegyzés mérete: 4 bájt 4. fizikai memória: 2 GB

Felhívjuk figyelmét, hogy 4 egy oldaltábla bejegyzés bájtjai a fizikai keret alapcímétől eltekintve többféle információt tárolnak. Ezek az információk lehetnek memóriavédelem (érvényes / érvénytelen bit), hozzáférés típusa (olvasás / írás), könyvelés stb. A fizikai keretcímre (f) utalok, valójában a 4 bájtos bejegyzésnek erre a részére hivatkozom.

Számítsuk ki az oldaltábla méretét:

az oldaltáblázat = (bejegyzések száma * az egyes bejegyzések mérete).

A fenti paraméterek alapján egy 32 bites logikai cím lesz particionálva:

vagy

.

Most kiszámíthatjuk, hogy az oldaltáblázatban szereplő bejegyzések száma (az összes virtuális oldalszám) 2 ^ 20 lehet. Ezért az oldaltábla mérete a következő lenne:

(2 ^ 20) * 4 bájt = 4 MB hely (folyamatonként).

Ennyi helyre lenne szükség a fizikai memóriában minden folyamat oldaltáblázatához. Ne felejtsük el, hogy csak 2 GB fő memóriával rendelkezünk, és nem biztos, hogy minden folyamat oldaltáblájához 4 MB helyet foglalunk. Ezenkívül előfordulhat, hogy sok virtuális címhez nincs hozzárendelve fizikai oldal cím. , akkor is nagy lesz az oldaltáblázat mérete. Még akkor is, ha az “érvényes” bit nincs megadva egy virtuális oldalszámhoz, annak egy résnek kell lennie az oldaltáblázatban.

Megosztás esetén memória esetén, ha folyamatonként van oldal táblája, akkor ugyanazon fizikai oldal beírását kell megadni minden olyan folyamat oldal táblájába, amely megosztott hozzáféréssel rendelkezik az adott oldalhoz. Így a rendszer végül több bejegyzést is megtart ugyanazon fizikai keret címen. A fizikai memória nem túl hasznos.

Azt is megérthetjük, hogy egy folyamattáblázat egy virtuális címenként egy bejegyzést tartalmaz. A tábla mérete tehát arányos a logikai / virtuális méretével címtér, amely valójában óriási lehet.

Célunk az oldal táblák tárolásához szükséges fizikai memória mennyiségének csökkentése / optimalizálása. A fordított oldaltáblázat egy ilyen megoldás.

A fordított oldaltábla egy globális oldaltábla, amelyet az operációs rendszer az összes folyamat számára fenntart. Csak egy oldaltábla van a teljes rendszerben, ami azt jelenti, hogy további információkat kell tárolni az oldaltáblában az egyes folyamatokhoz tartozó oldaltáblázat-bejegyzések azonosításához.

Fizikai keretenként egy bejegyzést tárol, és egy lineáris tömb, ahol az egyes helyek tartalma , és az egyes helyek indexe a fizikai keretcím. A képlet most megváltozik:

= page-table [f]

Ez egyenesen azt jelenti, hogy a virtuális oldalszámra már nem történhet keresés. Az egész táblázatot bejegyzésenként kell keresni, hogy megtalálja a megfelelő bejegyzést, amelynek pid értéke egyenlő az “id” és a virtuális oldal száma egyenlő “p” értékkel. Az egyezésnek megfelelő index hely a fizikai keretcím (f), amely aztán az eltolással (d) együtt megadja a fizikai címet.

Könnyen kikövetkeztethetjük ezt a keresési időt egy fordított oldalon. táblázat lényegesen magasabb lehet egy egyszerű oldaltáblához képest .

Mivel azonban a tábla fizikai keretcímenként egy bejegyzést tárol, és a teljes rendszerben egyetlen laptábla található, az invertált oldaltábla által használt memória mennyisége jelentősen csökkent. Hogyan?

Fontolja meg újra ugyanazokat a paramétereket:

1. logikai címtér: 32 bites 2. oldalméret: 4KB (2 ^ 12) 3. oldaltábla bejegyzés mérete: 4 bájt. 4. fizikai memória: 2 GB (2 ^ 31)

Bejegyzések száma az oldaltáblázatban = A fizikai oldalak száma =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 fizikai oldal vagy keret.

Tegyük fel, hogy 1 bájtos folyamatazonosítókat használunk. Az egyes oldaltáblázat-bejegyzések mérete a következő lenne:

8 bit (PID) + 20 bit ( virtuális oldalszám) + 4bit (hozzáférési információk) = 32 bit = 4 bájt.

Az oldaltábla mérete = (2 ^ 19) * 4 = 2 MB a teljes rendszer számára.

Az invertált oldaltáblák teljesítményét általában hash oldaltáblákon keresztül kezelik. A fordított oldaltáblák használatának azonban a teljesítményen kívül még egy hátránya van. Ez megosztott memória.

Mivel egy és csak egy bejegyzés van fizikai keretenként az oldaltáblázatban, amely pontosan egy virtuális oldalszámot tartalmaz, többé már nem tudjuk ugyanazon fizikai keretet több virtuális oldalszámhoz leképezni különböző folyamatokban. Van ilyen megoldás, de nincs tisztában az itt írandó részletekkel .

Forrás – operációs rendszer fogalmai (Silberschatz és mtsai)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük