Beskyttet tilstand

I computing, beskyttet tilstand, også kaldet beskyttet virtuel adresse tilstand, er en operationel tilstand af x86-kompatible CPU'er. Det gør det muligt systemets software for at bruge funktioner som virtuel hukommelse, personsøgning og sikker multi-tasking designet til at øge et operativsystem kontrol over applikationssoftware.

Når en processor, der understøtter x86 beskyttede tilstand er tændt, begynder den at udføre instruktionerne i real mode, for at opretholde bagudkompatibilitet med tidligere x86 processorer. Beskyttet tilstand kan kun indtastes efter systemsoftwaren opsætter flere deskriptor borde og muliggør beskyttelse Aktiver bit i kontrollen registrere 0.

Beskyttet tilstand blev først tilføjet til x86-arkitekturen i 1982, med udgivelsen af ​​Intels 80286-processor, og senere udvidet med udgivelsen af ​​80.386 i 1985. På grund af de forbedringer tilføjet af beskyttet tilstand, er det blevet almindeligt vedtaget, og er blevet det grundlaget for alle efterfølgende forbedringer til x86-arkitekturen, selv om mange af disse forbedringer, som ekstra instruktioner og nye registre, også bragt fordele til den virkelige tilstand.

Historie

Intel 8086, forgængeren til 286, blev oprindeligt designet med en 20-bit adresse bus for sin hukommelse. Dette gjorde det muligt for processoren at få adgang til 2 bytes hukommelse, svarende til 1 megabyte. På det tidspunkt var 1 megabyte betragtet som en relativt stor mængde hukommelse, så designerne af IBM Personal Computer forbeholdt de første 640 kilobyte til brug for applikationer og operativsystemet, og de resterende 384 kilobyte for BIOS og hukommelse til add-on enheder.

Da omkostningerne hukommelse faldt og hukommelse forøges, 1 MB begrænsning blev et væsentligt problem. Intel har til formål at løse denne begrænsning sammen med andre med udgivelsen af ​​286.

Den 286

Den oprindelige beskyttet tilstand, udgivet med 286, ikke blev udbredt. Det blev brugt for eksempel ved Microsoft Xenix ved Sammenhængende og ved Minix. Flere mangler såsom manglende evne til at få adgang til BIOS eller DOS opkald på grund af manglende evne til at skifte tilbage til reelle tilstand uden at nulstille processoren forhindret udbredt brug. Accept blev yderligere vanskeliggjort af det faktum, at 286 kun tilladt memory adgang i 16 bit segmenter via hver af fire segment registre, hvilket betyder kun 4 * 2 bytes, svarende til 256 kilobyte, kunne tilgås på et tidspunkt. Fordi at ændre et segment register i beskyttet tilstand forårsaget en 6-byte segment deskriptor der skal indlæses i CPU'en fra hukommelsen, segmentet register belastning instruktion tog mange snesevis af processor cykler, hvilket gør det meget langsommere end på 8086; derfor, at strategien for computing segment adresser on-the-fly for at få adgang datastrukturer større end 128 kilobyte blev upraktisk, selv for de få programmører, der havde mestret det på 8086/8088.

Den 286 vedligeholdte bagudkompatibilitet med dens forløber 8086 ved først at indtaste reelle tilstand på opstart. Rigtig tilstand fungerede stort set identisk med den 8086, så langt de fleste af de eksisterende 8086 software til at køre uændret på den nyere 286. real mode også tjente som en mere grundlæggende tilstand, hvor beskyttet tilstand kunne oprettes, løse en slags hønen og -egg problem. For at få adgang den udvidede funktionalitet af 286, vil styresystemet oprette nogle tabeller i hukommelsen, der kontrollerede hukommelse adgang i beskyttet tilstand, der er adresserne på disse tabeller ind i nogle særlige registre over processoren, og derefter sat processoren i beskyttet tilstand. Dette gjorde det muligt 24 bit adressering som tillod processoren adgang 2 bytes af hukommelse, der svarer til 16 megabyte.

Den 386

Med udgivelsen af ​​den 386 i 1985, blev mange af de spørgsmål, der forhindrer udbredt anvendelse af den tidligere beskyttede tilstand behandles. 386 blev frigivet med en adressebus størrelse på 32 bits, som giver mulighed for 2 bytes hukommelse adgang til, svarende til 4 gigabyte. Segmentet størrelser blev også øget til 32 bit, hvilket betyder, at den fulde adresserum på 4 gigabyte kunne tilgås uden at skulle skifte mellem flere segmenter. Ud over den øgede størrelse af adressen bus- og segment registre, blev mange andre nye funktioner tilføjet med det formål at øge operationelle sikkerhed og stabilitet. Beskyttet tilstand er nu brugt i stort set alle moderne operativsystemer, der kører på x86-arkitekturen, såsom Microsoft Windows, Linux, og mange andre.

Desuden lære af de fejl i den 286 beskyttede tilstand for at tilfredsstille behovene for flerbruger DOS, Intel tilføjet en separat virtuel 8086-tilstand, som tillod flere virtualiserede 8086 processorer til at blive efterlignet på støtten 386. Hardware til virtualisering den beskyttede tilstand i sig selv ville dog nødt til at vente en anden 20 år.

386 tilføjelser til beskyttet tilstand

Med udgivelsen af ​​386, blev følgende ekstra funktioner tilføjet til beskyttet tilstand:

  • Personsøgning
  • 32-bit fysiske og virtuelle adresserum
  • 32-bit segment forskydninger
  • Mulighed for at skifte tilbage til reelle tilstand uden at nulstille
  • Virtuel 8086-tilstand

Indtastning og afslutte beskyttet tilstand

Indtil udgivelsen af ​​386, har beskyttet tilstand ikke tilbyde en direkte metode til at skifte tilbage til real mode engang beskyttede tilstand blev indtastet. IBM udtænkt en løsning, der er involveret nulstille CPU'en via keyboard controller og spare systemet registrerer, stak pointer og ofte interrupt masken i real-time clock-chip RAM. Dette gjorde det muligt for BIOS at genoprette CPU til en lignende tilstand og begynde at udføre kode, før nulstillingen. Senere blev en tredobbelt fejl bruges til at nulstille 286 CPU, hvilket var en meget hurtigere og renere end keyboard controller metode.

For at indtaste beskyttet tilstand, skal den globale Descriptor Table først oprettes med mindst tre indgange: en null deskriptor, en kode segment deskriptor og datasegment deskriptor. I en IBM-kompatibel maskine, også A20 linje skal være aktiveret for at tillade brugen af ​​alle adresse linjer, så CPU'en kan få adgang til over 1 megabyte hukommelse. Efter at have udført disse to trin, skal PE-bit indstilles i CR0 registret og skal ske en langt spring for at rydde amtmand input køen.

Med udgivelsen af ​​386, kunne beskyttede tilstand forlades af segmentet registre lastning med ægte tilstand værdier, invaliderende A20 linje og rydde PE bit i CR0 registeret, uden at det er nødvendigt for at udføre de indledende opsætning nødvendige skridt med 286.

Egenskaber

Beskyttet tilstand har en række funktioner designet til at forbedre et operativsystem kontrol over software, for at øge sikkerheden og systemets stabilitet. Disse tilføjelser tillader operativsystemet til at fungere på en måde, der ville være betydeligt mere vanskeligt eller endog umuligt uden ordentlig hardware support.

Privilege niveauer

I beskyttet tilstand, er der fire privilegium niveauer eller ringe, nummereret fra 0 til 3, med ringen 0 er det mest privilegerede og 3 er den mindste. Brugen af ​​ringe mulighed for systemsoftware at begrænse opgaver fra adgang til data, så ring porte eller udføre privilegerede instruktioner. I de fleste miljøer, operativsystemet og nogle enhedsdrivere kørt i ring 0 og programmer kører i ring 3.

Rigtig tilstand ansøgning kompatibilitet

Ifølge Intel 80286 programmeringsruden Reference Manual,

For det meste, den binære kompatibilitet med real-tilstand kode, evnen til at få adgang til op til 16 MB fysisk hukommelse, og 1 GB virtuel hukommelse, var de mest åbenbare ændringer programmører. Dette var ikke uden sine begrænsninger, hvis et program udnyttet eller påberåbt sig nogen af ​​de teknikker nedenfor det ville ikke køre:

  • Segment aritmetiske
  • Privilegerede instruktioner
  • Direkte hardware adgang
  • Skrivning til en kodesegmentet
  • Udfører data
  • Overlappende segmenter
  • Anvendelse af BIOS-funktionerne, på grund af BIOS afbryder reserveres af Intel

I virkeligheden, næsten alle DOS programmer overtrådt disse regler. På grund af disse begrænsninger, blev virtuel 8086-tilstand indført med 386. På trods af sådanne potentielle tilbageslag, kan Windows 3.0 og dens efterfølgere drage fordel af den binære kompatibilitet med real mode til at køre mange Windows 2.x applikationer, der kører i real-tilstand i Windows 2.x, i beskyttet tilstand.

Virtuel 8086-tilstand

Med udgivelsen af ​​386 beskyttede tilstand tilbyder, hvad Intel manualer kalder virtuel 8086-tilstand. Virtuel 8086 mode er designet til at tillade tidligere skrevet for 8086 til at køre uændret og samtidig med andre opgaver, uden at kompromittere sikkerhed eller systemets stabilitet.

Virtuel 8086-tilstand, er imidlertid ikke helt bagud kompatibel med alle programmer. Programmer, der kræver segment manipulation, privilegerede instruktioner, direkte adgang hardware eller bruge selv-modificerende kode vil generere en undtagelse, som skal betjenes af operativsystemet. Hertil kommer, programmer, der kører i virtuelle 8086-tilstand generere en fælde med brug af instruktioner, der involverer input / output, hvilket negativt kan påvirke ydeevnen.

På grund af disse begrænsninger, kan nogle programmer oprindeligt designet til at køre på 8086 ikke køres i virtuel 8086-tilstand. Som et resultat, er systemsoftware tvunget til enten kompromis systemets sikkerhed eller bagud kompatibilitet når det drejer sig arven software. Et eksempel på et sådant kompromis kan ses med udgivelsen af ​​Windows NT, som faldt bagudkompatibilitet for "dårligt opførte sig" DOS-programmer.

Segment adressering

I det virkelige tilstand hver logiske adresse peger direkte ind i fysiske hukommelse placering, hver logisk adresse består af to 16 bit dele: Segmentet del af den logiske adresse indeholder base-adressen på et segment med en detaljeringsgrad på 16 bytes, dvs. segmenter kan starte på fysiske adresse 0, 16, 32, ..., 2-16. Forskydningen del af den logiske adresse indeholder et offset inde i segmentet, dvs. den fysiske adresse kan beregnes som henholdsvis mod 2 hvert segment har en størrelse på 2 bytes.

Beskyttet tilstand

I beskyttet tilstand segment_part er erstattet af en 16 bit selector, de 13 øverste bits af vælgeren indeholder indekset for en post i en deskriptor tabel. Den næste bit angiver hvis operationen bruges med GDT eller LDT. De to laveste bit af vælgeren kombineres for at definere det privilegium at anmodningen; hvor en værdi på 0 har den højeste prioritet og værdi på 3 er den laveste.

Punktet deskriptor tabel definerer:

  • den reelle lineære adresse segmentet
  • en grænseværdi for segmentet størrelse
  • nogle attribut bits

286

Segmentet adressen inde i deskriptor tabelindgangen har en længde på 24 bit så hver byte af fysisk hukommelse kan defineres som bundet af segmentet. Grænseværdien inde i deskriptor bordet post har en længde på 16 bit, så segment længde kan være mellem 1 byte og 2 byte. Den beregnede lineære adresse er lig den fysiske hukommelsesadresse.

386

Segmentet adresse inde i deskriptor tabellen post er udvidet til 32 bit så hver byte af den fysiske hukommelse kan defineres som bundet af segmentet. Grænseværdien inde i deskriptor tabellen post er udvidet til 20 bit og afsluttes med en granularitet flag:

  • Hvis G-bit er nul grænse har en detaljeringsgrad på 1 byte, kan nemlig segmentstørrelse være 1, 2, ..., 2 bytes.
  • Hvis G-bit er en grænse har en granulering 2 bytes, kan nemlig segmentstørrelse være 1 × 2, 2 × 2, ..., 2 × 2 byte. Hvis personsøgning er slukket, den beregnede lineære adressen er lig den fysiske hukommelse adresse. Hvis personsøgning er tændt, er den beregnede lineære adresse, der bruges som input for personsøgning.

Den 386-processor bruger også 32 bit-værdier for adressen offset.

For at opretholde kompatibilitet med 286 beskyttede tilstand en ny standard flag blev tilføjet. Hvis D-bit af en kode segment er off alle kommandoer inde i dette segment vil blive fortolket som 16-bit-kommandoer som standard; hvis det er på, vil de blive fortolket som 32-bit-kommandoer.

Strukturen i segmentet deskriptor post

  •  Byteafstand inde post.
  •  Første interval er lidt forskudt inde indrejse andet område er lidt forskudt inde byte.

Personsøgning

Ud over at tilføje virtuel 8086-tilstand, er 386 også tilføjet personsøgning til beskyttet tilstand. Gennem personsøgning, kan systemsoftware begrænse og kontrollere en opgave adgang til sider, som er dele af hukommelsen. I mange operativsystemer, der personsøgning bruges til at skabe en uafhængig virtuelt adresserum for hver opgave. Dette forhindrer en opgave at manipulere med hukommelsen af ​​en anden. Personsøgning tillader også, at siderne skal flyttes ud af primær opbevaring og på en langsommere og større sekundær lagring, såsom en harddisk. Dette giver mulighed for mere hukommelse, der skal bruges, end fysisk tilgængelig i primær opbevaring. X86-arkitekturen muliggør styring af sider gennem to arrays: side mapper og side borde. Oprindeligt en side mappe var på størrelse med en side, 4 kilobyte, og indeholdt 1.024 side opslag, selv om de efterfølgende forbedringer til x86-arkitekturen har tilføjet muligheden for at anvende større sidestørrelser. Hver PDE indeholdt en pointer til en side tabel. En side tabel var også oprindeligt 4 kilobyte i størrelse og indeholdt 1.024 side table poster. Hver PTE indeholdt en pointer til den faktiske sidens fysiske adresse og bruges kun, når der anvendes 4 kilobyte sider. På ethvert givet tidspunkt, kun én side bibliotek kan være i aktiv brug.

Multitasking

Gennem brug af ringene, privilegerede opkald porte, og opgaven staten Segment, der blev indført med 286, var forebyggende multitasking muliggjort på x86-arkitekturen. TSS giver generelle formål registre, segment selector marker, og stakke til alle modificeres uden at påvirke dem i en anden opgave. TSS giver også mulighed en opgave privilegium niveau, og jeg / tilladelser O-port til at være uafhængig af en anden opgave er.

I mange operativsystemer, er de fulde funktioner i TSS ikke brugt. Dette er almindeligt skyldes bærbarhed bekymringer eller på grund af problemer med ydeevnen oprettet med hardware opgave switche. Som et resultat mange operativsystemer bruger både hardware og software til at skabe et multitasking system.

Operativsystemer

Operativsystemer som OS / 2 1.x forsøger at skifte processoren mellem beskyttede og reelle tilstande. Dette er både langsom og usikker, fordi en real mode program let kan gå ned en computer. OS / 2 1.x definerer restriktive programmering regler, der giver en familie API eller bundet program til at køre i enten reel eller beskyttet tilstand. Nogle tidlige Unix-operativsystemer, OS / 2 1.x og Windows brugt denne funktion. Windows 3.0 var i stand til at køre real mode programmer i 16-bit beskyttet tilstand. Windows 3.0, når du skifter til beskyttet tilstand, besluttet at bevare den fælles privilegium niveau model, der blev brugt i real-mode, hvilket er grunden til Windows-programmer og DLL-filer kan tilslutte interrupts og gøre direkte adgang hardware. Der varede gennem Windows 9x-serien. Hvis en Windows 1.x eller 2.x programmet er skrevet korrekt og undgår segment aritmetik, vil det køre på samme måde i både reelle og beskyttede tilstande. Windows-programmer generelt undgå segment aritmetiske fordi Windows implementerer en software virtuel hukommelse ordning, flytter programmet kode og data i hukommelsen, når programmerne ikke kører, så manipulere absolutte adresser er farligt; programmer bør kun holde håndtagene til hukommelsesblokke, når den ikke kører. Start en gammel program, mens Windows 3.0 kører i beskyttet tilstand udløser en dialogboks advarsel, hvilket tyder på at enten køre Windows i real mode eller at få en opdateret version af programmet. Opdatering velopdragen programmer ved hjælp af MARK nytte med MEMORY parameter undgår denne dialog. Det er ikke muligt at have nogle GUI programmer, der kører i 16-bit beskyttet tilstand og andre GUI programmer, der kører i real mode. I Windows 3.1 reelle tilstand ophørte med at blive støttet.

I dag er 16-bit beskyttet tilstand stadig bruges til kørende programmer, fx DPMI kompatibel DOS extender programmer eller Windows 3.x applikationer og visse klasser af enhedsdrivere i OS / 2 2.0 og senere, alt under kontrol af en 32-bit-kernen.

  0   0
Forrige artikel Cao Bochun
Næste artikel Charles Askegard

Relaterede Artikler

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha