Base- ja Limit -rekisterit

Tervehdys.

Kyselisin ihan sellaista asiaa, että mitä ovat käyttöjärjestelmän Base- ja Limit -rekisterit ja mihin niitä oikeastaan tarvitaan???
2688
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

...

Äänestä

nuo ovat systeemirekistereitä, jotka ladataan automaattisesti segmenttirekistereitä ladattaessa.

Base -rekisteri kertoo, mikä oikea (nyk. virtuaali-) osoite vastaa segmentin 0 -osoitetta ja Limit kertoo, kuinka suuri yksi segmentti on, eli määrää suurimman sallitun offsetin segmentin sisällä. Tämän suurimman sallitun ylitys johtaa "Access Violation" -virheeseen.

huom: tämä selitys oli yksinkertaistettu. 80386 ja uudempien prosesssorien virtuaalimuisti monimutkaistaa asiaa; esim. windowsissa voi varata erikseen muistiosoiteavaruutta ja oikeaa muistia, joka sitten kytketään noihin muistiavaruuden osoitteisiin. ks. VirtualAlloc, VirtualFree ja VitrualProtect.

Muistin virtuaalisuuden ideahan on se, että kukin lohko (joka windowsissa on 4 Ki, mutta muistaakseni CPU sallisi vaihtoehtoisesti myös 8 Ki) voi viitata mihin tahansa fyysiseen muistiosoitteeseen tai ei mihinkään, jolloin tuon osoitteen luku/kirjoitusyritys aiheuttaa myös "access violation" -poikkeuksen, mutta sitä ei aina käsitellä virheenä, vaan käyttöjärjestelmän virtuaalijärjestelmän pyyntönä ladata puuttuva muistilohko kiintolevyltä RAMmiin, ja muokata osoitustalulukko osoittamaan siihen kohtaan fyysistä RAMmia, mihin puuttuva lohko juuri ladattiin, ja lopuksi palata suoritusosoitteeseen, jossa oleva käsky aiheutti poikkeuksen, jolloin suoritus jatkuu normaalisti, nythän sama osoite, joka äsken ei ollut fyysisessä muistissa, on siellä, kun käyttöjärjestelmän virtuaalimuistilataaja sen sinne juuri latasi.

Windowsissa yleensä lataus tehdään muuttumattomasta EXE tai DLL - tiedostosta; hyötynä se, että virtuaalimuisti on nopeampaa, kun kiintolevyä näissä tapauksissa vain luetaan (EXE tai DLL ei muutu suorituksen aikana).

Poikeuksena tilanne, jossa muistia vaaditaan niin paljon, että tämäkään ei riitä: silloin otetaan käyttöön win386.swp, ja myös kirjoitetaan sinne toinen muistilohko, joka poistetaan RAMmista, jotta sinne saadaan tilaa puuttuvalle lohkolle.

Näinollen windowsin virtuaalimuistia käytetään silti, vaikka tuota win386.swp -tiedostoa ei käytettäisi ollenkaan.

Äänestä

Kommentoi aloitusta


Samuel kirjoitti:

Tervehdys.

Kyselisin ihan sellaista asiaa, että mitä ovat käyttöjärjestelmän Base- ja Limit -rekisterit ja mihin niitä oikeastaan tarvitaan???

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu