Vous êtes sur la page 1sur 17

Memory Management

- seminarski rad -

Markovi Radovan 19/99

VIRTUALNA MEMORIJA
Prije mnogo godina ljudi su prvo bili suoeni sa programima koji su bili preveliki da bi stali u memoriju. Rijeenje koje je najee primjenjivano bila je podjela programa na dijelove, zvane dopune (overlays). Dopune su drane na disku i njih je operativni sistem po potrebi prebacivao u memoriju i obratno . Osnovna ideja virtualne memorije je da veliina programa,podatka i steka moze prekorait koliinu fizike memorije. Operativni sistem uva djelove programa koji se trenutno koriste u memoriji a ostatak na disku

Stranienje (Paging)
Veina sistema sa virtualnom memorijom koristi tehniku zvanu stranicenje, Na svakom raunaru postoji grupa memorijskih adresa koje program moe da proizvede. Ove programski generisane adrese zovu se virtualne adrese i one formiraju virtualni adresni prostor.

Slika 1

Na raunarima bez virtualne memorije, virtualne adrese se stavljaju direktno na memorijsku magistralu usljed ega dolazi do upisivanja ili iitavanja fizike memorijske rijei na toj adresi. Kada se koristi virtualna memorija, virtualne adrese ne idu direktno na memorijsku magistralu, ve idu na MMU (Memory Management Unit) koja mapira (pretvara) virtualne adrese u fizicke kako je pokazano na slici 1. Jednostavan primjer pretvaranja adresa prikazan je na slici 2 Na ovom primjeru imamo raunar koji generie 16 bitne adrese od 0 do 64K. Ovo su virtualne adrese. Raunar, meutim ima samo 32 KB fizike memorije, pa iako se mogu izvravati 64 KB programi, oni se ne mogu uitati u potpunosti u memoriju i izvriti. Kompletna kopija slike programskog jezgra, do 64 KB, mora postojati na disku, da bi se svi njegovi dijelovi mogli prebacivati, po potrebi, u memoriju.

Virtualni adresni prostor je podijeljen u jedinice stranice (pages). Odgovarajue jedinice u fizikoj memoriji nazivaju se okviri stranica (page frames). Oni su uvijek istih veliina. Prenos izmeu RAM i diska se odvija uvijek u jedinicama - stranica. U realnim sistemima veliina stranice ide od 512 bajta do 64 KB.

Slika 2

Slika 2

Primjer 1:Program zeli da pristupi adresi nula koriste}i naredbu MOV REG,0 Virtualna adtresa 0 se alje u MMU. Tada MMU vidi da virtualna adresa pada na stranicu 0 (0 do 4095), to, s obzirom na mapiranje, odgovara okviru stranice 2 Poto imamo samo 8 okvira stranica, samo 8 virtualnih stranica sa slike 2 se mapiraju u fiziku memoriju.

Ako program pokuava da koristi nemapiranu stranicu, npr koristei instrukciju MOV REG, 32780 MMU detektuje da stranica nije mapirana i kae procesoru da zaustavi (trap) operatrivni sistem. Ovo se naziva pogrena strana (page fault). Operativni sistem uzima malo koriten okvir stranice i upisuje njegovu sadrinu nazad na disk. Zatim uzima stranicu koja je trenutno referencirana i stavlja je u upravo osloboen okvir stranice, mijenja mapu i restartuje zaustavljenu instrukciju.

Slika 3

Slika 3: prikazan je primjer virtualne adrese, 8196(binarno 0010000000000100). Dolazea 16 bitna virtualna adresa se dijeli na 4-bitni broj stranice i na 12-bitni ofset. Sa 4 bita za broj stranica moemo imati 16 stranica i sa 12 bita za ofset moemo adresirati svih 4096 bajtova Broj stranice se koristi kao indeks u tabeli stranica

Tabele stranica
Svrha tabele stranica je mapiranje virtualnih stranica u okvire stranica. Polje virtualne stranice u virtualnoj adresi moe se zamijeniti sa poljem za okvir stranice i na taj nain dobiti fiziku adresu u memoriji Mora se obratiti panja na dva glavna pitanja: 1. Tabela stranica moe biti veoma velika. 2. Mapiranje mora biti brzo.

Vienivoovske tabele stranica


Na slici 4 prikazana je 32-bitna virtualna adresa koja je podijeljena na 10bitno PT1 polje i 12-bitno ofset polje. Poto je ofset 12-bitni stranice su 4KB, a ima ih ukupno 220. Tajna metode vienovoovskih tabela stranica je izbjegavanje dranja svih tabela stranica u memoriji, svo vrijeme.

Slika 4

Pretpostavimo, na primjer, da proces zahtjeva 12MB memorije i to posljednjih 4 MB za program, iduih 4 MB za podatke i gornja 4 MB za stack. Kao primjer, posmatrajmo 32-bitnu virtualnu adresu 0x00403004. Virtualnoj adresi odgovara PT1 = 1, PT2 = 2, ofset = 4. MMU prvo koristi PT1 da indeksira vrnu tabelu stranica i izvri unos 1, to odgovara adresama od 4M do 8M. Zatim koristi PT2 da indeksira drugonivoovsku tabelu stranica da bi pronaao i izdvojio unos 3, koji odgovara adresama 12288 do 16383 u sklopu njegovog 4M dijela Iako adresni prostor sadri preko milion stranica, jedino su 4 tabele stranica stvarno potrebne: tabela najvieg nivoa i drugo-nivoovske tabele od 0 do 4M i od 4M do 8M, i gornjih 4M.

Struktura unosa u tabele stranica


Najvanije polje je broj okvira stranice. Imamo prisutan/odsutan bit. Ako je taj bit 1, unos je validan i moe se upotrijebiti. Ako je on 0, virtualna stranica kojoj pripada unos nije trenutno u memoriji. Pristup unosu tabele stranica sa 0 na mjestu tog bita izaziva stvaranje greke stranice.

Bitovi zatite (Protection bits) govore kakvi pristupi su dozvoljeni. Bitovi promijenjeni (Modified) i referencirani (Referenced) vode rauna o koritenju stranice. Ako je stranica u njemu promijenjena (prljava), mora se vratiti na disk. Ako nije mijenjana (ista), moe se napustiti jer je kopija na disku jo uvijek aurna. Referencirani bit je setovan kada god je stranici pristupljeno radi itanja ili upisivanja. Njegova vrijednost pomae operativnom sistemu da izabere stranicu koju moe izbaciti kada se pojavi greka stranice. Posljednji bit onemogueno keiranje slui radi onemoguavanja keiranja stranice.

TLBs Translation Lookaside Buffers


Mali hardverski ureaj za mapiranje virtualnih adresa u fizike bez prolaska kroz tabelu stranica. Ureaj je nazvan TLB.

TLB radi ubrzavanja stranienja

Obino se nalazi unutar MMU-a i sastoji se od malog broja unosa, u ovom sluaju osam, a rijetko ima vie od 64 unosa. Svaki unos sadri informaciju o jednoj stranici, broj virtualne stranice, bit koji se setuje kada se stranica promijeni, kod zatite (dozvole itaj/pii/izvri) i fiziki okvir stranice na kojem je stranica locirana. Ova polja odgovaraju jedan-na-jedan poljima u tabeli stranica. Interesantan sluaj je kada u TLB-u nema broja virtualne stranice. MMU detektuje promaaj i odrauje obian pregled tabele stranica. Zatim, izbacuje jedan od unosa u TLB i zamjenjuje ga sa unosom iz tabele stranica koji je upravo naao.

Invertovane tabele stranica


Prethodno opisane tabele stranica zahtjevaju samo jedan unos po virtualnoj stranici, poto su indeksirane brojem virtualne stranice. Ako je adresni prostor 264 bajtova, sa 4-KB stranicama, potrebna nam je tabela stranice sa 252 unosa. Ako svaki unos ima 8 bajtova, tabela sadri tada preko 30 miliona gigabajta. Invertovana tabela stranice ima samo jedan unos po okviru stranice u realnoj memoriji, umjesto jednog unosa po stranici virtualnog adresnog prostora. Invertovane tabele stranica tede mnogo prostora. Njihov ozbiljan nedostatak je prebacivanje iz virtualne u fiziku memoriju postaje mnogo tee.

Pretraivanje se mora odraditi za svako obraanje memoriji, a ne samo kada doe do greke stranice. Izlaz iz ove dileme je u koritenju TLB-a. Sve virtualne stranice koje su trenutno u memoriji i imaju istu hash vrijednost bivaju povezane zajedno, kako je pokazano na slici

Vous aimerez peut-être aussi