Wat zijn segmentregisters? Waarom is het geheugen gesegmenteerd? Hoe wordt geheugensegmentatie uitgevoerd?


Beste antwoord

Een segment is een aaneengesloten stuk geheugen. In een gesegmenteerd geheugenschema is het hele geheugen van een proces in segmenten. De eerste virtuele geheugensystemen (Burroughs B5000, Mulitcs) waren gebaseerd op segmenten van variabele grootte die in en uit RAM werden gekopieerd.

Een programma verwijst naar elk segment als een offset naar een segmentregister. De feitelijke inhoud van het segmentregister wordt bestuurd door het systeem. Het systeem weet wanneer naar een segment wordt verwezen wanneer het segmentregister wordt gebruikt, en gebruikt dit om virtueel geheugen te beheren.

Dit in tegenstelling tot paged virtueel geheugen, dat tegenwoordig overal wordt gebruikt, waar de quanta van virtueel geheugen geheugenblokken met een vaste grootte zijn. Paging is complexer en vereist meer hardware-ondersteuning.

MITs Multics heeft een enorme impact gehad op moderne computers (inclusief veel ideeën die in Unix en Linux zijn verwerkt). Fred Pollack sloot zich vers uit MIT aan bij het Intel 286-project. Hij zag de 8086 “segment” registers (eigenlijk basisregisters) en lobbyde met succes om deze echte segmentregisters te maken zoals in Multics. (Fred werd later een Intel Fellow.)

De 64KB-segmenten van de 286 hadden hetzelfde probleem als de Multics-segmenten: ze waren te klein. Al te vaak zijn er meerdere segmenten nodig om toegang te krijgen tot geheugenstructuren, wat betekent dat segmentregisters opnieuw moeten worden geladen en vaak het besturingssysteem moet worden betrokken. Vanwege de impact op prestaties werd segmentatie zelden gebruikt en werden segmentregisters gebruikt als basisregisters in de 8086-compatibiliteitsmodus.

De 32-bits Intel 386 voegde wisselend virtueel geheugen (YEA!) Toe onder het segmentschema (meh ). Het 64-bits Intel-architectuurmodel schaft geheel de segmentregisters af, hoewel het nog steeds compatibiliteitsmodi heeft die teruggaan tot de 8086.

Antwoord

1. wat zijn segmentregister?

-> Zoals we allemaal weten zijn die register aanwezig in de processor. we maken segmenten in het geheugen (segmentatie). Om de startlocatie van deze segmenten te krijgen, slaan we het adres van deze segmenten op in het segmentregister. sla in korte segmentregisters de startlocatie op van de segmenten die in het geheugen aanwezig zijn, dwz het segmentadres.

3. hoe geheugensegmentatie gebeurt?

-> geheugensegmentatie wordt gedaan door 16 bits adressen te gebruiken. eerst geven we het segmentadres (begin van het segment), nadat we het segmentadres hebben opgegeven, geven we offset-adres () om toegang te krijgen tot locaties in dat segment.

we geven segmentadres slechts één keer daarna geven we offset-adres.

we geven segmentadres en offset adres beide 16 bits adressen als een programmeur. na het geven van dit adres is het de plicht van de processor om beide adressen om te zetten in fysiek adres (echt adres).

fysiek adres = segmentadres * 10 + offset adres

= 1000 * 10 + 2345

= 12345H

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *