Hvad er forskellen mellem sidestørrelse og sidetabelindgangsstørrelse?

Bedste svar

Nå, sidestørrelse er den plads, der kræves af 1 side. (Det er ret simpelt )

For kun at have en lille baggrund her er en sidetabel en tabel over konverteringer fra virtuelle til fysiske adresser, som operativsystemet bruger til kunstigt øge den samlede mængde ledig hukommelse, der er tilgængelig i et system. Fysisk hukommelse er de faktiske bits, der findes på adresser i hukommelsen (DRAM), virtuel hukommelse er, hvor operativsystemet ligger til processer for at fortælle dem, hvor det er for at gøre ting som tillader 2 ^ 64 bit adresse plads på trods af at 2 ^ 34 bits er den mest anvendte RAM. (2 ^ 32 bits er 4 gigabyte, så 2 ^ 34 er 16 GB).

Nu er de fleste standard sidetabellstørrelser 4096 kb for hver proces, men antallet af sidetabelposter kan øges, hvis processen har brug for mere procesplads. Sidetabellstørrelser kan oprindeligt også tildeles mindre eller større mængder eller hukommelse, det er bare, at 4 kb normalt er den bedste størrelse til de fleste processer. Så sidetabellens indtastningsstørrelse ville nøjagtigt den rette mængde plads til at indeholde en hvilken som helst adresse i et 32-bit adresseområde.

Lad os overveje et eksempel her: Overvej et system med et 32-bit logisk adresseområde. Hvis siden størrelse i et sådant system er 4 KB (212), så kan en sidetabel bestå af op til 1 million poster (232/212). Antages det at hver post består af 4 bytes , hver proces kan have brug for op til 4 MB fysisk adresseplads til sidetabellen alene.

Hvordan kan man forstå det fuldt ud?

Svar: 4 byte (32 bit ) er nøjagtigt den rigtige mængde plads til at indeholde en hvilken som helst adresse i et 32-bit adresseområde. Fordi 1 million poster på 4 bytes hver skaber 4 MB, kan en proces “muligvis” have brug for op til 4 MB fysisk adresse.

Svar

A side ta ble vedligeholdes af operativsystemet på procesbasis. Hver proces har sin egen sidetabel , og det er derfor, vi ikke behøver at gemme nogen procesidentifikator (er) i sidetabellen. Sidetabel kortlægger et givet logisk / virtuelt sidetal til faktisk fysisk ramme / sideadresse.

Den logiske adresse til en hukommelsesreference har formen:

Logisk adresse:

Sidetal (virtuelt sidetal) bruges til at udføre opslag i sidetabellen og få basisadressen til den fysiske ramme, den er tilknyttet. Rammens basisadresse (f) kombineres derefter med forskydning til siden (d) for at få den fysiske hukommelsesramme-adresse som:

f = sidetabel [p]

Fysisk adresse:

Overvej nu et system med:

1. logisk adresserum: 32-bit 2. sidestørrelse: 4KB (2 ^ 12) 3. sidetabelindgangsstørrelse: 4 byte 4. fysisk hukommelse: 2 GB

Bemærk, at 4 bytes i en sidetabelindgang gemmer effektivt flere typer information bortset fra basisadressen til den fysiske ramme. Disse oplysninger kan være til hukommelsesbeskyttelse (gyldig / ugyldig bit), type adgang (læs / skriv), bogføring osv. Så når Jeg henviser til fysisk rammeadresse (f), jeg henviser faktisk til denne særlige del af posten på 4 byte.

Lad os beregne størrelsen på en sidetabel:

Størrelse på sidetabellen = (antal poster * størrelse for hver post).

I betragtning af ovenstående parametre vil en 32-bit logisk adresse blive opdelt i:

eller

.

Vi kan nu beregne, at antallet af poster i sidetabellen (samlede virtuelle sidetal) kan være så store som 2 ^ 20. Derfor vil sidetabellens størrelse være:

(2 ^ 20) * 4bytes = 4 MB plads (pr. Proces).

Denne fysiske hukommelse kræves så meget plads til sidetabellen for hver proces. Glem ikke, at vi kun har 2 GB hovedhukommelse, og at have 4 MB plads til sidetabellen i hver proces er måske ikke en god idé. Mange af de virtuelle adresser har muligvis ikke tilknyttet nogen fysisk sideadresse til dem. Men , vil sidetabelstørrelsen stadig være stor. Selvom den “gyldige” bit ikke er indstillet til et virtuelt sidetal, skal der være en plads til den i sidetabellen.

I tilfælde af delt hukommelse, at have en sidetabel pr. proces vil kræve en indtastning af den samme fysiske side i sidetabellen for hver proces, der har delt adgang til den side. Således vil systemet ende med at beholde flere poster for den samme fysiske rammeadresse. Ikke en særlig god udnyttelse af fysisk hukommelse.

Vi kan også forstå, at en sidetabel for hver proces vil indeholde en post pr. Virtuel adresse. Størrelsen på tabellen er således proportional med størrelsen på den logiske / virtuelle adresse plads, som faktisk kan vise sig at være enorm.

Vores mål er at reducere / optimere den mængde fysisk hukommelse, der kræves for at gemme sidetabellerne. Inverteret sidetabel er en sådan løsning.

Inverteret sidetabel er en global sidetabel, der vedligeholdes af operativsystemet til alle processer. Der er kun en sidetabel i hele systemet, hvilket antyder, at der skal gemmes yderligere oplysninger i sidetabellen for at identificere sidetabelposter svarende til hver proces.

Den gemmer en post pr. fysisk ramme og er et lineært array, hvor indholdet på hvert sted er , og indekset for hver placering er den fysiske rammeadresse. Formlen ændres nu:

= sidetabel [f]

Dette indebærer straks, at opslag ikke mere kan ske på det virtuelle sidetal. Hele tabellen skal søges post for post for at finde en matchende post, der har pid lig med “id” og virtuelt sidetal lig med “p”. Indeksplaceringen, der svarer til matchet, er den fysiske rammeadresse (f), som derefter kombineret med forskydningen (d) giver den fysiske adresse.

Vi kan let udlede den opslagstid på en omvendt side tabellen kan være betydeligt højere sammenlignet med en simpel sidetabel .

Men fordi tabellen gemmer en post pr. fysisk rammeadresse, og der er en enkelt sidetabel i hele systemet, er mængden af ​​hukommelse, der bruges af den inverterede sidetabel, reduceret betydeligt. Hvordan?

Overvej de samme parametre igen:

1. logisk adresserum: 32-bit 2. sidestørrelse: 4KB (2 ^ 12) 3. sidetabelindgangsstørrelse: 4 byte. 4. fysisk hukommelse: 2 GB (2 ^ 31)

Antal poster i sidetabellen = Antal fysiske sider =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 fysiske sider eller rammer.

Lad os sige, at vi bruger 1 byte-procesidentifikatorer. Størrelsen på hver sidetabelpost ville være:

8 bit (PID) + 20bits ( virtuelt sidetal) + 4bits (adgangsinformation) = 32 bits = 4 byte.

Sidetabellens størrelse = (2 ^ 19) * 4 = 2MB for hele systemet.

Ydelse af inverterede sidetabeller adresseres normalt gennem hashede sidetabeller. Men der er en ulempe ved at bruge inverterede sidetabeller bortset fra ydeevne. Det er delt hukommelse.

Fordi der er en og kun en post i sidetabellen pr. fysisk ramme, og som indeholder nøjagtigt et virtuelt sidetal, kan vi ikke længere kortlægge den samme fysiske ramme til flere virtuelle sidetal i forskellige processer. Der er måder at omgå dette på, men ikke klar over de detaljer, der skal skrives her .

Kilde – Operativsystemkoncepter (Silberschatz et al)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *