Mikä on ero sivukoon ja sivutaulukon merkinnän koon välillä?

Paras vastaus

No, sivun koko on 1 sivun tarvitsema tila. (Se on aika yksinkertaista )

Jos haluat vain vähän taustaa, sivutaulukko on taulukko konversioista virtuaalisista osoitteisiin, joita käyttöjärjestelmä käyttää keinoin keinotekoisesti lisää järjestelmän käytettävissä olevan päämuistin kokonaismäärää. Fyysinen muisti on todelliset bitit, jotka sijaitsevat muistin osoitteissa, virtuaalimuisti on paikka, jossa käyttöjärjestelmä makaa prosesseille kertoakseen heille, missä se on tekemistä varten kuten sallivat 2 ^ 64 bittiä osoitetilaa huolimatta siitä, että 2 ^ 34 bittiä on eniten normaalisti käytettyä RAM-muistia. (2 ^ 32 bittiä on 4 gigatavua, joten 2 ^ 34 on 16 gt.)

Nyt useimmat oletus sivutaulukkokoot ovat 4096 kb jokaiselle prosessille, mutta sivutaulukkomerkintöjen määrä voi kasvaa, jos prosessi tarvitsee enemmän prosessitilaa. Sivupöytäkokoihin voidaan aluksi myös kohdistaa pienempiä tai suurempia määriä tai muistia, vain 4 kb on yleensä paras koko useimmille prosesseille. Joten sivutaulukon merkinnän koko olisi täsmälleen oikea määrä tilaa pitääkseen mitä tahansa osoitetta 32-bittisessä osoiteavaruudessa.

Tarkastellaan tässä esimerkkiä: Tarkastellaan järjestelmää, jossa on 32-bittinen looginen osoiteavaruus. Jos sivu koko tällaisessa järjestelmässä on 4 kt (212), sivutaulukko voi koostua enintään miljoonasta merkinnästä (232/212). Olettaen, että jokainen merkintä koostuu 4 tavusta , jokainen prosessi saattaa tarvita enintään 4 Mt fyysistä osoitetilaa pelkästään sivutaulukkoa varten.

Kuinka ymmärtää se täysin?

Vastaus: 4 tavua (32 bittiä) ) on täsmälleen oikea määrä tilaa minkä tahansa osoitteen pitämiseen 32-bittisessä osoiteavaruudessa. Koska miljoona 4 tavun merkintää on 4 Mt, prosessi ”saattaa” tarvita jopa 4 Mt fyysistä osoitetilaa.

Vastaa

A sivu ta ble ylläpitää käyttöjärjestelmä prosessikohtaisesti. Jokaisella prosessilla on oma sivutaulukko , ja siksi meidän ei tarvitse tallentaa mitään prosessitunnistetta sivutaulukkoon. Sivutaulukko kartoittaa annetun loogisen / virtuaalisen sivunumeron todelliseen fyysiseen kehykseen / sivun osoitteeseen.

Muistiviitteen looginen osoite on muotoa:

Looginen osoite:

Sivunumeroa (virtuaalista sivunumeroa) käytetään etsimään sivutaulukkoon ja saamaan fyysisen kehyksen perusosoite, johon se on yhdistetty. Kehyksen perusosoite (f) yhdistetään sitten siirtymään sivulle (d) fyysisen muistikehyksen osoitteen saamiseksi:

f = sivutaulukko [p]

Fyysinen osoite:

Harkitse nyt järjestelmää, jolla on:

1. looginen osoitetila: 32-bittinen 2. sivukoko: 4 kt (2 ^ 12) 3. sivutaulukon merkinnän koko: 4 tavua 4. fyysinen muisti: 2 Gt

Huomaa, että 4 sivutaulukon merkinnän tavut tallentavat tehokkaasti monen tyyppistä tietoa fyysisen kehyksen perusosoitteen lisäksi.Tämä tieto voi olla muistin suojaamiseksi (kelvollinen / virheellinen bitti), pääsyn tyypille (luku / kirjoitus), kirjanpidolle jne. Joten, kun Viittaan fyysiseen kehysosoitteeseen (f), viittaan itse asiassa tähän 4 tavun merkinnän osaan.

Laskemaan sivutaulukon koko:

sivutaulukko = (merkintöjen lukumäärä * kunkin merkinnän koko).

Yllä olevien parametrien perusteella 32-bittinen looginen osoite jaetaan seuraaviin osiin:

tai

.

Voimme nyt laskea, että sivutaulukon merkintöjen määrä (virtuaalisten sivujen kokonaismäärä) voi olla jopa 2 ^ 20. Siksi sivutaulukon koko olisi:

(2 ^ 20) * 4 tavua = 4 Mt tilaa (prosessia kohden).

Fyysisessä muistissa tarvitaan paljon tilaa jokaisen prosessin sivutaulukolle. Älä unohda, että päämuistia on vain 2 Gt, ja 4 Mt tilaa jokaisen prosessin sivutaulukolle ei ehkä ole hyvä idea. Myöskään monilla virtuaalisilla osoitteilla ei ehkä ole yhtään fyysistä sivun osoitetta. Mutta , sivutaulukon koko on silti suuri. Vaikka virtuaalisen sivunumerolle ei ole määritetty ”kelvollista” bittiä, sivutaulukossa on oltava sille paikka.

Jos jaettu Muisti, jolla on sivutaulukko prosessia kohden, edellyttää saman fyysisen sivun merkitsemistä jokaisen prosessin sivutaulukkoon, jolla on jaettu pääsy kyseiselle sivulle.Siksi järjestelmä lopulta pitää useita merkintöjä samalla fyysisen kehyksen osoitteella. Fyysisen muistin käyttö ei ole kovin hyvä.

Voimme myös ymmärtää, että jokaisen prosessin sivutaulukko sisältää yhden merkinnän virtuaalista osoitetta kohti. Taulukon koko on siis verrannollinen loogisen / virtuaalisen koon kanssa osoitetila, joka voi todellakin osoittautua valtavaksi.

Tavoitteenamme on vähentää / optimoida sivutaulukoiden tallentamiseen tarvittavan fyysisen muistin määrää. Käänteinen sivutaulukko on yksi tällainen ratkaisu.

Käänteinen sivutaulukko on käyttöjärjestelmän ylläpitämä yleinen sivutaulukko kaikille prosesseille. Koko järjestelmässä on vain yksi sivutaulukko, mikä tarkoittaa, että sivutaulukkoon on tallennettava lisätietoja, jotta voidaan tunnistaa kutakin prosessia vastaavat sivutaulukkomerkinnät.

Se tallentaa yhden merkinnän fyysistä kehystä kohden ja on lineaarinen taulukko, jossa kunkin sijainnin sisältö on ja kunkin sijainnin hakemisto on fyysinen kehysosoite. Kaava muuttuu nyt:

= sivutaulukko [f]

Tämä heti tarkoittaa, että hakuja ei voi enää tapahtua virtuaalisella sivunumerolla. Koko taulukkoa on haettava merkinnöittäin, jotta löydetään vastaava merkintä, jonka pid on yhtä suuri kuin ”id” ja virtuaalisen sivun numero on ”p”. Hakua vastaava hakemistopaikka on fyysinen kehysosoite (f), joka yhdistettynä offsetiin (d) antaa fyysisen osoitteen.

Voimme helposti päätellä kyseisen hakuajan käänteisellä sivulla. taulukko voi olla merkittävästi korkeampi kuin yksinkertainen sivutaulukko .

Koska taulukko tallentaa kuitenkin yhden merkinnän fyysistä kehysosoitetta kohden ja koko järjestelmässä on yksi sivutaulukko, käännetyn sivutaulukon käyttämä muistin määrä on vähentynyt huomattavasti. Kuinka?

Harkitse samat parametrit uudelleen:

1. looginen osoitetila: 32-bittinen 2. sivun koko: 4 kt (2 ^ 12) 3. sivutaulukon merkinnän koko: 4 tavua. 4. fyysinen muisti: 2 Gt (2 ^ 31)

Sivutaulukon merkintöjen määrä = Fyysisten sivujen määrä =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 fyysistä sivua tai kehystä.

Sanotaan, että käytämme 1 tavun prosessin tunnisteita. Kunkin sivutaulukon merkinnän koko olisi:

8 bittiä (PID) + 20 bittiä ( virtuaalinen sivunumero) + 4 bittiä (käyttötiedot) = 32 bittiä = 4 tavua.

Sivutaulukon koko = (2 ^ 19) * 4 = 2 Mt koko järjestelmälle.

Käänteisten sivutaulukkojen suorituskyky käsitellään yleensä tiivistettyjen sivutaulukkojen avulla. Mutta käänteisten sivutaulukkojen käyttämisessä on vielä yksi haitta suorituskyvyn lisäksi. Se on jaettu muisti.

Koska syötteitä on vain yksi sivutaulukossa fyysistä kehystä kohden ja joka sisältää täsmälleen yhden virtuaalisen sivunumeron, emme voi enää yhdistää samaa fyysistä kehystä useisiin virtuaalisiin sivunumeroihin eri prosesseissa. On olemassa tapoja kiertää tätä, mutta emme ole tietoisia yksityiskohdista, jotka voit kirjoittaa tähän .

Lähde – käyttöjärjestelmän käsitteet (Silberschatz ym.)

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *