Beskyttet tilstand

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. maj 2017; checks kræver 14 redigeringer .

Beskyttet tilstand (beskyttet virtuel adresseringstilstand) - driftstilstanden for x86-kompatible processorer . Det var delvist implementeret allerede i 80286-processoren , men måden at arbejde med hukommelse på var væsentlig anderledes der, da processorerne stadig var 16-bit og hukommelsessøgning ikke var implementeret . Den første 32-bit implementering af beskyttet tilstand er Intel 80386-processoren . Anvendes i kompatible processorer fra andre producenter. Denne tilstand bruges i moderne multitasking-operativsystemer, Windows , Linux , macOS .

En lignende tilstand blev brugt af Digital Equipment (DEC) til 32-bit computere: VAX-11 .

Funktioner i 80286-processoren

I 80286-processoren blev der udover ægte tilstand også implementeret en beskyttet tilstand. I beskyttet tilstand kan processoren adressere op til 16 MB fysisk hukommelse og 1 GB virtuel hukommelse (16384 segmenter på 64 KB hver) ved at ændre adresseringsmekanismen. Skift fra ægte tilstand til beskyttet tilstand udføres i software og er relativt simpelt, men at skifte tilbage, er en hardwarenulstilling af processoren påkrævet. Maskinstatusordregisteret (MSW) bruges til at holde styr på processorens aktuelle driftstilstand. Real mode-programmer kan ikke køre i beskyttet tilstand uden ændringer, ligesom maskinens BIOS -programmer.

Essensen af ​​den beskyttede tilstand er som følger: programmøren og de programmer, han udvikler, bruger et logisk adresserum, hvis størrelse kan være 1 gigabyte. Den logiske adresse konverteres automatisk til en fysisk adresse af hukommelsesstyringsenheden (MMU). I dette tilfælde er indholdet af segmentregistret ikke direkte relateret til den fysiske adresse, men er segmentnummeret i den tilsvarende tabel. Takket være den beskyttede tilstand kan kun den del af programmet, der er nødvendig i øjeblikket, gemmes i hukommelsen, og resten kan gemmes i ekstern hukommelse (for eksempel på en harddisk). Hvis der tilgås en del af programmet, som ikke i øjeblikket er i hukommelsen, kan operativsystemet sætte programmet på pause, indlæse den nødvendige kodesektion fra ekstern hukommelse og genoptage programafviklingen. Følgelig bliver programmer, der er større end mængden af ​​tilgængelig hukommelse, gyldige, og brugeren føler, at han arbejder med mere hukommelse, end han faktisk er.

Den fysiske adresse er dannet som følger. Segmentregistrene lagrer en vælger , der indeholder deskriptorindekset i deskriptortabellen (13 bit), 1 bit, der bestemmer, hvilken deskriptortabel der skal tilgås (lokal eller global) og 2 bit af det anmodede privilegieniveau. Dernæst tilgås den tilsvarende deskriptor-tabel og den tilsvarende deskriptor, som indeholder den indledende 24-bit segmentadresse , segmentstørrelse og adgangsrettigheder, hvorefter den nødvendige fysiske adresse beregnes ved at tilføje segmentadressen med offset fra 16-bit. Tilmeld.

Processorfunktioner 80386 - 80486

Med fremkomsten af ​​32-bit 80386-processorer fra Intel kan processorer fungere i tre tilstande: ægte , beskyttet og virtuel 8086-processor.

I beskyttet tilstand bruges de fulde muligheder for en 32-bit processor - direkte adgang til 4 GB fysisk adresserum og multitasking med parallel udførelse af flere programmer ( processer ) er tilvejebragt. Strengt taget er multitasking-tilstanden organiseret af multitasking-operativsystemet, men mikroprocessoren giver den pålidelige mekanisme, der er nødvendig for denne tilstand for at beskytte opgaver mod hinanden ved hjælp af et fire-niveau system af privilegier . Også i denne tilstand er personsøgningshukommelse tilgængelig, hvilket øger niveauet af beskyttelse af opgaver fra hinanden og effektiviteten af ​​deres udførelse.

Med i386-processoren anerkendte Intel behovet for bedre real-mode-understøttelse, fordi softwaren ikke var helt klar til at køre i beskyttet tilstand på tidspunktet for udgivelsen. Derfor er det for eksempel i i386 muligt at skifte fra beskyttet tilstand tilbage til reel tilstand (under udviklingen af ​​80286 blev det anset, at dette ikke ville være påkrævet, derfor er det på computere med en 80286-processor at vende tilbage til reel tilstand er udføres af kredsløb - gennem en processornulstilling).

Når mikroprocessoren er tændt, indstilles den rigtige adressetilstand automatisk i den. Overgangen til beskyttet tilstand udføres programmatisk ved at udføre den passende rækkefølge af kommandoer. Programmer beregnet til beskyttet tilstand skal skrives på en speciel måde. Dette betyder, at ægte og beskyttet tilstand er inkompatible.

Søgning af hukommelse

Al fysisk hukommelse er opdelt i sider af en fast størrelse ( 4K bytes , 2MB eller 4MB, x86_64 også 1GB). Hver side, uanset størrelse, er justeret på en 4K - byte -grænse .

Hovedideen kommer ned til dannelsen af ​​hukommelsesbeskrivelsestabeller, der bestemmer tilstanden af ​​dets individuelle segmenter/sider osv. Hvis der er mangel på hukommelse, kan operativsystemet udlæse en del af dataene fra RAM til disk, og indtaste en indikation af fraværet af disse data i hukommelsen i beskrivelsestabellen. Når du forsøger at få adgang til manglende data, vil processoren generere en #PF-undtagelse (en slags afbrydelse) og give kontrol til operativsystemet, som vil returnere dataene til hukommelsen og derefter returnere kontrol til programmet. For programmer går processen med at bytte data fra diske ubemærket hen.

Lineær adressering

Lineær hukommelsesadressering  er et adresseringsskema for computerhukommelse i beskyttet tilstand (startende med Intel 80386 og andre kompatible x86-processorer). Bruges af de fleste moderne multitasking-operativsystemer.

Takket være den lineære adresseringsmekanisme kan du oprette et hvilket som helst antal (kun begrænset af størrelsen af ​​RAM ) af uafhængige virtuelle adresserum . Desuden kan hver side i det lineære adresserum være placeret på en hvilken som helst fysisk adresse eller endda sides ud til disk.

Ved brug af lineær adressering er den 32 - bit logiske adresse opdelt i tre dele:

Ved brug af sider på 4 M bytes mangler den anden del. Forskydningen på siden vil blive bestemt af bit 21-0 (22 bit).

For at aktivere lineær adressering skal du, mens du er i beskyttet tilstand, indstille PG - bitten i CR0- registret . Først skal du oprette et sidebibliotek ( English  Page Directory , PD) og en sidetabel ( English  Page Table , PT) i hukommelsen og derefter indlæse sidebibliotekets fysiske adresse i CR3-registret .

Katalog og sidetabeller

Begge disse strukturer er tabeller over biblioteksposter og sidetabeller ( English  Page Directory Entry , PDE og English  Page Table Entry , PTE) hukommelsessider på 4 K bytes .

Begge elementer er 4 bytes (32 bits ) lange og har en lignende struktur:

De gule felter (Sidetabeladresse, Sideadresse) indeholder de øverste 20 bit af henholdsvis sidetabellen og sideadressen ( de nederste 12 bit af den fysiske adresse er altid nul - glem ikke justering).

De tre Avl-bit er de bit , der er givet til systemet. Alt kan skrives i dem.

Beskrivelse af flagene:

Se også

Noter

  1. Mere specifikt skrives den fulde adresse (32 bit) til CR2 . For eksempel. hvis programmet fik adgang til adressen 00001543h (det vil sige den anden side (nr. 1) med sider på 4 KB hver), så vil dette nummer blive skrevet til CR2
  2. The Unabridged Pentium 4: IA32 Processor Genealogy ISBN 0-321-24656-X "PAT Feature (Page Attribute Table)" side 797
  3. kernel.org/doc/ols/2008/ols2008v2-pages-135-144.pdf
  4. Du kan fjerne enhver side fra TLB - cachen med den privilegerede INVLPG- kommando

Litteratur

Links