Please enable JavaScript.
Coggle requires JavaScript to display documents.
Virtuelna memorija - Coggle Diagram
Virtuelna memorija
Stranicenje na zahtev
- najefikasniji (Demand Paging)
- ovaj pristup deli program na stranice
- prilikom pokretanja programa u rednu memoriju se smestaju samo stranice koje su neophodne u prvom trenutku
- smanjuje se kolicina zauzete memorije
- povecava se stepen multiprogramiranja
- kada se stranica zatrazi pri izvrsavanju procesa:
- proveri se da li je vec u memoriji
- ako nije onda se pronalazi u sekundarnoj memoriji i prebacuje u radnu
- ovakvim pristupom se ne ucitavaju stranice koje nisu potrebne
- velicina logickog adresnog prostora nije ogranicena fizickom memorijom
- obezbedjuje se velika virtuelna memorija na sistemima sa manjom fizickom memorijom
- olaksava se programiranje jer programer ne mora da brine o kapacitetu raspolozive fizicke memorije
- kombinacija stranicenja sa prebacivanjem (swapping)
- za razliku od klasicnog stranicenja ova metoda dozvoljava da neke od stranica ne budu u radnoj memoriji vec da se po potrebi ucitavaju
- za potrebe odlozenog ucitavanja se koristi posebni modul lenji prebacivac ili pejdzer
- tabela stranica ima dodatnu kolonu u kojoj se cuva bit validnosti
- stranica je validna ako postoji u radnoj memoriji i bit je 1
- nevalidna ako ne postoji u radnoj memoriji, bit je 0
- kada proces pokusa da pristupi nekoj stranici proverava se ovaj bit, ako je on 1 onda joj se moze odmah pristupiti, u suprotnom dolazi do promasaja stranice
- nece doci do njega ako proces nikada ne pokusa da pristupi stranicama koje nisu u memoriji - ako se smeste sve potrebne stranice - proces se izvrsava na isti nacin kao da su sve stranice u memoriji
- nakon promasaja se javlja prekid na koji se reaguje i omogucava se nastavak izvrsavanja procesa donosenjem potrebne stranice u memoriju
- prvo se vrsi provera da li trazena stranica uopste pripada procesu koji ju je zatrazio
- ako nije dolazi do prekida programa usled greske pri adresiranju
- ako pripada procesu, potrebno je ucitati u radnu memoriju:
pronalazi se slobodan memorijski okvir ukoliko postoji ili oslobadja jedan od zauzetih ukoliko su svi okviri zauzeti
ucitava se stranica iz sekundarne u radnu memoriju
modifikuje se tabela stranica tako da bit validnosti govori da je stranica u radnoj memoriji
- specijalan slucaj - cisto stranicenje - podrazumeva da proces krene u izvrsavanje bez ijedne ucitane stranice; promasaji ce se redjati na pocetku sve dok se ne iskristalise skup stranica koje su potrebne za izvrsavanje
- jedan od ciljeva stranicenja na zahtev je povecanje stepena multiprogramiranja
- tezi se ucitavanju sto veceg broja procesa u radnu memoriju
- potrebno je za svaki proces minimizovati broj ucitanih stranica
- problem: potrebno ucitati stranicu potrebnu za izvrsavanje nekog procesa, a pritom ne postoji slobodan memorijski okvir
- resenje1: prekinuti proces koji je zatrazio ucitavanje te stranice i kasnije ga ponovo pokrenuti otpocetka
- resenje2: sve stranice procesa se prebace na spoljasnju memoriju i oslobode svi okviri koje je proces zauzimao
- smanjuje se efikasnost sistema, ali i stepen multiprogramiranja -> retko se primenjuju
- pogodno resenje za sisteme kod kojih se promasaj stranice retko dogadja
Zamena stranice
- ideja: po nekom kriterijumu pronaci okvir (zrtvu) koji ce se isprazniti kako bi se u njega smestila nova stranica
- prebacuje se u sekundarnu memoriju i pritom se azurira tabela stranica tako da odgovara trenutnom stanju u sistemu
Algoritam:
- naci lokaciju zeljene stranice na disku
- naci slobodan okvir
- ako postoji slobodan okvir, koristiti njega
- ako ne postoji, upotrebiti algoritam za izbor okvira zrtve
- upisati zrtvu na disk i saglasno tome izmeniti tabelu stranica
Uvod
- nacin upravljanja memorijom koji omogucava da se procesu na raspolaganje stavi memorija koja je drugacije velicine od one koja stvarno fizicki postoji u sistemu
- OS je zaduzen da omoguci preslikavanje virtuelne memorije u fizicku memoriju
- memorijski model koji razdvaja memorijski prostor koji je dostupan programeru, odnosno procesu za izvrsavanje, od fizickog prostora koji ima radna memorija
- cesto se pogresno povezuje isljucivo sa koriscenjem hard diska u situacijama kada radna memorija nije dovoljno velika da prihvati sve pokrenute procese
- prve upotrebe su u stvari podrazumevale da se radna memorija podeli na manje delove koje bi onda programeri koristili za smestanje svojih procesa
- sistemi sa deljenjem vremena (Time-sharing) su tipican primer sistema koji su zasnovani na ovakvoj implementaciji virtuelne memorije
- na savremenim sistemima - tehnika koja omogucava da se izvrsava proces koji nije u potpunosti u radnoj memoriji
- direktna posledica -> veci stepen multiprogramiranja
- korisnicki procesi mogu biti veci od fizicke memorije
- posto se u memoriji nalaze najcesce korisceni delovi programa, smanjuje se broj U/I operacija za zamenu i ucitavanje procesa -> svaki proces se efikasnije izvrsava
- nije efikasno implementirati
- losa realizacija memorijskog modela moze da dovede do ozbiljnog gubitka na performansama sistema i gubitka podataka
- najuspesniji pokusaji implementacije virtuelne memorije:
- prekrivaci
- dinamicko punjenje
- stranicenje na zahtev
Prekrivaci
- zasnovani na ideji da se omoguci izvrsavanje programa koji nisu kompletno ucitani u memoriju
- osnovni zadatak - identifikovanje modula programa koji su nezavisni - prekrivaci
- delovi programa koji se korsite u razlicitim vremenskim trenucima
- delovi koji se retko koriste
- delovi za koje postoji sansa da nece biti potrebni tokom izvrsavanja
- npr. delovi za reakciju na greske odredjenog tipa, delovi za obradu izuzetaka
- odvajaju se od glavnog programa - smestaju se u sekundarnu memoriju
- prilikom alociranja memorije za glavni program, rezervise se jedan deo koji je dovoljno veliki za prihvatanje najveceg prekrivaca
- kada je, za dalje izvrsavanje programa, potreban deo programa iz nekog prekrivaca on se ucitava u taj rezervisani prostor
- prekrivaci ce se po potrebi smenjivati u rezervisanom delu memorije
- naprednije verzije dozvoljavaju prisustvo vise prekrivaca i samim tim imaju komplikovaniji nacin njihovog rasporedjivanja u rezervisanom delu memorije
- bilo je popularno 80-ih i 90-ih godina XX veka kada su resursi racunarskih sistema bili veoma skupi i ograniceni
- nedostatak: operacija deljenja delove programa na delove precizno i dovoljno dobro moze odraditi samo programer - nije moguce automatizovati jer je veoma tesko predvideti tok izvrsavanja programa
Dinamicko punjenje
- zasnovano na slicnim principima na kojima se zasnivaju i prekrivaci
- osnovna ideja: funkcije i procedure ne smestati u memoriju sve do trenutka dok ne budu potrebne odnosno pozvane
- nalaze se u sekundarnoj memoriji
- glavni program u primarnoj i izvrsava se
- kada se pozove neka funkcija, program proverava da li je ona vec u memoriji, ako nije vrsi se prebacivanje sa sekundarnog medija
- punilac se poziva da bi obavio ovo punjenje memorije i azurirao odgovarajuce tabele kako bi odgovarale novom stanju na sistemu
- nakon ucitavanja funkcija se izvrsava
prednost: funkcije koje nisu potrebne se nikada ne pune u memoriju
- dolazi do izrazaja u programima koji imaju dosta koda koji se odnosi na slucajeve koji se retko ili skoro nikada ne dogadjaju
- ne zahteva podrsku OS-a - korisnici ga mogu relativno jednostavno implementirati