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