170 likes | 364 Views
Memory Management - seminarski rad -. VIRTUALNA MEMORIJA. Prije mnogo godina ljudi su prvo bili suočeni sa programima koji su bili preveliki da bi stali u memoriju. Riješenje koje je najčešće primjenjivano bila je podjela programa na dijelove, zvane dopune (overlays) .
E N D
VIRTUALNA MEMORIJA • Prije mnogo godina ljudi su prvo bili suočeni sa programima koji su bili preveliki da bi stali u memoriju. Riješenje koje je najčešće primjenjivano bila je podjela programa na dijelove, zvane dopune(overlays). • Dopune su držane na disku i njih je operativni sistem po potrebi prebacivao u memoriju i obratno. • Osnovna ideja virtualne memorije je da veličina programa,podatka i steka moze prekoračit količinu fizičke memorije. • Operativni sistem čuva djelove programa koji se trenutno koriste u memoriji a ostatak na disku
Straničenje (Paging) • Većina sistema sa virtualnom memorijom koristi tehniku zvanu stranicenje, • Na svakom računaru postoji grupa memorijskih adresa koje program može da proizvede. • Ove programski generisane adrese zovu se virtualne adrese i one formiraju virtualni adresni prostor. Slika 1
Na računarima bez virtualne memorije, virtualne adrese se stavljaju direktno na memorijsku magistralu usljed čega dolazi do upisivanja ili iščitavanja fizičke memorijske riječi 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 računar koji generiše 16 bitne adrese od 0 do 64K. Ovo su virtualne adrese. Računar, međutim ima samo 32 KB fizičke memorije, pa iako se mogu izvršavati 64 KB programi, oni se ne mogu učitati u potpunosti u memoriju i izvršiti. 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). Odgovarajuće jedinice u fizičkoj memoriji nazivaju se okviri stranica (page frames). • Oni su uvijek istih veličina. Prenos između RAM i diska se odvija uvijek u jedinicama - stranica. • U realnim sistemima veličina stranice ide od 512 bajta do 64 KB. 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 • Pošto imamo samo 8 okvira stranica, samo 8 virtualnih stranica sa slike 2 se mapiraju u fizičku memoriju. Slika 2
Ako program pokušava da koristi nemapiranu stranicu, npr koristeći instrukciju MOV REG, 32780 MMU detektuje da stranica nije mapirana i kaže procesoru da zaustavi (trap) operatrivni sistem. Ovo se naziva pogrešna strana (page fault). • Operativni sistem uzima malo korišten okvir stranice i upisuje njegovu sadržinu nazad na disk. Zatim uzima stranicu koja je trenutno referencirana i stavlja je u upravo oslobođen okvir stranice, mijenja mapu i restartuje zaustavljenu instrukciju.
Slika 3: prikazan je primjer virtualne adrese, 8196(binarno 0010000000000100). • Dolazeća 16 bitna virtualna adresa se dijeli na 4-bitni broj stranice i na 12-bitni ofset. Sa 4 bita za broj stranica možemo imati 16 stranica i sa 12 bita za ofset možemo adresirati svih 4096 bajtova • Broj stranice se koristi kao indeks u tabeli stranica Slika 3
Tabele stranica • Svrha tabele stranica je mapiranje virtualnih stranica u okvire stranica. • Polje virtualne stranice u virtualnoj adresi može se zamijeniti sa poljem za okvir stranice i na taj način dobiti fizičku adresu u memoriji • Mora se obratiti pažnja na dva glavna pitanja: • 1. Tabela stranica može biti veoma velika. • 2. Mapiranje mora biti brzo.
Višenivoovske tabele stranica • Na slici 4 prikazana je 32-bitna virtualna adresa koja je podijeljena na 10-bitno PT1 polje i 12-bitno ofset polje. Pošto je ofset 12-bitni stranice su 4KB, a ima ih ukupno 220. • Tajna metode višenovoovskih tabela stranica je izbjegavanje držanja svih tabela stranica u memoriji, svo vrijeme. Slika 4
Pretpostavimo, na primjer, da proces zahtjeva 12MB memorije i to posljednjih 4 MB za program, idućih 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 vršnu tabelu stranica i izvrši unos 1, što odgovara adresama od 4M do 8M. Zatim koristi PT2 da indeksira drugo-nivoovsku tabelu stranica da bi pronašao i izdvojio unos 3, koji odgovara adresama 12288 do 16383 u sklopu njegovog 4M dijela • Iako adresni prostor sadrži preko milion stranica, jedino su 4 tabele stranica stvarno potrebne: tabela najvišeg nivoa i drugo-nivoovske tabele od 0 do 4M i od 4M do 8M, i gornjih 4M.
Struktura unosa u tabele stranica • Najvažnije polje je broj okvira stranice. • Imamo prisutan/odsutan bit. Ako je taj bit 1, unos je validan i može 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 greške stranice.
Bitovi zaštite (Protection bits) govore kakvi pristupi su dozvoljeni. • Bitovi promijenjeni (Modified) i referencirani (Referenced) vode računa o korištenju stranice. Ako je stranica u njemu promijenjena (“prljava”), mora se vratiti na disk. Ako nije mijenjana (“čista”), može se napustiti jer je kopija na disku još uvijek ažurna. • Referencirani bit je setovan kada god je stranici pristupljeno radi čitanja ili upisivanja. Njegova vrijednost pomaže operativnom sistemu da izabere stranicu koju može izbaciti kada se pojavi greška stranice. • Posljednji bit onemogućeno keširanje služi radi onemogućavanja keširanja stranice.
TLBsTranslation Lookaside Buffers • Mali hardverski uređaj za mapiranje virtualnih adresa u fizičke bez prolaska kroz tabelu stranica. Uređaj je nazvan TLB. TLB radi ubrzavanja straničenja
Obično se nalazi unutar MMU-a i sastoji se od malog broja unosa, u ovom slučaju osam, a rijetko ima više od 64 unosa. Svaki unos sadrži informaciju o jednoj stranici, broj virtualne stranice, bit koji se setuje kada se stranica promijeni, kod zaštite (dozvole čitaj/piši/izvrši) i fizički okvir stranice na kojem je stranica locirana. Ova polja odgovaraju jedan-na-jedan poljima u tabeli stranica. • Interesantan slučaj je kada u TLB-u nema broja virtualne stranice. MMU detektuje promašaj i odrađuje običan pregled tabele stranica. Zatim, izbacuje jedan od unosa u TLB i zamjenjuje ga sa unosom iz tabele stranica koji je upravo našao.
Invertovane tabele stranica • Prethodno opisane tabele stranica zahtjevaju samo jedan unos po virtualnoj stranici, pošto 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 sadrži 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 fizičku memoriju postaje mnogo teže.
Pretraživanje se mora odraditi za svako obraćanje memoriji, a ne samo kada dođe do greške stranice.Izlaz iz ove dileme je u korištenju TLB-a. • Sve virtualne stranice koje su trenutno u memoriji i imaju istu hash vrijednost bivaju povezane zajedno, kako je pokazano na slici