Windows 32:n kokoonpanotiedot (1): perustiedot
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. 80x86-prosessorin työtila
1.1 Todellinen tila
Reaalitilan yleiskatsaus
Real Mode on vanhin 80x86-prosessorin tukema työtila ja se on myös yksinkertaisin työtila. Reaalitilaa käytetään pääasiassa varhaisissa MS-DOS-käyttöjärjestelmissä ja muissa yksinkertaisissa käyttöympäristöissä. Reaalitilassa prosessorilla on suora pääsy 1 Mt fyysiseen muistitilaan. Tämä tila on täysin yhteensopiva 8086-prosessorin toimintatavan kanssa, mistä johtuu nimi "oikea tila".
Reaalitilan ominaisuudet
-
Osoitetilan rajoitukset
- Reaalitilassa prosessori voi käyttää vain 1 Mt muistitilaa (0x00000 - 0xFFFFF).
- Muistitilaa rajoittaa 20-bittinen osoiteväylä.
-
Segmentin osoite ja offset-osoite
- Reaalitila käyttää segmentti:offset (segmentti) -menetelmää muistiosoitteisiin.
- Segmentin osoite kerrotaan 16:lla (eli siirretään vasemmalle 4 bitillä) ja lisätään offset-osoitteeseen 20-bittisen fyysisen osoitteen muodostamiseksi.
- Jos segmentin osoite on esimerkiksi 0x1234 ja offset-osoite on 0x5678, fyysinen osoite on: Fyysinen osoite = (0x1234 × 16) + 0x5678 = 0x12340 + 0x5678 = 0x179B8teksti{fyysinen osoite} = (0x16) 7 = 4 kertaa 0x12340 + 0x5678 = 0x179B8 fyysinen osoite=(0x1234×16)+0x5678=0x12340+0x5678=0x179B8
-
Ei muistisuojausta
- Reaalitilassa ei ole muistin suojausmekanismia, ja ohjelma voi mielivaltaisesti käyttää koko 1 Mt:n muistitilaa, mukaan lukien käyttöjärjestelmäalue ja muiden ohjelmien alueet.
- Tämä mahdollistaa sen, että ohjelmat voivat häiritä toisiaan ja johtaa helposti järjestelmän kaatumiseen.
-
suora pääsy laitteistoon
- Tositila mahdollistaa suoran pääsyn laitteistolaitteisiin ja I/O-portteihin.
- Reaalitilassa ohjelmat voivat olla vuorovaikutuksessa laitteiston kanssa suoraan käyttämällä I/O-käskyjä, kuten IN ja OUT.
-
Keskeytykset ja prosessorin alustus
- Reaalitila tukee laitteisto- ja ohjelmistokeskeytyksiä, joita hallitaan Interrupt Vector Table (IVT) -taulukon avulla.
- Keskeytysvektoritaulukko tallennetaan alimmalle 1KB:n muistialueelle (0x00000 - 0x003FF).
- Kun prosessori on kytketty päälle tai nollattu, se siirtyy automaattisesti reaalitilaan ja alkaa suorittaa koodia osoitteesta 0xFFFF0.
-
Suoritettavan koodin rajoitukset
- Suoritettavan koodisegmentin koko reaalitilassa on rajoitettu, yleensä koodisegmentti on enintään 64 kt (0x0000 - 0xFFFF).
Reaalitilan muistiasettelu
Reaalitilassa muistiasettelu sisältää yleensä seuraavat osat:
-
BIOS-alue
- Korkealuokkaista muistia (0xF0000 - 0xFFFFF) käytetään yleensä BIOS-koodin ja tietojen tallentamiseen.
- Käynnistyksen tai nollauksen yhteydessä prosessori alkaa suorittaa BIOS-koodia 0xFFFF0:sta.
-
Keskeytysvektoritaulukko
- Pienin 1 kt:n muistialue (0x00000 - 0x003FF) tallentaa keskeytysvektoritaulukon.
- Jokainen keskeytysvektori vie 4 tavua (2-tavuinen segmenttiosoite ja 2-tavuinen siirtymäosoite).
-
Käyttöjärjestelmät ja sovellukset
- Jäljellä olevaa muistialuetta käytetään käyttöjärjestelmäkoodille, sovelluskoodille ja datalle.
1.2 Suojaustila
Yleiskatsaus
Protected Mode on 80x86-prosessorin kehittämä työtila verrattuna todelliseen tilaan, se tarjoaa tehokkaampia muistinhallinta- ja suojaustoimintoja. Suojattu tila esiteltiin ensimmäisen kerran 80286-prosessorissa, ja sitä on laajennettu ja parannettu edelleen 80386- ja myöhemmissä prosessoreissa.
Suojatun tilan ominaisuudet
-
Laajennettu muisti-osoitetila
- Suojattu tila tukee 24- tai 32-bittistä osoiteväylää ja voi käyttää 4 Gt fyysistä muistitilaa (80386 ja uudemmat).
- Segmenttien valitsimia ja segmenttimäärityksiä käytetään muistin hallintaan, mikä mahdollistaa monimutkaisemman muistin asettelun ja hallinnan.
-
muistin suojaus
- Segmenttikuvaajien ja sivutaulukoiden avulla suojattu tila voi toteuttaa muistisuojauksen estääkseen ohjelmia pääsemästä laittomasti muiden ohjelmien tai käyttöjärjestelmien muistiin.
- Tukee eri käyttöoikeustasojen koodi- ja datasegmenttejä (taso 0 - taso 3), jotta käyttäjätilan ja ydintilan välillä saavutetaan eristys.
-
Hakumekanismi
- Tukee hakumekanismia ja kartoittaa virtuaaliosoitteet fyysisiin osoitteisiin sivutaulukoiden avulla parantaakseen entisestään muistinhallintaominaisuuksia.
- Sivun koko on yleensä 4 kt, mutta myös suuria sivuja (kuten 4 Mt) tuetaan.
-
Laitteistotuettu moniajo
- Tarjoaa laitteistotuetun usean tehtävän vaihdon, mukaan lukien Task State Segment (TSS) ja Task Register (Task Register).
- Tukee tehtäväporttia tehtävien väliseen vaihtoon ja suojaukseen.
-
Parannettu keskeytys- ja poikkeuskäsittely
- Suojatussa tilassa keskeytysten ja poikkeusten käsittelyn hallintaan käytetään IDT-taulukkoa (Interrupt Descriptor Table).
- IDT tukee porttikuvauksia (Gate Descriptor), mukaan lukien keskeytysportit, trap-portit ja tehtäväportit.
-
Virtuaalinen muisti
- Tukee virtuaalista muistia ja toteuttaa virtuaalisen osoitetilan hakumekanismin kautta, jolloin ohjelma voi käyttää suurempaa osoiteavaruutta kuin todellinen fyysinen muisti.
Suojatun tilan muistinhallinta
-
Segmenttien valitsimet ja segmenttikuvaajat
- Jokainen segmentin valitsin osoittaa segmentin kuvaajaan, joka sisältää segmentin perusosoitteen, segmentin rajan ja segmentin attribuutit (kuten käyttöoikeudet ja tyypin).
- Segmenttien valitsimia ja segmenttikuvaajia hallitaan globaalilla kuvaajataulukolla (GDT) ja paikallisen kuvaajataulukolla (LDT).
-
Hakumekanismi
- Sivutusmekanismi jakaa virtuaalisen osoitteen sivuhakemistoon (Page Directory), sivutaulukkoon (Page Table) ja sivukehykseen (Page Frame).
- Sivuhakemiston ja sivutaulukon kautta virtuaaliosoitteet kartoitetaan fyysisiin osoitteisiin muistin suojauksen ja hallinnan saavuttamiseksi.
Suojatun tilan sovellus
Suojattua tilaa käytetään laajalti nykyaikaisissa käyttöjärjestelmissä, kuten Windowsissa, Linuxissa, Unixissa jne. Ne käyttävät suojatun tilan ominaisuuksia edistyneiden toimintojen, kuten monitoimi-, usean käyttäjän ja muistin suojauksen toteuttamiseen. Suojatun tilan avulla käyttöjärjestelmä voi hallita tehokkaasti laitteistoresursseja ja tarjota vakaan ja turvallisen käyttöympäristön.
Suojattu tila on nykyaikaisten käyttöjärjestelmien ja sovellusten perusta, ja se hyödyntää täysimääräisesti 80x86-prosessorin edistyneitä ominaisuuksia järjestelmän vakauden ja turvallisuuden parantamiseksi.
1.3 Virtuaalinen 8086-tila
Virtuaalisen 8086-tilan yleiskatsaus
Virtual 8086 Mode (Virtual 8086 Mode) on 80x86-prosessorin suojatussa tilassa tarjoama erikoistila, jonka avulla prosessori voi ajaa 8086-ohjelmia ikään kuin ne suoritettaisiin tositilassa. Tätä tilaa käytetään pääasiassa taaksepäin yhteensopivuuteen, jolloin DOS-ohjelmien vanhemmat versiot voivat toimia nykyaikaisissa käyttöjärjestelmissä, kuten Windowsissa ja Linuxissa, poistumatta suojatusta tilasta.
Virtuaalisen 8086-tilan ominaisuudet
-
Todellisen tilan yhteensopivuus
- Virtuaalisen 8086-tilan avulla prosessori voi simuloida toimintaympäristöä reaalitilassa ja tukee 8086-käskysarjaa ja osoiteavaruutta.
- Prosessori voi suorittaa 8086 ohjelmaa suojatussa tilassa säilyttäen silti suojatun tilan ominaisuudet ja edut.
-
Haku- ja suojausmekanismit
- Virtuaalisessa 8086-tilassa prosessori voi silti käyttää suojatun tilan hakumekanismia virtuaalimuistin ja muistin suojauksen toteuttamiseen.
- Sivutaulukon kautta osoiteavaruus virtuaalisessa 8086-tilassa voidaan yhdistää fyysiseen muistiin, mikä tarjoaa muistin eristämisen ja suojauksen.
-
Keskeytysten ja poikkeusten käsittely
- Virtual 8086 -tila tukee keskeytys- ja poikkeuskäsittelyä, jota voidaan hallita suojatun tilan keskeytyskuvaustaulukon (IDT) kautta.
- Keskeytykset ja poikkeukset voidaan käsitellä virtuaalisella 8086-monitorilla (yleensä käyttöjärjestelmän ydin), mikä varmistaa järjestelmän vakauden ja turvallisuuden.
-
Laitteiston virtualisoinnin tuki
- Jotkut nykyaikaiset prosessorit tarjoavat laitteistotuettua virtualisointitekniikkaa, joka voi toteuttaa virtuaalisen 8086-tilan tehokkaammin.
- Esimerkiksi Intelin VT-x ja AMD:n AMD-V-teknologia voivat tarjota laitteistokiihdytettyä virtualisointitukea ja parantaa suorituskykyä.
Muistinhallinta virtuaalisessa 8086-tilassa
-
Segmentti: offset-osoitus
- Virtuaalisessa 8086-tilassa muistin osoitusmenetelmä on sama kuin reaalitilassa segmentti: offset (segmentti) -tilassa.
- Segmentin osoite ja offset-osoite muodostavat yhdessä 20-bittisen fyysisen osoitteen, joka voi käyttää jopa 1 Mt muistitilaa.
-
Hakumekanismi
- Virtuaalinen 8086-tila tukee hakumekanismia, joka voi yhdistää 20-bittisen reaalitilan osoitteen virtuaaliseen osoiteavaruuteen suojatussa tilassa.
- Sivutaulukoiden avulla voidaan saavuttaa muistin suojaus ja eristys, jotta estetään virtuaalisen 8086-tilan ohjelmia pääsemästä laittomasti muille muistialueille.
Virtuaalisen 8086-tilan soveltaminen
-
Suorita vanhempia DOS-ohjelmia
- Virtuaalista 8086-tilaa käytetään pääasiassa DOS-ohjelmien ja -sovellusten vanhempien versioiden suorittamiseen, mikä tarjoaa taaksepäin yhteensopivuuden.
- Nykyaikaisissa käyttöjärjestelmissä virtuaalinen 8086-tila mahdollistaa joidenkin vanhojen ohjelmien suorittamisen, jotka on suoritettava reaalitilassa.
-
Virtuaalikoneet ja emulaattorit
- Jotkut virtuaalikoneet ja emulaattorit käyttävät virtuaalista 8086-tilaa vanhempien käyttöjärjestelmien ja ohjelmistojen tukemiseen.
- Esimerkiksi emulaattorit, kuten DOSBox, simuloivat DOS-ympäristöä virtuaalisen 8086-tilan kautta, jolloin käyttäjät voivat käyttää klassisia DOS-pelejä ja -sovelluksia.
Virtuaalisen 8086-tilan rajoitukset
-
muistin osoitetila
- Virtuaalisessa 8086-tilassa ohjelma voi käyttää vain 1 Mt muistia osoitetilaa, jota reaalitila rajoittaa.
-
Suorituskyky yläpuolella
- Virtuaalisen 8086-tilan toteutus vaatii suojatun tilan tuen, mikä voi aiheuttaa tiettyjä suorituskyvyn lisäkustannuksia.
- Keskeytys- ja poikkeuskäsittely vaatii virtuaalisen 8086-monitorin (käyttöjärjestelmän ydin) toiminnan, mikä lisää käsittelyn monimutkaisuutta.
-
Laitteiston rajoitukset
- Kaikki laitteistot eivät tue täysin virtuaalista 8086-tilaa, ja jotkin laitteiston ominaisuudet eivät ehkä ole käytettävissä virtuaalisessa 8086-tilassa.
Tee yhteenveto
Virtuaalinen 8086-tila on 80x86-prosessorin suojatussa tilassa tarjoama erikoistila, joka on tarkoitettu pääasiassa taaksepäin yhteensopivuuteen DOS-ohjelmien vanhempien versioiden kanssa. Virtual 8086 -tilan avulla prosessori voi simuloida reaalitilan toimintaympäristöä suojatussa tilassa säilyttäen samalla suojatun tilan ominaisuudet ja edut. Tätä tilaa käytetään laajalti vanhojen ohjelmistojen, virtuaalikoneiden ja emulaattoreiden käyttämiseen.
2. Windowsin muistin hallinta
2.1 DOS-käyttöjärjestelmän muistijärjestely
DOS (Disk Operating System) -käyttöjärjestelmän muistinhallinta perustuu pääosin 8086/8088-prosessorin reaalitilan muistimalliin. Muistin osoiteavaruus reaalitilassa on 1 Mt, 0x00000 - 0xFFFFF. Tämä 1 Mt:n osoiteavaruus on jaettu useisiin pääalueisiin, joista jokaisella on tietty tarkoitus. Seuraavassa on yksityiskohtainen johdatus DOS-käyttöjärjestelmän muistijärjestelyyn.
reaalitilan muistimalli
Reaalitilassa muistiosoitteeseen päästään yhdistämällä segmentin osoite ja offset-osoite 20-bittiseksi fyysiseksi osoitteeksi. Segmentin osoitetta siirretään 4 bittiä vasemmalle ja offset-osoite lisätään todellisen fyysisen osoitteen muodostamiseksi.
muistin asettelu
1 Mt:n muistitilan asettelu reaalitilassa on suunnilleen seuraava:
-
Keskeytysvektoritaulukko (IVT): 0x00000 - 0x003FF
- Vie 1 kt (256 vektoria, 4 tavua kukin).
- Tallenna keskeytyspalvelurutiinin tuloosoite ja siihen liittyvät tiedot.
-
BIOS-tietoalue (BDA): 0x00400 - 0x004FF
- Noin 256 tavua.
- Tallentaa järjestelmä- ja laitteistoparametrit, kuten kiintolevyn, sarjaportin, rinnakkaisportin jne. tiedot.
-
Vanha muisti (perinteinen muisti): 0x00500 - 0x9FFFF
- 640 kilotavua, käytetään pääasiassa DOS-käyttöjärjestelmissä, DOS-sovelluksissa ja muistiohjelmissa (TSR).
- Voidaan käyttää ohjelmakoodina, datana, pinona jne.
-
Näyttöpuskuri: 0xA0000 - 0xBFFFF
- Näyttösovittimen käyttämä muistialue.
- 0xA0000 - 0xAFFFF: 64 kt, käytetään yleensä EGA/VGA-näytönohjainkorttien grafiikkatilassa.
- 0xB0000 - 0xB7FFF: 32 kt, käytetään yleensä yksivärisissä näyttösovittimissa (MDA).
- 0xB8000 - 0xBFFFF: 32 kt, käytetään yleensä väritekstinäyttöön (CGA, EGA, VGA tekstitila).
-
Laajennettu BIOS-tietoalue (EBDA): 0xC0000 - 0xC7FFF
- Noin 32 kt, johon on tallennettu laajennettuja BIOS-tietoja ja sovittimen BIOS-koodia.
-
BIOS-laajennusalue: 0xC8000 - 0xEFFFF
- Käytetään pääasiassa BIOSissa ja laajennuskorttien ohjaimissa (kuten verkkosovittimet, SCSI-ohjaimet jne.).
-
Järjestelmän BIOS: 0xF0000 - 0xFFFFF
- 64 kt, tallentaa järjestelmän BIOS-koodin.
- Tarjoaa perusjärjestelmän alustuksen, keskeyttää palvelurutiinin, laitteiston ohjauksen ja muita toimintoja.
2.2 80386-muistin osoitemekanismi
Intel 80386 -prosessori esitteli edistyneemmän muistin osoitemekanismin, joka tarjoaa tehokkaammat muistinhallinta- ja suojausominaisuudet kuin edeltäjänsä. 80386 tukee kahta päämuistiosoitetilaa:todellinen tilajasuojattu tila . Suojatussa tilassa otetaan käyttöön myös hakumekanismi, joka parantaa edelleen muistinhallintaominaisuuksia. Seuraavassa on yksityiskohtainen esittely:
1. Todellinen tila
Reaalitilassa 80386-prosessorilla on sama muistiosoitemenetelmä kuin 8086/8088:ssa. Se käyttää 20-bittistä osoiteväylää ja voi käyttää 1 Mt muistitilaa. Osoite lasketaan segmentin osoitteesta ja offset-osoitteesta:
- segmentin osoite: Siirto vasemmalle 4 bittiä.
- offset-osoite: Lisättynä segmentin osoitteen vasempaan siirtotulokseen saadaan 20-bittinen fyysinen osoite.
物理地址 = (段地址 << 4) + 偏移地址
2. Suojattu tila
Suojattu tila on 80386-prosessorin päätyötila, joka tarjoaa parannetut muistin suojaus- ja hallintatoiminnot. Muistin osoitus suojatussa tilassa sisältää kaksi kerrosta mekanismeja:segmentointimekanismijaHakumekanismi。
2.1 Segmentointimekanismi
Suojatussa tilassa 80386-prosessori käyttää segmenttien valitsinta ja segmentin kuvaajaa segmenttien hallintaan. Segmenttikuvaajat tallennetaan globaaliin kuvaajataulukkoon (GDT) tai paikalliseen deskriptoritaulukkoon (LDT).
-
segmentin valitsin: 16 bittiä, mukaan lukien kolme kenttää:
- indeksi: 13 bittiä, määrittää segmenttikuvaajan sijainnin GDT:ssä tai LDT:ssä.
- TI (taulukon ilmaisin): 1 bitti, joka ilmaisee, käytetäänkö GDT:tä (0) vai LDT:tä (1).
- RPL (Pyydetty etuoikeustaso): 2 bittiä, joka määrittää pyydetyn käyttöoikeustason.
-
segmentin kuvaaja: 8 tavua, mukaan lukien seuraavat kentät:
- Perusosoite: 32 bittiä, segmentin aloitusosoite.
- Segmentin raja (rajoitus): 20 bittiä, segmentin koko.
- Käyttöoikeudet ja ominaisuudet: 12 bittiä, joka kuvaa segmentin tyyppiä, käyttöoikeustasoa jne.
Lineaarinen osoitelaskenta segmentointimekanismissa on seuraava:
线性地址 = 段基址 + 偏移地址
2.2 Hakumekanismi
Hakumekanismi on toinen muistinhallintamenetelmä, jonka 80386-prosessori tarjoaa suojatussa tilassa. Se toteuttaa muistin virtualisoinnin ja suojauksen muuntamalla lineaariset osoitteet fyysisiksi osoitteiksi. Sivutusmekanismi sisältää sivuhakemistot, sivutaulukot ja sivukehykset.
- sivun hakemisto: Sisältää sivuhakemistomerkinnät (PDE:t), jokainen PDE osoittaa sivutaulukkoon.
- sivutaulukko: Sisältää sivutaulukkomerkinnät (PTE:t), jokainen PTE osoittaa sivukehykseen.
- sivun kehys: Varsinainen fyysinen muistilohko, yleensä 4 kt.
Hakumekanismin osoitekäännös on seuraava:
- Lineaariset osoitteet on jaettu kolmeen osaan: hakemistoon, taulukkoon ja sivunsisäiseen siirtymään.
- Hakemisto-osio indeksoi sivuhakemiston löytääkseen vastaavan PDE:n.
- Taulukko-osio indeksoi sivutaulukon löytääkseen vastaavan PTE:n.
- Sivun sisäinen siirtymä lisätään sivukehyksen perusosoitteeseen fyysisen osoitteen saamiseksi.
物理地址 = 页帧基址 + 页内偏移
Kaavakuva hakumekanismista:
+----------------+----------------+----------------+
| 页目录(10位) | 页表(10位) | 页内偏移(12位)|
+----------------+----------------+----------------+
3. 80386-muistinhallintayksikkö (MMU)
80386:n MMU (Memory Management Unit) vastaa segmentoinnista ja hakuosoitteen muuntamisesta ja toteuttaa muistin suojauksen.
-
CR0 rekisteri: Ohjausrekisteri suojatun tilan ja henkilöhaun käyttöön ottamiseksi/poistamiseksi käytöstä.
- PE-bitti (suojaus käytössä): Ota suojattu tila käyttöön.
- PG-bitti (hakutoiminto käytössä): Ota sivutus käyttöön.
-
CR3 rekisteri: Tallennussivuhakemiston perusosoite.
-
CR2 rekisteri: Tallentaa viimeisen sivuvirheen lineaarisen osoitteen.
4. Suojamekanismi
Suojatussa tilassa 80386-prosessori tarjoaa useita suojamekanismeja muistin ja järjestelmän turvallisuuden varmistamiseksi:
- Etuoikeustasot : 0–3 tasoja on yhteensä neljä, ja taso 0 on korkein. Hallitse pääsyä koodiin ja tietoihin.
- segmentin suojaus: Toteuta segmentin rajatarkistus ja pääsynhallinta segmenttikuvaajan attribuuttikenttien kautta.
- sivun suojaus: PTE:n attribuuttikentän kautta toteutetaan sivun luku-, kirjoitus- ja suoritusoikeuksien ohjaus.
2.3 Windowsin muistijärjestely
1. Virtuaalinen muisti
Windows-käyttöjärjestelmä käyttää virtuaalisen muistin hallintaa, joka yhdistää fyysisen muistin (RAM) ja virtuaalisen muistin tiedostot (sivutiedostot) kiintolevyllä luodakseen itsenäisen virtuaalisen osoitetilan jokaiselle prosessille. Jokaisessa prosessissa on yleensä 4 Gt virtuaalista osoiteavaruutta (32-bittiset järjestelmät), josta 2 Gt on käyttäjätilan ohjelmien ja 2 Gt ydintilan käytössä. 64-bittisissä järjestelmissä on suurempi virtuaalinen osoiteavaruus.
2. Virtuaalisen osoitetilan asettelu
Virtuaalinen osoiteavaruus on jaettu käyttäjätilan ja ydintilan alueisiin:
käyttäjätilan osoiteavaruus
- 0x00000000 - 0x7FFFFFFFF: Käyttäjätilan osoiteavaruus sovellusten käyttöön.
- Pino: Dynaaminen muistin varausalue, sovellus varaa ja vapauttaa muistia ajon aikana.
- Pino: Jokaisella säikeellä on oma pino funktiokutsuille ja paikallisille muuttujille.
- Jaettu muisti: Tietosegmentit, jotka jaetaan eri prosessien kesken.
ydintilan osoiteavaruus
- 0x80000000 - 0xFFFFFFFF: Kernel-tilan osoiteavaruus, jota käyttöjärjestelmän ydin ja ajurit käyttävät.
- Ytimen koodi ja tiedot: Käyttöjärjestelmän ytimen koodi ja yleiset tiedot.
- Järjestelmän välimuisti: Käytetään tiedostojärjestelmän välimuistiin parantamaan tiedostojen käytön suorituskykyä.
- laiteohjain: Kuljettajan koodi ja tiedot.
3. Muistin haku
Windows käyttää sivutusmekanismia muistin hallintaan ja virtuaaliosoitteiden muuntamiseen fyysisiksi osoitteiksi. Hakujen perusyksikkö on sivu, yleensä 4 kt.
Sivutaulukon rakenne
- Sivun hakemisto: Sisältää sivuhakemistomerkinnän (PDE), joka osoittaa sivutaulukkoon.
- Sivutaulukko: Sisältää sivutaulukkomerkinnät (PTE:t), jotka osoittavat todellisille fyysisille muistisivuille.
4. Muistinhallintayksikkö (MMU)
Prosessorin muistinhallintayksikkö (MMU) vastaa virtuaaliosoitteiden muuntamisesta fyysisiksi osoitteiksi, sivujen korvaamisesta ja muistin suojauksesta. Windows-käyttöjärjestelmä toteuttaa seuraavat toiminnot MMU:n kautta:
- osoitteen käännös: Yhdistä virtuaaliset osoitteet fyysisiin osoitteisiin.
- muistin suojaus: Hallitse sivun käyttöoikeuksia (luku, kirjoitus, suoritus).
- Sivun vaihto: Vaihda harvoin käytetyt sivut kiintolevyn sivutiedostoon fyysisen muistin vapauttamiseksi.
5. Muistin suojaus
Windows-käyttöjärjestelmä suojaa muistia seuraavilla mekanismeilla:
- Etuoikeustaso: Varmista, että käyttäjätilan ohjelmat eivät voi käyttää suoraan ydintilan muistia.
- Sivun käyttöoikeudet: Hallitse kunkin sivun käyttöoikeustyyppiä (luku, kirjoitus, suoritus).
- Kulunvalvonta: Käyttöjärjestelmän ydin asettaa käyttöoikeudet estääkseen luvattoman muistin käytön.
6. Muistin varaus
Windows käyttää useita strategioita ja tietorakenteita muistin varaamiseen:
- sivutusalokaattori: Hallitse sivujen varaamista ja virtuaalimuistin vapauttamista.
- Kasan johtaja: Tarjoaa tehokkaan muistin varauksen ja purkamisen sovelluksille.
- ytimen muistin varaaja: Hallitsee ydintilan muistia, mukaan lukien poolivaraajan ja sivuttamattoman poolin.
7. Muistinhallintasovellusliittymä
Windows tarjoaa joukon muistinhallintasovellusliittymiä sovellusten ja järjestelmän käyttöön:
- VirtualAlloc/VirtualFree: Varaa ja vapauta virtuaalimuisti.
- HeapAlloc/HeapFree: Varaa ja vapauta keon muistia.
- GlobalAlloc/GlobalFree: Varaa ja vapauta globaaleja muistilohkoja.
- LocalAlloc/LocalFree: Varaa ja vapauta paikallisia muistilohkoja.
8. Sivutiedosto
Windows käyttää sivutiedostoa (Pagefile.sys) osana virtuaalimuistia. Kun fyysinen muisti ei riitä, harvoin käytetyt sivut vaihdetaan sivutiedostoon. Sivutiedoston sijainti ja koko ovat käyttäjän määritettävissä.
3. Windowsin käyttöoikeuksien suojaus
3.1 80386 keskeytykset ja poikkeukset
1. Keskeytysten ja poikkeusten luokittelu
Keskeytykset ja poikkeukset voidaan jakaa seuraaviin luokkiin:
- Laitteisto keskeyttää: Lähetetään ulkoisista laitteista, kuten näppäimistöstä, hiirestä, kiintolevystä jne.
- Ohjelmisto keskeyttää: Ohjelmiston hyväksymä
INT
Komento laukaisee. - Poikkeukset: laukaisee prosessorin havaitsemat virheet tai erikoisolosuhteet, kuten nollalla jakovirheet, sivuvirheet jne.
2. Keskeytysvektoritaulukko (IVT)
80386-prosessori käyttää keskeytysvektoritaulukkoa keskeytusten ja poikkeuksien hallintaan. IVT on taulukko, jossa on 256 merkintää, joista jokainen vie 4 tavua ja joka tallentaa keskeytyksen tai poikkeuskäsittelijän osoitteen. IVT:n perusosoite on tallennettu IDTR:ään (Interrupt Descriptor Table Register).
3. Keskeytyskuvaustaulukko (IDT)
Suojatussa tilassa 80386-prosessori käyttää keskeytyskuvaustaulukkoa (IDT) keskeytys- ja poikkeuskäsittelijöiden tallentamiseen. IDT sisältää keskeytysportin, trap-portin ja tehtäväportin kuvaukset, jokainen kuvaaja vie 8 tavua.
- Keskeytä portti: Käytetään laitteisto- ja ohjelmistokeskeytyksiä varten, automaattisesti tyhjentävä IF (keskeytyslippu).
- Trap Gate: Käytetään poikkeusten käsittelyyn, JOS ei tyhjennetä.
- Tehtäväportti: Käytetään tehtävien vaihtamiseen.
IDT:n perusosoite ja rajat tallennetaan IDTR:ään.
4. Keskeytä käsittely
Kun keskeytys tai poikkeus tapahtuu, 80386-suoritin suorittaa seuraavat vaiheet:
- tallenna konteksti: Tallenna pinoon nykyinen CS (Code Segment Register), EIP (Instruction Pointer Register) ja EFLAGS (Flags Register).
- Etsi IDT: Etsi vastaava kuvaaja IDT:stä keskeytyksen tai poikkeuksen numeron perusteella.
- Tarkista käyttöoikeudet: Tarkista nykyinen käyttöoikeustaso (CPL) ja kohdeoikeustaso (DPL) varmistaaksesi laillisen käyttöoikeuden muuntamisen.
- hyppää ohjaajan luo: Lataa uusi CS ja EIP, siirry keskeytys- tai poikkeuskäsittelijään.
- Käsittele keskeytyksiä tai poikkeuksia: Suorita käsittelijän koodi.
- palauttaa kontekstin:kulkea
IRET
Käsky palauttaa CS:n, EIP:n ja EFLAGS:n ja palaa tilaan ennen keskeytystä tai poikkeusta.
5. Poikkeustyyppi
80386-prosessori tukee useita poikkeuksia, jokaisella poikkeuksella on eri virhekoodit ja käsittelytavat:
- Vikoja: Palautettava poikkeus Kun käsittelijä palaa, poikkeuksen aiheuttanut käsky suoritetaan uudelleen.
- Ansoja: Poikkeus, jota käytetään virheenkorjaukseen tai jäljitykseen. Kun käsittelijä palaa poikkeuksen jälkeen, seuraavan käskyn suorittaminen jatkuu.
- Aborts: Vakava virhe, jota ei yleensä korjata.
Yleisiä poikkeuksia ovat:
- Jakovirhe: Nostetaan, kun jakaja on nolla.
- Askel: Käytetään virheenkorjaukseen, korotetaan yksittäistä vaihetta suoritettaessa.
- Katkopiste: Nostetaan, kun virheenkorjaus keskeytyskohtia.
- Ylivuoto:käyttää
INTO
Nostetaan, kun ohje havaitsee ylivuodon. - BOUND Range ylitetty: Nostetaan, kun taulukkoon pääsy menee rajojen ulkopuolelle.
- Virheellinen Opcode: Nostetaan suoritettaessa laitonta käskyä.
- Laite ei ole saatavilla: Nostetaan, kun apuprosessori ei ole käytettävissä.
- Kaksoisvirhe: Poikkeus tapahtuu uudelleen poikkeuksen käsittelyssä.
- Apuprosessorin segmentin ylitys: Apuprosessoritoimintojen nostama.
- Virheellinen TSS: Nostetaan, kun tehtävän tila -segmentti on laiton.
- Segmentti ei ole läsnä: Nostetaan, kun käytetään ei-olemassa olevaa segmenttiä.
- Pinovirhe: Nostetaan, kun pinon toimintavirhe tapahtuu.
- Yleinen suojausvirhe: Laukaisee, kun suojaussääntöjä rikotaan.
- Sivuvirhe: Nostetaan, kun hakutoiminto on epänormaali.
6. Keskeytys- ja poikkeuskäsittelijät
Keskeytys- ja poikkeuskäsittelijät ovat erikoisrutiineja, joita käytetään käsittelemään tiettyjä keskeytyksiä tai poikkeuksia. Ne tarjoavat yleensä käyttöjärjestelmä, ja ne ovat vastuussa järjestelmän tilan palauttamisesta, virhetietojen tallentamisesta, tarvittavien palautustoimintojen suorittamisesta tai keskeytyksestä.
7. Keskeytä prioriteetti ja maskaus
80386-prosessori tukee keskeytysprioriteetti- ja peittomekanismeja ja hallitsee laitteistokeskeytysten prioriteettia ja peittämistä PIC:n (Programmable Interrupt Controller) kautta. Korkean tason keskeytykset voivat keskeyttää matalan tason keskeytysten käsittelyn varmistaakseen oikea-aikaisen vastauksen kriittisiin tapahtumiin.
3.2 80386:n suojamekanismi
1. Segmentointisuojaus
80386-prosessori käyttää segmentointimekanismia muistin hallintaan. Jokaisella segmentillä on kuvaaja, joka sisältää segmentin perusosoitteen, rajat ja käyttöoikeudet. Segmentointisuojaus varmistaa, että prosessit voivat käyttää vain sellaisia muistialueita, joihin ne on valtuutettu.
segmentin kuvaaja
Segmenttien kuvaajat tallennetaan globaaliin kuvaajataulukkoon (GDT) ja paikalliseen deskriptoritaulukkoon (LDT). Jokainen kuvaaja sisältää seuraavat tiedot:
- Perusosoite: Segmentin aloitusosoite.
- Raja: Segmentin koko, joka ilmaisee segmentin loppuosoitteen.
- Tyyppi (Type) ja käyttöoikeustaso (DPL): Segmentin tyyppi (koodisegmentti, datasegmentti, järjestelmäsegmentti) ja käyttöoikeudet.
- Segmentin läsnäolobitti (P): Onko segmentti muistissa.
Segmentointisuojauksen käyttöönotto
Muistia käytettäessä prosessori etsii segmenttikuvaajan segmenttivalitsimen perusteella ja suorittaa seuraavat tarkistukset:
- Perusosoitteen ja rajojen tarkistus: Varmista, että pääsyosoite on segmentin alueella.
- Luvan tarkistus: Varmista, että käyttöoikeudet vastaavat kuvaajan tyyppiä ja käyttöoikeustasoa.
2. Hakujen suojaus
Hakumekanismi parantaa edelleen muistinhallintaa, ja jokaisella sivulla on omat käyttöoikeudet. Sivutussuojausmekanismi toteutetaan sivuhakemistojen ja sivutaulukoiden kautta.
Sivuhakemistot ja sivutaulukot
- Sivun hakemisto: Sisältää sivuhakemistomerkinnän (PDE), joka osoittaa sivutaulukkoon.
- Sivutaulukko: Sisältää sivutaulukkomerkinnät (PTE:t), jotka osoittavat todellisille fyysisille muistisivuille.
Jokainen sivutaulukkomerkintä sisältää seuraavat tiedot:
- Sivun perusosoite: Fyysisen muistisivun aloitusosoite.
- Läsnäolobitti (P): Onko sivu muistissa.
- Luku/kirjoitusbitti (R/W): Onko sivu kirjoitettava.
- Käyttäjä/pääkäyttäjäbitti (U/S): Sivun käyttöoikeudet.
Hakusuojauksen käyttöönotto
Muistia käytettäessä prosessori suorittaa seuraavat tarkistukset:
- Sivun olemassaolon tarkistus: Tarkista, onko sivu muistissa, jos ei, käynnistä sivuvika (Page Fault).
- luku-/kirjoitustarkistus: Tarkista, onko sivu kirjoitettava. Jos yrität kirjoittaa ei-kirjoitettavalle sivulle, suojausvirhe laukeaa.
- Käyttäjän/pääkäyttäjän tarkistus: Tarkista käyttöoikeudet varmistaaksesi, että käyttäjätilan koodi ei pääse kernel-tilan sivuille.
3. Etuoikeustaso
80386-prosessori tukee 4 etuoikeustasoa (Etuoikeustasot), 0–3. Mitä matalampi taso, sitä korkeammat oikeudet.
- Etuoikeustaso 0 (Ring 0): Korkein käyttöoikeustaso, jota yleensä käytetään käyttöjärjestelmän ytimessä.
- Etuoikeustaso 1 (Ring 1)jaEtuoikeustaso 2 (Ring 2): Keskitaso, harvoin käytetty.
- Etuoikeustaso 3 (Ring 3): Alin käyttöoikeustaso, jota tyypillisesti käyttävät käyttäjätilan sovellukset.
Etuoikeustasojen toteuttaminen
Etuoikeustasot toteutetaan seuraavien mekanismien avulla:
- Koodisegmentin käyttöoikeustaso (CPL): Tällä hetkellä suoritettavan koodin käyttöoikeustaso.
- Datasegmentin käyttöoikeustaso (DPL): Datasegmentin käyttöoikeustaso, joka määrittää, mitkä CPL:t voivat käyttää segmenttiä.
- Request Privilege Level (RPL): Segmentin valitsimen käyttöoikeustaso, joka ilmaisee pyydetyn käyttöoikeuden.
Suorittaessaan pääsytoimintoa prosessori tarkistaa CPL:n, DPL:n ja RPL:n varmistaakseen käyttöoikeustason sääntöjen noudattamisen. Jos se ei täsmää, yleinen suojausvika laukeaa.
4. Järjestelmäsegmenttien ja porttien kuvaukset
80386-prosessori tukee järjestelmäsegmenttien ja porttien kuvauksia tehtävien vaihtamista ja keskeytysten käsittelyä varten.
järjestelmäsegmentti
- Tehtävän tila -segmentti (TSS): Sisältää tehtävän kontekstuaaliset tiedot ja sitä käytetään tehtävän vaihtamiseen.
- Paikalliskuvaustaulukko (LDT): Sisältää tehtäväkohtaiset segmenttikuvaukset.
portin kuvaaja
- Keskeytä portti: Käytetään keskeytyskäsittelyyn, hyppäämiseen keskeytyskäsittelijään.
- Trap Gate: Käytetään poikkeusten käsittelyyn, eikä se peitä keskeytyksiä.
- Tehtäväportti: Käytetään tehtävien vaihtamiseen, tehtävien vaihtamiseen TSS:n kautta.
5. Tehtävän vaihto
80386-prosessori tukee laitteistotehtävien vaihtoa, joka toteutetaan Task Status segmentin (TSS) kautta. Tehtävän vaihtamisen voivat laukaista keskeytykset, poikkeukset tai tehtäväportit.
Tehtävän tila -segmentti (TSS)
TSS sisältää tehtävän rekisteritilan, segmenttirekisterit, pinoosoittimen ja tehtävälinkit. Tehtävää vaihtaessaan prosessori tallentaa nykyisen tehtävän tilan TSS:ään ja lataa uuden tehtävän tilan.
Tehtävän vaihtoprosessi
- Tallenna tehtävän nykyinen tila: Tallenna nykyisen tehtävän rekisterit ja segmenttirekisterit TSS:ään.
- Lataa uuden tehtävän tila: Lataa rekisterit ja segmenttirekisterit uuden tehtävän TSS:stä.
- Päivitä tehtävärekisteri (TR): Osoittaa uuden tehtävän TSS:ään.
6. Keskeytysten ja poikkeusten käsittely
Keskeytysten ja poikkeusten käsittely ovat tärkeitä osia 80386-prosessorin suojausmekanismissa. Keskeytyksiä ja poikkeuksia hallitaan keskeytyskuvaustaulukon (IDT) kautta, ja käsittelyn aikana suoritetaan lupatarkistuksia ja kontekstin vaihtoja.
Keskeytysten ja poikkeusten käsittelymenettelyt
- tallenna konteksti: Tallenna nykyinen CS, EIP ja EFLAGS pinoon.
- Etsi IDT: Etsi vastaava kuvaaja IDT:stä keskeytyksen tai poikkeuksen numeron perusteella.
- Luvan tarkistus: Tarkista CPL ja DPL varmistaaksesi laillisen luvan muuntamisen.
- hyppää ohjaajan luo: Lataa uusi CS ja EIP ja suorita käsittelijä.
- palauttaa kontekstin:kulkea
IRET
Palauta CS, EIP ja EFLAGS ja palaa tilaan ennen keskeytystä tai poikkeusta.
3.3 Windowsin suojausmekanismi
1. Käyttäjätila ja ydintila
Windows-käyttöjärjestelmä jakaa prosessorin suoritustilan käyttäjätilaan (User Mode) ja ydintilaan (Kernel Mode):
- käyttäjätila: Suorittaa sovelluksen, jolla on rajoitettu käyttöoikeus ja jolla ei ole suoraa pääsyä laitteistoon tai ytimen tietorakenteisiin.
- ytimen tila: Suorittaa käyttöjärjestelmän ydinkomponentteja ja laiteajureita täydellä käyttöoikeudella ja voi suorittaa etuoikeutettuja ohjeita.
Vaihtaminen käyttäjätilan ja ydintilan välillä
Vaihtaminen käyttäjätilan ja ydintilan välillä toteutetaan yleensä järjestelmäkutsujen avulla. Sovellus pyytää ydinpalveluita kutsumalla järjestelmän API:ta, ja käyttöjärjestelmä vaihtaa pyynnön ydintilaan käsittelyä varten.
2. Muistin suojaus
Virtuaalinen muisti
Windows käyttää virtuaalimuistimekanismia tarjotakseen jokaiselle prosessille itsenäisen osoitetilan. Tämä mekanismi estää prosesseja pääsemästä suoraan toistensa muistiin, mikä parantaa järjestelmän turvallisuutta ja vakautta.
- sivutaulukko: Jokaisella prosessilla on itsenäinen sivutaulukko, joka yhdistää virtuaaliosoitteet fyysisiin osoitteisiin.
- sivujen vaihto: Kun fyysinen muisti on vähissä, käyttöjärjestelmä vaihtaa harvoin käytetyt sivut kiintolevyllä olevaan sivutiedostoon.
muistisegmentti
Windows käyttää muistisegmenttejä erityyppisten tietojen ja koodien jakamiseen, ja jokaisella segmentillä on erilaiset käyttöoikeudet ja suojausmekanismit. Esimerkiksi koodisegmentti on vain luku, kun taas datasegmentti on luku-kirjoitettava.
3. Kulunvalvonta
Windows-käyttöjärjestelmä käyttää Access Control List (ACL) -luetteloa hallitakseen käyttäjien ja prosessien käyttöoikeuksia resursseihin.
Turvatunniste (SID)
Jokaisella käyttäjällä, ryhmällä ja tietokoneella on yksilöllinen suojaustunnus (SID), joka tunnistaa ne.
Kulunvalvontaluettelo (ACL)
Jokaisella objektilla (kuten tiedostolla, hakemistolla, rekisteriavaimella jne.) on pääsynhallintaluettelo, joka sisältää joukon pääsynhallintakohteita (ACE), jotka määrittelevät eri käyttäjien ja ryhmien käyttöoikeudet objektiin.
4. Etuoikeuksien hallinta
Windows hallitsee, mitä prosesseja ja käyttäjät voivat tehdä käyttöoikeuksien hallinnan avulla. Tietyt oikeudet myönnetään vain tietyille käyttäjäryhmille (kuten järjestelmänvalvojille), kuten ohjainten asentamiseen, järjestelmälokien käyttämiseen jne.
turvallisuusstrategia
Windows tarjoaa joukon suojauskäytäntöjä, jotka voivat määrittää käyttäjätilien hallinnan (UAC), salasanakäytännöt, valvontakäytännöt jne. järjestelmän turvallisuuden parantamiseksi.
5. Keskeytysten ja poikkeusten käsittely
Windows-käyttöjärjestelmät käyttävät keskeytys- ja poikkeuskäsittelymekanismeja laitteistokeskeytyksiä, ohjelmistokeskeytyksiä ja prosessoripoikkeuksia hallitsemaan.
Keskeytä käsittely
Keskeytyskäsittelijä (Interrupt Service Routine, ISR) vastaa laitteistokeskeytyksistä ja varmistaa, että ulkoiset laitteet voivat vastata ajoissa.
Poikkeuskäsittely
Poikkeuskäsittelijät käsittelevät prosessorin poikkeuksia, kuten nollalla jakovirheitä, sivuvirheitä jne. varmistaakseen, että järjestelmä voi ryhtyä asianmukaisiin palautustoimenpiteisiin poikkeustilanteessa.
6. Moniajo
Windows sallii useiden prosessien ja säikeiden suorittamisen samanaikaisesti moniajomekanismin kautta. Käyttöjärjestelmä käyttää ajastinta prosessien ja säikeiden suorittamisen hallintaan ja varmistaa, että järjestelmäresurssit on kohdistettu oikeudenmukaisesti.
Viestiketjun ajoitus
Windows käyttää prioriteettiajoitusalgoritmia prosessorin aikaviipaleiden varaamiseen säikeen prioriteetin ja tilan perusteella (kuten valmis, odottaa, käynnissä jne.).
prosessin eristäminen
Jokaisella prosessilla on itsenäinen virtuaalinen osoiteavaruus ja resurssit, mikä estää yhtä prosessia vaikuttamasta toisen prosessin toimintaan ja parantaa järjestelmän vakautta.
7. Suojausominaisuudet
Windows tarjoaa joukon suojausominaisuuksia, kuten Data Execution Prevention (DEP), Address Space Layout Randomization (ASLR) jne., jotka parantavat järjestelmän suojausominaisuuksia.
Data Execution Prevention (DEP)
DEP estää koodin suorittamisen datasegmentissä merkitsemällä tietyt muistialueet ei-suoritettaviksi laitteiston ja ohjelmiston yhdistelmän avulla.
Osoitetilan asettelun satunnaistaminen (ASLR)
ASLR satunnaistaa prosessin muistin osoiteavaruuden, mikä vaikeuttaa haavoittuvuuksien hyödyntämistä.