Ægte tilstand

Real mode (eller real address mode; engelsk  real-address mode ) - driftstilstand for x86 arkitektur processorer , som bruger segmenthukommelsesadressering ( hukommelsescelleadressen er dannet af to tal: adressen på begyndelsen af ​​segmentet forskudt med 4 bits og cellens forskydning fra begyndelsen af ​​segmentet; enhver proces har adgang til hele computerens hukommelse). Til at begynde med havde tilstanden ikke noget navn, den blev først kaldt "rigtig" efter oprettelsen af ​​80286 processorer , der understøttede en tilstand kaldet " beskyttet " (tilstanden kaldes "beskyttet", fordi den blev oprettet for at "beskytte" processer fra hinanden - for at forhindre processer i at få adgang til hinandens hukommelsesområder; men for 80286-processorerne var den beskyttede tilstand ikke rigtig "sikker", da disse processorer ikke understøttede hukommelsessøgning , som først blev implementeret i 80386-processorerne ).

Beskrivelse

I virkelig tilstand består den virtuelle adresse på en hukommelsescelle af to tal:

For at beregne den fysiske eller lineære adresse på en hukommelsescelle, beregner processoren den fysiske adresse for begyndelsen af ​​segmentet - den multiplicerer segmentdelen af ​​den virtuelle adresse med tallet 16 (eller, tilsvarende, flytter den til venstre med 4 bits ), og tilføjer derefter det resulterende tal med en offset fra begyndelsen af ​​segmentet:

segment_part × 16 + offset

Hvis segmentdelen af ​​adressen ikke er specificeret (i instruktionskoden ), læser processoren segmentdelen af ​​adressen fra et af segmentregistrene ( hvorfra man afhænger af instruktionskoden).

Med denne adressering vil adresserne 0400 h : 0001h og 0000h: 4001h (bogstavet "h" betyder, at tallet er skrevet i hexadecimal notation ) referere til den samme hukommelsescelle, da 400h × 16 + 1 = 0 × 16 + 4001h .

Minimum adresse: 0000h:0000h ( 0 bytes ).

Maksimal adresse: FFFFh:FFFFh ( FFFFh × 16 + FFFFh) = 10FFEFh =  1114095 B = 100000h + 10000h - 11h = Mi B + 64  Ci B - 17 B ).

Den beskrevne metode til beregning af den fysiske adresse giver dig mulighed for at adressere ( 1 MiB + 64 KiB - 17 B + 1 B ) hukommelse (adresseområde 0000h ... 10FFEFh ); 1 byte tilføjes for at tage højde for byten på adressen nul. Imidlertid har 8086 / 8088-processorerne kun 20 adresselinjer (metalspor), så den tilgængelige hukommelsesstørrelse er 2 20 B = 1 MiB (adresseområde 0000h ... FFFFFh ), og adressering højere (i området 100000h ... 10FFEFh ) forårsager et overløb ("twist") - den mest signifikante bit af adressen ignoreres, og 64 KiB tilgås i startadresserne ( 0000h ... FFEFh ).

80286-processorerne har en 24-bit adressebus ( 2 24  B = 16 MiB hukommelse kan adresseres), så de løber ikke over ("overløb").

IBM PC /AT -computere er bygget på Intel 80286-processoren , og for at opretholde kompatibilitet med IBM PC og IBM PC/XT-computere (bygget på Intel 808x) er de udstyret med et logisk element ( gate ), der styrer driften af ​​den 21. adresselinje (wire) (betegnet "A20") og navngivet "Gate A20". Dette logiske element er deaktiveret som standard (svarende til kompatibilitetstilstand) og styres via tastaturcontrolleren (normalt gennem Intel 8042-chippen ).

Brug

Når computeren er tændt, eller efter at processoren er nulstillet , starter x86-processoren i rigtig tilstand. Denne tilstand starter udførelsen af ​​BIOS -koden på en IBM-PC-kompatibel computer . I virkelig tilstand kan initialisering af noget hardware udføres (for eksempel initialisering af chipsættets RAM -controller ), der er nødvendig for driften af ​​programmer efter at have skiftet processoren til beskyttet tilstand . Hvis størrelsen af ​​koden og dataene for det program, der udfører initialiseringen af ​​hardwaren, er lille, kan dette program udføres i real mode. Så for eksempel fungerer DOS i real mode og forsøger ikke at sætte processoren i beskyttet tilstand. Tidlige versioner af Microsoft Windows kunne kun køre i rigtig tilstand. Selv Windows 3.0, blandt de tre driftstilstande, sørgede for at køre i ægte tilstand og kunne køres på 8086-processoren.

80286 og nyere processorer, når de arbejder i real mode, har generelt de samme adresserumsbegrænsninger som 8086 processorer. Programmer designet til real mode kræver specielle softwareværktøjer for at bruge den større hukommelse. På maskiner med 80286 og nyere processorer kan du for eksempel bruge drivere som HIMEM.SYS . Der er også faciliteter leveret af den udokumenterede LOADALL- kommando (som dog kommer med en række vanskeligheder). 80386 og nyere processorer introducerede en funktion, der ikke er dokumenteret af Intel, og som giver dig mulighed for at sætte processoren i en tilstand, der uformelt kaldes " uvirkelig " tilstand. Når det kører i uvirkelig tilstand, kan et program, omend med nogle begrænsninger, bruge et 32-bit fysisk adresserum ( 2 32  B = 4 GiB ).

Selvom Intel ikke sørgede for muligheden for at skifte 80286-processoren fra beskyttet tilstand til ægte tilstand, har IBM PC/AT -computeren denne evne på grund af hardwarefunktioner og understøttelse fra BIOS . IBM PC/AT tillader programmer at sende et nulstillingssignal til processoren. BIOS-koden kan skelne mellem genstartsårsager/-tilstande ved at undersøge indholdet af den ikke-flygtige CMOS -hukommelsesplacering på adressen 0Fh og RAM - placeringen på adressen 40h :72h . Ethvert program, ved at skrive passende værdier til de navngivne hukommelsesceller og give et nulstillingssignal til processoren, kan tvinge processoren til at genstarte; efter en genstart vil processoren begynde at udføre BIOS-koden; BIOS-koden vil læse værdierne fra ovenstående hukommelsesceller, vil ikke udføre den indledende belastning, vil ikke ændre indholdet af RAM (de samme data vil forblive i RAM som før processoren blev genstartet), og vil overføre kontrol til koden placeret i RAM på adressen skrevet til RAM cellen med adresse 40h:67h . Programmet kan således gentagne gange skifte mellem beskyttet og reel tilstand, selvom denne metode kræver et relativt stort tidsforbrug for hver switch.

Muligheden for en "normal" (uden tricks) softwareovergang fra beskyttet tilstand til ægte tilstand blev kun leveret af Intel i 80386-processorer og nyere modeller. Men i 80386 er en anden ny funktion af stor værdi - virtuel 8086 -tilstand (V86, VM86). I V86-tilstand kan programmer bruge den gamle (segment) måde at adressere 8086-processorens hukommelse på; i dette tilfælde vil processoren være i beskyttet tilstand, og den fysiske (lineære) adresse beregnet i henhold til 8086-reglerne vil være personsøgning. Takket være V86-tilstanden blev det muligt at skabe virtuelle maskiner . Operativsystemet kan begrænse adgangen til et bestemt område af hukommelsen (se hukommelsesbeskyttelse ) for hver virtuel maskine, kan allokere virtuel hukommelse til dem i stedet for reel (fysisk) og kan kontrollere adgangen til I/O-porte . Ovenstående bruges til at organisere arbejdet i DOS-operativsystemet under kontrol af multitasking -operativsystemer som OS / 2 og Microsoft Windows. Samtidig er der kun 1 MiB adresseplads tilgængelig for hver virtuelle DOS-maskine , og flere virtuelle DOS-maskiner kan køre på samme tid.

Adressepladsstruktur

Adresserummet på en IBM-PC-kompatibel computer i rigtig tilstand er opdelt i fire dele:

Hukommelsesområdet kaldet " main " ( eng.  konventionel hukommelse ) bruges til at lagre interrupt-vektortabellen og forskellige BIOS -data , placeret i RAM startende ved adressen 0000h:0000h , optager 640 KiB og kan bruges af 16-bit DOS - programmer .

Hukommelsesområdet kaldet "upper" eller " upper " ( engelsk  upper memory area , UMA ), fylder 384 KiB , bruges til at lagre information om computerhardwaren , er betinget opdelt i tre områder på hver 128 KiB . Det første område bruges til at gemme videohukommelse . BIOS - adaptere er tilgængelige gennem det andet område . Det tredje område bruges af BIOS-koden, men normalt ikke fuldstændigt (normalt er der 64 KiB tilbage ). Resten af ​​adresserummet fra det øverste område ved hjælp af specielle drivere (for eksempel EMM386.EXE , EMS.EXE, LIMEMS.EXE osv.) og/eller udvidelsesenheder kan bruges til at få adgang til udvidet hukommelse i henhold til dens specifikation ( eng  ) EMS,expanded memory specification

Hukommelsesområdet kaldet " høj " ( engelsk  high memory area , HMA ) er placeret umiddelbart efter den første mebibyte og optager 64 KiB minus 16 bytes . Dets udseende skyldes en funktion i 80286-processoren , som har 24 adresselinjer, og når man får adgang til adresser over FFFFh: 000Fh, går adgangen til den anden mebibyte af hukommelsen (i stedet for begyndelsen af ​​den første mebibyte, som i 8086 / 8088 ). Det er en delmængde af "ekstra" (engelsk udvidet) hukommelse.

Hukommelsesområdet kaldet " additional "(eng. extended ) er tilgængeligt for 16-bit programmer i henhold til dets specifikation ( eng.  e x tended memory specification , XMS ), starter fra adresser placeret over den første mebibyte og har en størrelse afhængig af størrelsen af ​​den installerede på computerens RAM.

Titelforvirring

Se også