Mik azok a szegmensregiszterek? Miért szegmentált a memória? Hogyan történik a memória szegmentálása?


Legjobb válasz

A szegmens egybefüggő memóriarész. Szegmentált memória sémában a folyamat összes memóriája szegmensekben van. Az első virtuális memóriarendszerek (Burroughs B5000, Mulitcs) változó méretű szegmenseken alapultak, amelyeket átmásoltak a RAM-ba.

A program minden szegmenst eltolásként hivatkozik egy szegmensregiszterre. A szegmensregiszter tényleges tartalmát a rendszer ellenőrzi. A rendszer tudja, hogy mikor hivatkoznak egy szegmensre, amikor a szegmens regisztert használják, és ezt használja a virtuális memória kezelésére.

Ez ellentétben áll az lapozással virtuális memória, amelyet ma mindenhol használnak, ahol a virtuális memória kvantumai fix méretű memória darabok. A lapozás bonyolultabb és több hardvertámogatást igényel.

Az MIT Multics-nak hatalmas hatása volt a modern számítástechnikára (beleértve a Unixba és a Linuxba beépített számos ötletet). Fred Pollack frissen csatlakozott az MIT-ből az Intel 286-os projekthez. Látta a 8086 „szegmens” regisztereket (valójában az alap regisztereket), és sikeresen lobbizott ezeknek a valódi szegmens regisztereknek a létrehozására, mint a Multics-ban. (Fred később Intel-ösztöndíjas lett.)

A 286 64 KB-os szegmensei ugyanazt a problémát szenvedték, mint a Multics-szegmensek: túl kicsik voltak. Túl gyakran több szegmensre van szükség a memóriastruktúrák eléréséhez, ami a szegmensregiszterek újratöltését és az operációs rendszer gyakran bekapcsolását jelenti. A teljesítményre gyakorolt ​​hatás miatt a szegmentálást ritkán használták, és a szegmens regisztereket használták alapregiszterként a 8086 kompatibilitási módban.

A 32 bites Intel 386 lapozott virtuális memóriát (YEA!) Adott a szegmens séma alá (meh ). A 64 bites Intel architektúra modell teljesen megszünteti a szegmensregisztereket, bár kompatibilitási módjai még mindig vannak, egészen a 8086-ig.

Válasz

1. mit jelentenek a szegmensregiszterek?

-> Mint mindannyian tudjuk, hogy a regiszter jelen van a processzorban. szegmenseket hozunk létre a memóriában (szegmentálás). A szegmensek kiindulási helyének megszerzéséhez tároljuk a szegmensek címét a szegmensregiszterben. rövid szegmensregiszterekben tárolja a memóriában lévő szegmensek kezdő helyét, azaz a szegmens címét.

3. hogyan történik a memória szegmentálása?

-> a memória szegmentálása 16 bites címek használatával történik. először megadjuk a szegmens címét (a szegmens kezdete), a szegmens cím megadása után offset címet () adunk az adott szegmens helyeinek eléréséhez.

a szegmens címet utána csak egyszer adjuk meg az offset címet.

adunk szegmens címet és offset cím programozóként mindkét 16 bites cím. ennek a címnek a megadása után a processzor feladata, hogy mindkét címet fizikai címre (valós címre) tegye.

fizikai cím = szegmens cím * 10 + eltolt cím

= 1000 * 10 + 2345

= 12345H

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