Segmenthukommelsesadressering

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. juni 2020; verifikation kræver 1 redigering .


Hukommelsessegmentadressering  er et logisk hukommelsesadresseringsskema for en computer i x86 -arkitekturen . Den lineære adresse på en bestemt hukommelsescelle, som i nogle driftsformer af processoren vil matche den fysiske adresse, er opdelt i to dele: segment og offset . Et segment er et betinget tildelt område af adresserummet af en vis størrelse, og en offset  er adressen på en hukommelsescelle i forhold til begyndelsen af ​​segmentet. Basen af ​​et segment er en lineær adresse (en adresse i forhold til den samlede mængde hukommelse), der peger på begyndelsen af ​​segmentet i adresserummet. Resultatet er en segment (logisk) adresse , som svarer til det lineære adressesegment base + offset , og som af processoren indstilles til adressebussen.

En vælger er et tal (  16-bit i x86 ), der entydigt identificerer et segment. Vælgeren indlæses i segmentregistre.

I de reelle og beskyttede tilstande af x86-processoren er operationen af ​​segmentadressering anderledes.

Segmentadressering i reel tilstand

I processorens reelle tilstand er hele adresserummet opdelt i identiske segmenter på 65536 bytes ( bytes). Begyndelsen af ​​hvert efterfølgende segment (den såkaldte segmentbase) forskydes i forhold til bunden af ​​det foregående med minimumssegmentstørrelsen, det vil sige med 16 bytes (det såkaldte afsnit ). Segmenterne kan således delvist overlappe hinanden. (For eksempel er segment 2 byte 17 også segment 3 byte og segment 1 byte.)

Vælgeren er 16-bit og angiver segmentnummeret. Givet at segmenterne følger hinanden med et konstant interval på 2 4 =16 bytes, er det meget nemt at finde ud af segmentets lineære adresse ved at gange det med 16 (eller flytte det 4 bits til venstre).

Segmentadressering i beskyttet tilstand (vælgeradressering)

I processorens beskyttede tilstand er adresserummet for en opgave opdelt i segmenter af forskellige størrelser med forskellige baser. Segmentbeskrivelserne gemt i deskriptortabellerne ( GDT og LDT) tjener til at bestemme segmenternes basis og størrelse .

Her peger segment nr. 3 og nr. 11 på det samme område og er aliaser (aliaseret fra det engelske  Alias ​​). Segment #7 spænder over segment #1, #2, #3 og #11. Segment #5 peger på GDT, så det kan ændres (dette gælder ikke for GDT på nogen måde - dets faktiske håndtag er gemt i GDTR-register (vist med gult)). Adressering gennem den lokale deskriptor tabel (LDT) er ens.

Vælgeren er også 16-bit, men er opdelt i tre dele: RPL (bit 0-1), TI (bit 2) og deskriptornummer ([bit 3-15).

Se også

Noter

Links