Skyddat läge (skyddat virtuellt adresseringsläge) - driftsättet för x86-kompatibla processorer . Det var delvis implementerat redan i 80286-processorn , men sättet att arbeta med minne var betydligt annorlunda där, eftersom processorerna fortfarande var 16-bitars och minnessökning inte implementerades . Den första 32-bitars implementeringen av skyddat läge är Intel 80386-processorn . Används i kompatibla processorer från andra tillverkare. Det här läget används i moderna multitasking-operativsystem, Windows , Linux , macOS .
Ett liknande läge användes av Digital Equipment (DEC) för 32-bitars datorer: VAX-11 .
I 80286-processorn implementerades förutom verkligt läge också ett skyddat läge. I skyddat läge kan processorn adressera upp till 16 MB fysiskt minne och 1 GB virtuellt minne (16384 segment på 64 KB vardera) genom att ändra adresseringsmekanismen. Att byta från verkligt läge till skyddat läge görs i mjukvara och är relativt enkelt, men för att byta tillbaka krävs en hårdvaruåterställning av processorn. Registret Machine Status Word (MSW) används för att hålla reda på processorns aktuella driftläge. Real mode-program kan inte köras i skyddat läge utan modifiering, precis som maskin- BIOS -program.
Kärnan i det skyddade läget är som följer: programmeraren och programmen han utvecklar använder ett logiskt adressutrymme, vars storlek kan vara 1 gigabyte. Den logiska adressen omvandlas automatiskt till en fysisk adress av minneshanteringsenheten (MMU). I detta fall är innehållet i segmentregistret inte direkt relaterat till den fysiska adressen, utan är segmentnumret i motsvarande tabell. Tack vare det skyddade läget kan endast den del av programmet som behövs för tillfället lagras i minnet, och resten kan lagras i externt minne (till exempel på en hårddisk). Om en del av programmet nås som för närvarande inte finns i minnet, kan operativsystemet pausa programmet, ladda den nödvändiga koddelen från externt minne och återuppta programkörningen. Följaktligen blir program som är större än mängden tillgängligt minne giltiga, och användaren känner att han arbetar med mer minne än vad han faktiskt är.
Den fysiska adressen bildas enligt följande. Segmentregistren lagrar en väljare som innehåller deskriptorindexet i deskriptortabellen (13 bitar), 1 bit som bestämmer vilken deskriptortabell som kommer att nås (lokal eller global) och 2 bitar av den begärda behörighetsnivån. Därefter öppnas motsvarande deskriptortabell och motsvarande deskriptor, som innehåller den initiala 24-bitars segmentadressen , segmentstorlek och åtkomsträttigheter, varefter den erforderliga fysiska adressen beräknas genom att addera segmentadressen med offset från 16-bitars Registrera.
Med intåget av 32-bitars 80386-processorer från Intel kan processorer arbeta i tre lägen: verklig , skyddad och virtuell 8086-processor.
I skyddat läge används de fulla funktionerna hos en 32-bitars processor - direkt tillgång till 4 GB fysiskt adressutrymme och multitasking med parallell körning av flera program ( processer ) tillhandahålls. Strängt taget är multitasking-läget organiserat av multitasking-operativsystemet, men mikroprocessorn tillhandahåller den tillförlitliga mekanismen som krävs för detta läge för att skydda uppgifter från varandra med hjälp av ett fyranivåsystem av privilegier . Även i det här läget är personsökningsminne tillgängligt, vilket ökar skyddsnivån för uppgifter från varandra och effektiviteten i deras exekvering.
Med i386-processorn insåg Intel behovet av bättre stöd för riktigt läge eftersom programvaran inte var helt redo att köras i skyddat läge vid tidpunkten för lanseringen. Därför, till exempel i i386, är det möjligt att byta från skyddat läge tillbaka till verkligt läge (under utvecklingen av 80286 ansågs det att detta inte skulle krävas, därför är det på datorer med en 80286-processor att återgå till verkligt läge är utförs av kretsar - genom en processoråterställning).
När mikroprocessorn är påslagen ställs det verkliga adressläget in automatiskt i den. Övergången till skyddat läge utförs programmatiskt genom att utföra lämplig sekvens av kommandon. Program avsedda för skyddat läge måste skrivas på ett speciellt sätt. Detta innebär att verkligt och skyddat läge är inkompatibla.
Allt fysiskt minne är uppdelat i sidor av fast storlek ( 4K byte , 2MB eller 4MB, x86_64 även 1GB). Varje sida, oavsett storlek, är justerad på en 4K -bytegräns .
Huvudidén kommer ner till bildandet av minnesbeskrivningstabeller som bestämmer tillståndet för dess individuella segment/sidor etc. Om det är brist på minne kan operativsystemet ladda en del av datan från RAM till disk, och ange en indikation på frånvaron av dessa data i minnet i beskrivningstabellen. När man försöker komma åt saknad data kommer processorn att generera ett #PF-undantag (ett slags avbrott) och ge kontroll till operativsystemet, som kommer att returnera data till minnet och sedan återföra kontroll till programmet. För program går processen att byta data från diskar obemärkt förbi.
Linjär minnesadressering är ett datorminnesadresseringsschema i skyddat läge (som börjar med Intel 80386 och andra kompatibla x86-processorer). Används av de flesta moderna multitasking-operativsystem.
Tack vare den linjära adresseringsmekanismen kan du skapa valfritt (begränsat endast av storleken på RAM ) antal oberoende virtuella adressutrymmen . Dessutom kan varje sida i det linjära adressutrymmet placeras på vilken fysisk adress som helst eller till och med sändas ut till disk.
När du använder linjär adressering är den 32 -bitars logiska adressen uppdelad i tre delar:
När du använder sidor på 4 M byte saknas den andra delen. Förskjutningen på sidan kommer att bestämmas av bitarna 21-0 (22 bitar).
För att aktivera linjär adressering måste du i skyddat läge ställa in PG -biten i CR0- registret . Först måste du skapa i minnet en sidkatalog ( English Page Directory , PD) och en sidtabell ( English Page Table , PT), och sedan ladda den fysiska adressen till sidkatalogen i CR3-registret .
Båda dessa strukturer är tabeller över katalogposter och sidtabeller ( English Page Directory Entry , PDE och English Page Table Entry , PTE) minnessidor på 4 K byte .
Båda elementen är 4 byte (32 bitar ) långa och har en liknande struktur:
De gula fälten (Sidtabellsadress, Sidadress) innehåller de övre 20 bitarna av sidtabellen respektive sidadressen ( de nedre 12 bitarna i den fysiska adressen är alltid noll - glöm inte justeringen).
De tre Avl-bitarna är de bitar som ges till systemet. Allt kan skrivas i dem.
Beskrivning av flaggorna:
av operativsystem | Aspekter|||||
---|---|---|---|---|---|
| |||||
Typer |
| ||||
Kärna |
| ||||
Processledning _ |
| ||||
Minneshantering och adressering | |||||
Ladda och initieringsverktyg | |||||
skal | |||||
Övrig | |||||
Kategori Wikimedia Commons Wikibooks Wiktionary |