Todellinen tila

Real mode (tai real address mode; Englanti  real-address mode ) - x86 - arkkitehtuuriprosessorien toimintatila , jossa käytetään segmenttimuistiosoitteita ( muistisolun osoite muodostuu kahdesta numerosta: segmentin alun osoite siirretty 4 bittiä ja solun siirtymä segmentin alusta; millä tahansa prosessilla on pääsy koko tietokoneen muistiin). Aluksi tilalla ei ollut nimeä, sitä kutsuttiin "todelliseksi" vasta sen jälkeen, kun oli luotu 80286-prosessorit , jotka tukevat " suojattu " -tilaa." (tilaa kutsutaan "suojatuksi", koska se luotiin "suojaamaan" prosesseja toisiltaan - jotta prosessit eivät pääse käsiksi toistensa muistialueille; mutta 80286-suorittimissa suojattu tila ei ollut todella "suojattu", joten miten nämä prosessorit eivät tukeneet muistihakua , joka otettiin ensimmäisen kerran käyttöön 80386-prosessoreissa ).

Kuvaus

Reaalitilassa muistisolun virtuaaliosoite koostuu kahdesta numerosta:

Muistisolun fyysisen tai lineaarisen osoitteen laskemiseksi prosessori laskee segmentin alun fyysisen osoitteen - se kertoo virtuaaliosoitteen segmentin osan luvulla 16 (tai vastaavasti siirtää sen vasemmalle neljällä bittiä ), ja lisää sitten tuloksena olevan luvun siirtymällä segmentin alusta:

segmentin_osa × 16 + offset

Jos osoitteen segmenttiosaa ei ole määritetty ( käskykoodissa ), prosessori lukee osoitteen segmenttiosan yhdestä segmenttirekisteristä ( josta yksi riippuu käskykoodista).

Tällä osoitteella osoitteet 0400 h : 0001h ja 0000h: 4001h (kirjain "h" tarkoittaa, että numero on kirjoitettu heksadesimaalimuodossa ) viittaavat samaan muistisoluun, koska 400h × 16 + 1 = 0 × 16 + 4001h .

Minimiosoite : 0000h:0000h ( 0 tavua ).

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

Kuvatun fyysisen osoitteen laskentamenetelmän avulla voit osoittaa ( 1 MiB + 64 KiB - 17 B + 1 B ) muistia (osoitealue 0000h ... 10FFEFh ); 1 tavu lisätään osoitteeseen nolla olevan tavun huomioon ottamiseksi. 8086 / 8088-prosessoreissa on kuitenkin vain 20 osoiteriviä (metalliraitaa), joten käytettävissä olevan muistin koko on 2 20 B = 1 MiB (osoitealue 0000h ... FFFFFh ), ja osoitteita suurempi (välillä 100000h ... 10FFEFh ) aiheuttaa ylivuodon (" twist") - osoitteen merkittävin bitti jätetään huomioimatta ja aloitusosoitteissa ( 0000h ... FFEFh ) käytetään 64 KiB :tä .

80286-prosessoreissa on 24-bittinen osoiteväylä ( 2 24  B = 16 MiB muistia voidaan osoittaa), joten ne eivät vuoda yli ("overflow").

IBM PC / AT -tietokoneet on rakennettu Intel 80286 -prosessorille , ja yhteensopivuuden säilyttämiseksi IBM PC :n ja IBM PC / XT -tietokoneiden (rakennettu Intel 808x:lle) kanssa on varustettu logiikkaelementillä ( portti ), joka ohjaa 21. osoiterivin toimintaa. (johto) (merkitty "A20") ja nimeltä "Gate A20". Tämä logiikkaelementti on oletuksena pois käytöstä (vastaa yhteensopivuustilaa), ja sitä ohjataan näppäimistöohjaimella (yleensä Intel 8042 -sirun kautta ).

Käyttö

Kun tietokone on käynnistetty tai prosessori on nollattu , x86-prosessori käynnistyy reaalitilassa . Tämä tila käynnistää IBM-PC-yhteensopivan tietokoneen BIOS -koodin suorittamisen . Reaalitilassa voidaan suorittaa joidenkin laitteistojen alustus (esimerkiksi piirisarjan RAM -ohjaimen alustus ), joka on tarpeen ohjelmien toiminnalle prosessorin kytkemisen jälkeen suojattuun tilaan . Jos laitteiston alustuksen suorittavan ohjelman koodin ja datan koko on pieni, tämä ohjelma voidaan suorittaa reaalitilassa. Joten esimerkiksi DOS toimii reaalitilassa eikä yritä laittaa prosessoria suojattuun tilaan. Microsoft Windowsin varhaiset versiot pystyivät toimimaan vain reaalitilassa. Jopa Windows 3.0 kolmen toimintatilan joukossa toimi reaalitilassa ja sitä voitiin käyttää 8086-prosessorilla.

Reaalitilassa toimivissa prosessoreissa 80286 ja uudemmissa on yleensä samat osoiteavaruuden rajoitukset kuin prosessoreissa 8086. Reaalitilaan suunnitellut ohjelmat vaativat erityisiä ohjelmistotyökaluja suuremman muistin käyttämiseksi. Koneissa, joissa on 80286 ja uudemmat prosessorit, voit käyttää esimerkiksi ohjaimia, kuten HIMEM.SYS . Myös dokumentoimaton LOADALL - komento tarjoaa toimintoja (johon liittyy kuitenkin useita vaikeuksia). 80386 ja uudemmat prosessorit esittelivät ominaisuuden, jota Intel ei ole dokumentoinut ja jonka avulla voit asettaa prosessorin tilaan, jota kutsutaan epätodelliseksi tilaan. Kun ohjelma suoritetaan epätodellisessa tilassa, se voi, joskin tietyin rajoituksin, käyttää 32-bittistä fyysistä osoiteavaruutta ( 2 32  B = 4 GiB ).

Vaikka Intel ei tarjonnut mahdollisuutta vaihtaa 80286-prosessoria suojatusta tilasta reaalitilaan, IBM PC / AT -tietokoneella on tämä ominaisuus laitteistoominaisuuksien ja BIOSin tuen ansiosta . IBM PC/AT sallii ohjelmien lähettää nollaussignaalin prosessorille. BIOS-koodi pystyy erottamaan uudelleenkäynnistyksen syyt/tilat tarkastelemalla haihtumattoman CMOS -muistipaikan sisältöä osoitteessa 0Fh ja RAM - paikan osoitteesta 40h :72h . Mikä tahansa ohjelma, kirjoittamalla sopivat arvot nimettyihin muistisoluihin ja antamalla palautussignaalin prosessorille, voi pakottaa prosessorin käynnistymään uudelleen; uudelleenkäynnistyksen jälkeen prosessori alkaa suorittaa BIOS-koodia; BIOS-koodi lukee arvot yllä olevista muistisoluista, ei suorita alkulatausta, ei muuta RAM-muistin sisältöä (samat tiedot säilyvät RAM-muistissa kuin ennen prosessorin uudelleenkäynnistystä) ja siirtää ohjaus RAM:ssa olevaan koodiin osoitteella, joka on kirjoitettu RAM-soluun osoitteella 40h:67h . Siten ohjelma voi toistuvasti vaihtaa suojatun ja todellisen tilan välillä, vaikka tämä menetelmä vaatii suhteellisen paljon aikaa jokaiselle vaihdolle.

Intel tarjosi mahdollisuuden "normaaliin" (ilman temppuja) ohjelmiston siirtymiseen suojatusta tilasta todelliseen tilaan vain 80386-prosessoreissa ja uudemmissa malleissa. Kuitenkin 80386:ssa toinen uusi ominaisuus on erittäin arvokas - virtuaalinen 8086 - tila (V86, VM86). V86-tilassa ohjelmat voivat käyttää vanhaa (segmentti) tapaa osoittaa 8086-prosessorin muistia; tässä tapauksessa prosessori on suojatussa tilassa ja 8086-sääntöjen mukaan laskettu fyysinen (lineaarinen) osoite on haku. V86-tilan ansiosta virtuaalikoneiden luominen tuli mahdolliseksi . Käyttöjärjestelmä voi rajoittaa pääsyä tietylle muistialueelle (katso muistin suojaus ) jokaiselle virtuaalikoneen, voi varata niille virtuaalimuistia todellisen (fyysisen) sijaan ja hallita pääsyä I/O-portteihin . Yllä olevaa käytetään DOS-käyttöjärjestelmän työn järjestämiseen moniajokäyttöjärjestelmien , kuten OS / 2 ja Microsoft Windows, hallinnassa. Samanaikaisesti jokaiselle DOS-virtuaalikoneelle on käytettävissä vain 1 MiB osoitetilaa , ja useita DOS-virtuaalikoneita voi olla käynnissä samanaikaisesti.

Osoitetilan rakenne

IBM-PC-yhteensopivan tietokoneen osoiteavaruus reaalitilassa on jaettu neljään osaan:

Muistialuetta nimeltä " main " ( eng.  perinteinen muisti ) käytetään keskeytysvektoritaulukon ja erilaisten BIOS -tietojen tallentamiseen . Se sijaitsee RAM:ssa osoitteesta 0000h:0000h alkaen , vie 640 KiB ja sitä voivat käyttää 16-bittiset DOS - ohjelmat .

Muistialue nimeltä " ylempi " tai " ylempi " ( Englanti  ylempi muistialue , UMA ), vie 384 KiB , käytetään tallentamaan tietojatietokonelaitteistosta , on ehdollisesti jaettu kolmeen 128 KiB :n alueeseen . Ensimmäistä aluetta käytetään videomuistin tallentamiseen . BIOS - sovittimet ovat saatavilla toisen alueen kautta . Kolmannen alueen käyttää BIOS-koodi, mutta yleensä ei kokonaan (yleensä 64 KiB jäljellä ). Loput osoiteavaruudesta yläalueelta erikoisajureiden (esim. EMM386.EXE , EMS.EXE, LIMEMS.EXE jne.) ja/tai laajennuslaitteiden avulla voidaan käyttää laajennettua muistia sen mukaan. spesifikaatio ( engl.  ) EMS,laajennettu muistimäärittely

Muistialue nimeltä " high " ( englanniksi  high memory area , HMA ) sijaitsee välittömästi ensimmäisen mebitavun jälkeen ja vie 64 KiB miinus 16 tavua . Sen ulkonäkö johtuu 80286-prosessorin ominaisuudesta , jossa on 24 osoiteriviä, ja käytettäessä osoitteita, jotka ovat suurempia kuin FFFFh: 000Fh, pääsy menee muistin toiseen mebitavuun (ensimmäisen mebitavun alun sijaan, kuten 8086 / 8088 ). Se on osa "lisämuistia" (englanniksi laajennettu muisti).

Muistialue nimeltä " lisä "(eng. extended ) on käytettävissä 16-bittisille ohjelmille määrityksensä mukaan ( eng.  e x tended memory specification , XMS ), alkaa ensimmäisen mebitavun yläpuolella sijaitsevista osoitteista ja sen koko riippuu tietokoneen RAM-muistiin asennetun tiedoston koko.

Otsikko hämmennys

Katso myös