Seminarski rad 2 POJAM I KONCEPT VIRTUELNE MEMORIJE Upravljanje memorijom je jedna od osnovnih funkcija operativnog sistema. Za izvršavanje svakog procesa je potrebna operativna memorija. Savremeni operativni sistemi omogućavaju svakom procesu da dobije više memorije (virtuelne) nego što je ukupna veličina stvarne, tj. fizičke memorije na datom računarskom sistemu. Glavni cilj kod upravljanja memorijom je da se kombinovanjem velike spore memorije sa malom brzom memorijom ostvari efekat brze memorije. 1 Programi koji se izvršavaju moraju biti prisutni u glavnoj memoriji računara. Do prelaska na izvršenje, programi se obično drže u sekundarnoj memoriji u svom izvršnom objektnom obliku. Prelasku na izvršenje programa prethodi punjenje glavne memorije programom. Sastavni deo punjenja je dodela memorije programu, tj. određivanje slobodnog bloka u koji se program iz sekundarne memorije prenosi u glavnu memoriju. Po završetku izvršenja programu se „oduzima“ memorija, tj. blok memorije koji mu je dodeljen se proglašava slobodnim. Poslovi dodele memorije programima, punjenja memorije, punjenja memorije i oslobađanja memorije od okončanih programa su nadležnosti operativnog sistema računara. Uzeti zajedno, ovi poslovi nazivaju se upravljanje memorijom. 2 Upravljanje memorijom postaje složeno u slučaju da: u glavnoj memoriji nema dovoljno prostora za držanje celih programa i njima pridruženih podataka u toku izvršenja programa, ili u glavnoj memoriji se smenjuje više procesa (programa u izvršenju) pri multiprogramskom radu računara. Slika 1. Koncept rada virtuelne memorije U težnji da se korisnici računara oslobode svih zaduženja vezanih za upravljanje memorijom kao apstrakcija glavne memorije nastala je virtuelna memorija. 3 Potreba za ovakvim načinom 1 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004., str. 153. 2 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 277. 3 Ibidem., str. 278. Fizička memorija Virtuelna memorija Memorijski čip Adresni prostor Hard disk
Seminarski rad. Bazični koncepti rada virtuelne memorije.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Seminarski rad
2
PPOOJJAAMM II KKOONNCCEEPPTT VVIIRRTTUUEELLNNEE MMEEMMOORRIIJJEE
Upravljanje memorijom je jedna od osnovnih funkcija operativnog sistema. Za izvršavanje
svakog procesa je potrebna operativna memorija. Savremeni operativni sistemi omogućavaju svakom
procesu da dobije više memorije (virtuelne) nego što je ukupna veličina stvarne, tj. fizičke memorije na
datom računarskom sistemu. Glavni cilj kod upravljanja memorijom je da se kombinovanjem velike
spore memorije sa malom brzom memorijom ostvari efekat brze memorije.1
Programi koji se izvršavaju moraju biti prisutni u glavnoj memoriji računara. Do prelaska na
izvršenje, programi se obično drže u sekundarnoj memoriji u svom izvršnom objektnom obliku.
Prelasku na izvršenje programa prethodi punjenje glavne memorije programom. Sastavni deo
punjenja je dodela memorije programu, tj. određivanje slobodnog bloka u koji se program iz
sekundarne memorije prenosi u glavnu memoriju. Po završetku izvršenja programu se „oduzima“
memorija, tj. blok memorije koji mu je dodeljen se proglašava slobodnim. Poslovi dodele memorije
programima, punjenja memorije, punjenja memorije i oslobađanja memorije od okončanih programa
su nadležnosti operativnog sistema računara. Uzeti zajedno, ovi poslovi nazivaju se upravljanje
memorijom.2
Upravljanje memorijom postaje složeno u slučaju da:
u glavnoj memoriji nema dovoljno prostora za držanje celih programa i njima
pridruženih podataka u toku izvršenja programa, ili
u glavnoj memoriji se smenjuje više procesa (programa u izvršenju) pri
multiprogramskom radu računara.
Slika 1. Koncept rada virtuelne memorije
U težnji da se korisnici računara oslobode svih zaduženja vezanih za upravljanje memorijom
kao apstrakcija glavne memorije nastala je virtuelna memorija.3 Potreba za ovakvim načinom
1 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 153. 2 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 277. 3 Ibidem., str. 278.
Fizička
memorija
Virtuelna memorija
Memorijski čip
Adresni prostor
Hard disk
Seminarski rad
3
upravljanja javila se sa razvojem računarskih sistema koji rade u režimu izvršavanja više zadataka
(engl. multitasking system) i opsluživanju više korisnika (engl. multiuser system). U daljem izlaganju
za oba načina rada koristiće se termin multiprogramski rad.4
U multiprogramskim sistemima upravljanje memorijom mora obezbediti izolovanje adresnih
prostora različitih programa, ali i dozvoliti kontrolisanu deobu memorije za kooperaciju i sinhronizaciju
programa. Virtuelna memorija uspešno objedinjuje hardverske izuzetke, hardverom potpomognuto
prevođenje adresa, glavnu memoriju, sekundarnu memoriju i jezgro operativnog sistema da svakom
procesu obezbedi, veliki, uniformni i privatni prostor.
Virtuelna memorija omogućuje izvršavanje programa čiji su samo neki delovi prisutni u
glavnoj memoriji računara, pri čemu su samo neki delovi prisutni u glavnoj memoriji računara,
odnosno čije potrebe za memorijom prevazilaze raspoloživu fižičku memoriju. Veličina adresnog
prostora u sistemu sa virtuelnom memorijom ograničena je samo brojem adresnih bitova koje
procesor može generisati, a ne veličinom raspoložive fizičke memorije. Na primer, procesor sa 32-
bitnim adresama i virtuelnom
memorijom ima virtuelni adresni prostor
veličine 232 odnosno 4GB, dok
raspoloživa glavna (fizička) memorija
može biti veličine 256MB. Virtuelna
memorija svakom procesu (programu)
dopušta korišćenje celog virtuelnog
adresnog prostora. Ovo zahteva da se
svakom korisniku pridruži odgovarajući
identifikator, koji se naziva identifikator
procesa (skr. PID) ili identifikator
adresnog prostora. (skr. ASID).
Osnovna prednost korišćenja
virtuelne memorije je mogućnost
izvršavanja programa koji zahteva
memorijski prostor veći od fizičke
memorije raspoložive na datom
računarskom sistemu. Koncept virtuelne
memorije stvara utisak korisniku da je njegov program u potpunosti učitan u memoriju i izvršen. Pre
nastanka koncepta virtuelne memorije programer je morao da vodi računa da njegov program može
da stane u fizičku memoriju.5 Ključna koncepcija na kojoj se zasniva virtuelna memorija je odvajanje
virtuelnih, odnosno logičkih adresa, koje se koriste u programu, od adresa lokacija glavne memorije i
sekundarne memorije u kojima se programi čuvaju. Virtuelne adrese sistem generiše pri prevođenju
i/ili poveziuvanju programa. Ove adrese na jedinstven način određuju elemente koji pripadaju jednom
logičkom adresnom prostoru. Međutim, sistem odlaže konkretnu dodelu memorije programu sve do
trenutka kada počinje izvršenje programa. Naime, tek kada operativni sistem, prema trenutnom
zauzeću memorije, može na najbolji način dodeliti memoriju tom programu. Pri izvršenju programa
svako obraćanje memoriji zahteva prevođenje virtuelne adrese koju generiše procesor u fizičku
adresu, određenu dodelom memorije i relativnom adresom instrukcije ili podatka u programu.
Prevođenje virtuelnih u fizičke adrese vrši jedinica za upravljanje memorijom (engl. memory
management unit, skr. MMU), koja je obično implementirana u čipu procesora. Na slici 2. je prikazano
4 Multiprogramski rad je multipleksiranje vremena rada procesora između više procesa prisutnih u glavnoj memoriji za bolje
iskorišćavanje raspoloživih resursa računara. 5 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 171.
Glavna memorija
Čip procesora 0
Prevođenje adresa
4
Virtuelna adresa (VA)
Fizička adresa (FA)
8
CPU MMU
12
16
20
4116 20
Reč podatka
M-4
Slika 2. Preslikavanje virtuelne u fizičku adresu pri izvršenju
instrukcije LOAD
Seminarski rad
4
prevođenje efektivne virtuelne adrese 4116 u instrukciji LOAD u fizičku adresu 20, po kojoj se pristupa
glavnoj memoriji.6 Memorija je adresiva na nivou bajtova, sa lokacijama dužine 4B, a prikazane
adrese su dekadne. Mogućnost da se programi izvršavaju pri bilo kojoj dodeli memorije programu
zahteva poštovanje sledećeg ograničenja: u programima se ne smeju koristiti načini adresiranja sa
fiksnim adresama, kao što je to sa fiksnim odnosno apsolutno adresiranje. Najpogodniji način
adresiranja je bazno adresiranje, koje je savremenim procesorima često i jedini način adresiranja
podataka u memoriji.
Kod velikog broja savremenih računara ne postoji jedan prema jedan korespondencija između
adresa koje se generišu u programu i adresa operativne memorije. Adrese koje se generišu u
programu zovu se virtuelne adrese, a adrese operativne memorije realne adrese. Opseg adresa koje
se generišu u programu se zove virtuelni adresni prostor, a opseg adresa operativne memorije realni
adresni prostor.
Pri dodeli memorije programu prirodno je da veličina dodeljenog bloka memorije bude
određena veličinom programa. Kako veličine programa mogu varirati u širokim granicama, dodela
memorije je složena i vodi neefikasnom korišćenju memorije. Naime, prenošenje u memoriju i iz
memorije programa različitih dužina vremenom dovodi do pojave velikog broja malih slobodnih
blokova memorije, koji se pojedinačno mogu iskoristiti za nove dodele, a zbirno mogu činiti značajan
deo memorije. Ova pojava naziva se spoljašnja fragmentacija memorije. Virtuelna memorija kod koje
se se virtuelni adresni prostor deli u segmente čije su dužine određene dužinom programa naziva se
segmentna virtuelna memorija (engl. segmented virtual memory). Kod nje se i dodela memorije vrši u
takvim segmentima. Dodela memorije programima može pojednostaviti ako se svaki program
„upakuje“ u izvestan broj stranica fiksnih dužina. Za datu veličinu stranica i dužinu programa potreban
broj stranica određuje se tako da njihova zbirna dužina bude jednaka ili veća od dužine programa.
Virtulena memorija kod koje se virtuelni adresni prostor deli u ovakve stranice naziva se stranična
virtuelna memorija (engl. paged virtual memory). Kod nje se i memorija dodeljuje programu u
stranicama. Pri tome se takođe javljaju neiskorišćeni delovi memorije, ovog puta u vidu neiskorišćenih
delova poslednjih stranica dodeljenih programima. Ova pojava naziva se unutrašna fragmentacija
memorije. Stranična virtuelna memorija se danas koristi mnogo ćešće nego segmentna virtuelna
memorija.
Kod virtuelnih memorija stranične organizacije virtuelni adresni prostor se deli na delove
fiksne veličine koji se nazivaju stranice, a realni adresni prostor se deli na delove fiksne veličine koji
se nazivaju blokovi. Veličina stranice odgovara veličini bloka. Pojedine stranice svih procesa se po
potrebi smeštaju u raspoložive blokove operativne memorije. Kada se svi blokovi operativne memorije
popune stranicama različitih procesa, neka od tih stranica se vraća na disk da bi se oslobodio blok u
operativnoj memoriji za neku novu stranicu. Kod virtuelnih memorija segmentne organizacije virtuelni
adresni prostor se deli na delove promenljive veličine koji se nazivaju segmenti. Pojedini segmenti
svih procesa se po potrebi smeštaju u delove operativne memorije koji po veličini odgovaraju
veličinama segmenata koji se u njih smeštaju. Kada je kompletna operativna memorija popunjena
segmentima različitih procesa, jedan ili više segmenata se vraća na disk da bi se u operativnoj
memoriji oslobodio prostor dovoljan za smeštanje segmenta koji se dovlači. Kod segmentno-stranične
organizacije virtuelne memorije virtuelni adresni prostor se deli na delove promenljive veličine koji se
nazivaju segmenti, a onda se segmenti dele na delove fiksne veličine koji se nazivaju stranice. Realni
adresni prostor se deli na delove fiksne veličine koji se nazivaju blokovi. Veličina stranice odgovara
veličini bloka. Pojedine stranice pojedinih segmenata svih procesa se po potrebi smeštaju u
raspoložive blokove operativne memorije. Kada se svi blokovi operativne memorije popune
6 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 279.
Seminarski rad
5
stranicama segmenata procesa, neka od stranica se vraća na disk da bi se oslobodio blok za neku
novu stranicu nekog segmenta nekog procesa.7
Program za upravljanje memorijom proširuje RAM memoriju sa rezervisanim delom
memorijskog prostora na hard disku. Prošireni deo RAM memorije se zove swap prostor8. Proširenje
RAM memorije swap prostorom ima isti efekat kao instaliranje dodatne RAM memorije. U većini
slučajeva dovoljno je povećati swap prostor kako bi se izvršavali veći programi. Operativni sistem,
odnosno program za upravljanje memorijom jedino mora da obezbedi da program i podaci budu
raspoloživi u RAM memoriji kada su potrebni. Delovi programa kojima se ne pristupa često, delovi
programa koji se koriste za upravljanje greškama, kao i delovi programa kojima se dugo nije pristupilo
se prenose na swap prostor. Kada bilo koji od tih delova zatreba program za upravljanje memorijom
taj deo prenosi u RAM memoriju.9
Treba pomenuti da je koncepcija virtuelne memorije prvi put impelementirana u računaru
Atlas, koji je razvijen na Mančesterskom univerzitetu. Prototip ovg računara je završen 1961. godine.
Komercijalni model ovog računara počela je da proizvodi firma Ferranti 1963. godine.
7 http://rti7020.etf.bg.ac.yu/rti/ri3aor/index.html 8 Swap space – enlgeski naziv za prostor na hard disku koji se dodeljuje virtulnoj memoriji; često se naziva i swap file zato
što u sekundarnoj memoriji on ima oblik fajla (datoteke). 9 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
Kod stranične virtuelne memorije virtuelni adresni prostor podeljen je na virtuelne stranice, a
fizički adresni prostor na fizičke stranice, za koje se često koristi i termin okvir stranice. Veličina
stranica L određena je celobrojnim stepenom dvojke, i najčešće iznosi L=4KB. Virtuelni prostor
veličine 2V sadrži virtuelnih stranica označenih brojevima 0, 1, ..., V-1. Fizički adresni prostor veličine
2R bajtova sadrži R fizičkih stranica označenih brojevima 0, 1, ..., R-1. Data virtuelna adresa aV deli se
na pomeraj unutar stranice p i broj virtuelne stranice BVS. Pri svakom obraćanju memoriji ova
virtuelna adresa preslikava se u fizičku adresu af, koja se takođe deli na pomeraj unutar stranice p i
broj fizičke adrese.
Proces najčešće popunjava mnogo
manje virtuelnih stranica no što ih ima u
virtelnom adresnom prostoru. Takve
nepopunjene (nekreirane) strane u daljem
tekstu biće referirane kao nepostojeće. Proces
može kreirati nove virtuelne stranice dinamički
u okviru hipa10, upućujući zahteve za dodelu
memorije. Od kreiranih virtuelnih stranica
procesa, neke se u prisutne u glavnoj
memoriji, dok se ostale nalaze na disku.
Takvu situaciju prikazuje slika 3.11 Na ovoj slici
GM označava virtuelne stranice prisutne u
glavnoj memoriji, DSK one prisutne samo na
disku, a NP nepostojeće stranice. Stranična virtuelna memorija omogućuje da se virtuelnim
stranicama, sukcesivnim u virtuelnom adresnom prostoru procesa, dodele proizvoljne fizičke stranice,
što je na ovoj slici slučaj sa VS 1 i VS 2.
Prevođenje virtuelnih u
fizičke adrese vrši se pri svakom
obraćanju memoriji. Ovo
prevođenje vrši se korišćenjem
stranične tablice (ST), koja za
svaku virtuelnu stranicu ima po
jednu stavku. Stavka stranične
tablice (SST) adresira se brojem
virtuelne stranice BVS dobijene iz
virtuelne adrese aV izdvajanjem
pomeraja iz nje. Ovakva stavka
stranične tablice sadrži broj fizičke
stranice BFS u koju se preslikava
virtuelna stranica BVS. Pomeraj u
virtuelnoj adresi aV se neizmenjen
prenosi u polje pomeraja fizičke
10 Hip (engl. heap) – područje virtelnog adresnog prostora na raspolaganju koje se može dinamički širiti. 11 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 280.
Virtuelna adresa
BVS pomeraj
Stranična tablica
P K M R W BFS
Indeks u ST
Bazna adresa
stranične tablice BFS pomeraj
Registar procesora Fizička adresa
Slika 4. Korišćenje stranične tablice pri prevođenju virtuelne u fizičku
adresu
Virtuelna memorija
Glavna memorija
VS 0 NP
VS 1 GM FS 0
VS 2 GM FS 1
VS 3 DSK
NP
GM
DSK FS (R-1)
VS (V-1) DSK
Slika 3. Preslikavanje virtulenih stranica procesa u fizičku
memoriju. VS označava virtuelne a FS fizičke stranice
Seminarski rad
7
adrese (slika 4).12 Pored veličine BFS stavka stranične tablice sadrži i sledeće indikatore koji se
odnose na tu virtuelnu stranicu: P – prisutna u glavnoj memoriji, K – korišćena u proteklom periodu, M
– modifikovana u glavnoj memoriji, R – dozvoljen pristup radi čitanja i W – dozvoljen pristup radi
upisa. Ako je virtuelna stranica prisutna u glavnoj memoriji, tj. P(SST) = 1, imamo pogodak stranice, a
P(SST) = 0 signalizira da stranica nije u glavnoj memoriji, i tada se javlja greška stranice (engl. page
fault). Virtuelna stranica koja je modifikovana u glavnoj memoriji a izabrana za zamenu sa drugom
virtuelnom stranicom, mora se vratiti na disk. Indikator K koristi se u LRU algoritmu (više o ovom i
drugim algoritmima biće opisano u poglavlju „Strategije i algoritmi pribavljanja i zamene podataka u
memoriji“) zamene virtuelnih stranica u memoriji. Indikatori R i W koriste se u zaštiti memorije. Bazna
adresa stranične tablice tekućeg procesa čuva se u nekom registru procesora. Pored ove stranične
tablice, mora postojati još jedna tablica koja za svaku kreiranu virtuelnu stranicu sadrži i njenu adresu
na disku.
Problem koji nastaje kod opisanog rešenja korišćenja tabele stranica je činjenica da su za
svaki pristup podacima potrebna dva pristupa fizičkoj memoriji. Prvi memorijski pristup je pristup tabeli
stranica, a drugi stvarnim podacima. Ubrzanje se može ostvariti pomoću keš ili skrivene memorije
(engl. cache memory). Moguće opcije za realizaciju su asocijativna memorija, memorija sa direktnim
preslikavanjem itd.13
Prevođenjem virtuelne adrese u slučaju pogotka upravlja MMU kroz sledeće korake (slika 5):
Korak 1: Procesor formira virtuelnu adresu VA i šalje je u MMU.
Korak 2: MMU formira adresu stavke stranične tablice A(SST) i upućuje zahtev za
pribavljanje SST iz keša/glavne memorije
Korak 3: Keš/glavna memorija vraćaju u MMU zahtevanu SST.
Korak 4: MMU formira fizičku adresu i dostavlja je kešu/glavnoj memoriji.
Korak 5: Keš/glavna memorija vraćaju procesoru zahtevanu reč podatka.14
Čip procesora 2
Keš/glavna memorija
MMU
A(SST)
Procesor 1
SST
VA 3
FA
4
5
Podatak
Slika 5. Učešće hardvera računara u prevođenju virtuelne adrese pri pogotku stranice
Nasuprot pogotka stranice, pri kojoj u upravljanju prevođenjem adresa učestvuje samo
hardver, greška stranice zahteva sadejstvo hardvera i kernela operativnog sistema sistema,
definisano sledećim koracima (slika 5):
Koraci 1-3: Istovetni su sa koracima 1-3 pri pogotku stranice.
12 Ibidem, str. 281. 13 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 173–174. 14 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 280–281.
Seminarski rad
8
Korak 4: Bit P(SST) = 0 pa MMU aktivira izuzetak, koji predaje upravljanje procesorom
rukovaocu izuzecima greške stranice u kernelu operativnog sistema.
Problem dvostrukog obraćanja memoriji se delimično može rešiti korišćenjem posebne keš
memorije u kojoj se drže najaktuelnije stavke stranične tablice. Keš memorija sa ovom namenom
poznata je kao Translation Lookaside Buffer, skr TLB. Pri svakom obraćanju memoriji najpre se
prisupa TLB-u sa ciljem da se u njemu nađe broj fizičke stranice u kojoj je prisutna tekuća virtuelna
stranica. U slučaju pogotka, nije potrebno obraćanje straničnoj tablici u memoriji, pa se prevođenje
adrese znatno ubrzava.16 Nastoji se da se obraćanje TLB-u svede na samo jedan taktni ciklus, što
upućuje da se TLB implementira kao mala keš memorija sa potpunim asocijativnim preslikavanjem.
Struktura TLB-a i nejgovo učešće u prevođenju virtuelnih adresa prikazano je na slici 7.17 Stavka TLB-
a sadrži ako etiketu broj virtuelne stranice na koju se odnose, broj fizičke stranice u kojoj je prisutna ta
virtuelna stranica i indikatore V, R, W i M. Indikator V pokazuje da li je ta stavka TLB-a važeća, a
ostali indikatori imaju ista značenja kao i kod stranične tablice. Pri prevođenju date virtuelne adrese
najpre sledi obraćanje TLB-u. Ako je BVS virtuelne adrese jednak etiketi neke stavke TLB-a, sadržaj
polja BFS te stavke prenosi se u adresni registar memorije i sledi obraćanje memoriji. Ako se javi
promašaj u TLB-u sledi pristup straničnoj tablici iz koje dobijamo informaciju da li je virtuelna stranica
prisutna u memoriji i gde, ili da ona tamo nije prisutna. U drugom slučaju javlja se greška stranice
(umesto „promašaja“ kod keša), koja dovodi do istoimenog izuzetka, za čije opsluživanje se poziva
operativni sistem. Pošto opsluživanje greške traje dugo (nekoliko ms), dolazi do promene konteksta
(prelaska sa tekućeg na neki drugi program), do okončanja ovog opsluživanja. Opsluživanje greške
stranice uključuje prenošenje promašene stranice u glavnu memoriju, ažuriranje stranične tablice i
TLB-a. Kada se javi promašaj u TLB-u, ali se u straničnoj tablici nađe fizička stranica u kojoj je
prisutna virtuelna stranica, ažurira se TLB kreiranjem nove stavke sa odgovarajućim poljima. U
pogođenoj stavci TLB-a ili stranične tablice proveravaju se bitovi zaštite memorije R i W, i ako je
16 http://rti7020.etf.bg.ac.yu/rti/oo2or/index.html 17 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 283.
Virtuelna adresa
BVS pomeraj
TLB
V R W M etiketa BFS
BFS pomeraj
pogodak Fizička adresa
Slika 7. TLB u postopku prevođenja virtuelnih adresa.
Seminarski rad
10
pokušan nedozvoljeni pristup memoriji javlja se izuzetak povrede zaštite memorije. Ove aktivnosti
prikazane su na slici 8.18
Slika 8. Aktivnosti pri prevođenju virtuelne adrese uz učešće TLB-a
Šta se sve dešava sa sadržajem TLB-a pri promeni konteksta procesa? Pošto TLB sadrži
stavke stranične tablice tekućeg procesa, promena konteksta procesa zahteva izmenu celokupnog
sadržaja TLB-a. Dakle, pri napuštanju tekućeg procesa moraju se sve stavke TLB-a proglasiti
nevažećim, što se postiže jednostavnim brisanjem indikatora V u svim njegovim stavkama.
Alternativno rešenje je da se etiketi u svakoj stavci TLB-a doda identifikator procesa PID, koji bi
učestvovao u traženju stavke TLB-a koja određuje zahtevano prevođenje virtuelne adrese. Sa
ovakvim rešenjem nije protrebno brisati sadržaj TLB-a pri promeni konteksta procesa. Njegov sadržaj
se po potrebi popunjava stavkama stranične tablice novog procesa.19
TLB je neizostavno hardversko pomagalo u implementaciji virtuelnih memorija. Broj stavki
TLB-a se kreće od 32 do 256. TLB-i manjeg obima implementiraju se kao keš memorije sa potpunim
asocijativnim preslikavanjem, a oni većeg obima sa skupno-asocijativnim preslikavanjem i
asocijativnošću 2:4. Mnogi procesori sa posebnim keš memorijama instrukcija i podataka imaju i
otvorene TLB-e za prevođenje virtuelnih adresa instrukcija i podataka.20
18 Ibidem, str. 284. 19 http://rti7020.etf.bg.ac.yu/rti/oo2or/index.html 20 http://rti7020.etf.bg.ac.yu/rti/ri3aor/index.html
FIFO algoritam svakoj stranici dodeljuje vreme učitavanja te stranice u operativnu memoriju i
iz operativne memorije izbacuje onu stranicu koja je najranije učitana. Nije neophodno memorisati
vreme učitavanja stranice u operativnu memoriju, jer se impementacija može uraditi i pomoću FIFO
reda čekanja, tj. FIFO liste. FIFO algoritam zamene stranica se može lako programski realizovati, ali
perforanse nisu uvek dobre. Sa povećanjem broja okvira broj straničnih prekida bi trebalo da opada.
Međutim, kod FIFO algoritma može se desiti da sa povećanjem broja strana raste i broj straničnih
prekida.29
Algoritam koji bi dao najbolje rezultate zahteva poznavanje ponašanja programa u
budućnosti. Ovakvu optimalnu strategiju zamene predložio je Beladi (Bellady) 1966. godine u radu
koji se odnosio na virtuelne memorije. Ona se može formulisati otprilike ovako: za zamenu se bira
blok koji će od svih kandidata za zamenu biti korišćen u najdaljoj budućnosti.30 OPT algoritam
izbacuje onu stranicu stranicu koja se najduže neće koristiti i na taj način se ostvaruje najmanji broj
straničnih prekida za zadati broj okvira.31 Mada je strategija zamene neostvariva u praktičnim
uslovima, ona daje donju granicu faktora promašaja sa kojom se upoređuju ostale ostvarive strategije
zamene (LRU, RAND i FIFO).
Postoje i drugi algoritmi za ovu namenu, ali navedeni su najkorišćeniji, s tim što je za
današnje koncepte virtuelne memorije najpogodniji, a i najčešće se koristi LRU u kombinaciji sa nekim
od ostalih. Ovo je posledica toga da prema LRU algoritmu broj kandidata, često je mnogo veći od
jedan pa strikna implementacija ovog algoritma nije moguća. Treba spomenuti da termin „najmanje
skoro korišćeni blok podataka“ označava blok podataka od čijeg je poslednjeg korišćenja proteklo
najduže vreme.
LRU algoritam svakoj stranici dodeljuje vreme korišćenja i iz operativne memorije izbacuje
onu stranicu koja nije najduže korišćena. LRU se implementira ili pomoću brojača pristupa stranici ili
pomoću steka na kome se memorišu brojevi stranica. LRU algoritam zahteva značajnu hardversku
podršku, korisničkih procesa od najmanje 10. S obziram da mali broj računarskih sistema obezbeđuje
dovoljno hardverske podrške za LRU algoritam u praksi se koristi dodatni Ref bit (engl. reference bit)
za svaku vrstu u tabeli stranica i taj se bit hardverski postavlja i briše.
PRIMER: Neka je dat sistem sa 4 okvira i 8 stranica. Inicijalno okviri su prazni. Stranicama pristupa
program na osnovu sledećeg traga adresa:
0 7 2 1 7 3 2 4 7 2 5 1
Odrediti broj straničnih prekida ako se koristi LRU algoritam za zamenu stranica.
U tabeli 1. je u prvoj vrsti prikazan trag adresa. Od druge do pete vrste tabele nalaze se raspoloživi
okviri. Vrednost unutar okvira predstavljaju adrese stranica. Osenčene su kolone u trenucima kada
nema straničnih prekida.
0 7 2 1 7 3 2 4 7 2 5 1
0 0 0 0 0 3 3 3 3 3 5 5
7 7 7 7 7 7 7 7 7 7 7
2 2 2 2 2 2 2 2 2 2
1 1 1 1 4 4 4 4 1
Prema tome, ako se koristi LRU algoritam za zamenu stranica broj straničnih prekida biće 8.32
29 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 175. 30 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 260. 31 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 176. 32 Ibidem, str. 176.
Seminarski rad
18
Pri definisanju sadržaja stavki stranične tablice naveden je i indikator K – korišćena u
prethodnom periodu. Korišćenjem ovog indikatora prema sledećum algoritmu dobija se aproksimacija
LRU zamene stranica u memoriji. Kao što je već spomenuto memorija sadrži R fizičkih stranica iz
skupa {0, 1, …, R-1}. Pri dodeli fizičke stranice i u stavki stranične tablice indikator K se briše.
Uvedimo brojač BR koji broji po modulu R, sa početnim sadržajem 0. Pri svakom obrćanju fizičkoj
stranici i, u stavci stranične tablice sa ovom fizičkom stranicom K se postavlja na 1. Posle svake
greške stranice sistem organizuje prolaz kroz stavke stranične tavlice koje odgovaraju virtuelnin
stranicama izvršavajući pri tom sledeći algoritam izveden paskalskim pseudokodom:
traženje := true;
while traženje do
begin
if K[BR] := 0 then
begin
traženje := false;
K[BR] := 1;
izabrati za zamenu fizičku stranicu iz ove stavke;
end
else
K[BR] := 0;
BR := (BR + 1) mod R
end;
Startujući sa zatečenim sadržajem brojača BR skeniramo straničnu tablicu tražeći pri tome
stavku sa K=0. U svakoj stavci sa K=1 koju prođemo K se menja na 0. Kada naiđemo na prvu stavku
sa K=0, fizičku stranicu iz te stavke biramo za zamenu, postavljamo K na 1 i inkrementiramo brojač
BR da ne startuje novo traženje od te stavke. Ovaj algoritam za zamenu bira fizičku stranicu koja nije
bila korišćena od poslednje posete te stranice pri skeniranju. Pošto skeniranjem nisu obuhvaćenje sve
stranice, i ne za ceo životni vek procesa, ovaj algoritam je samo aproksimacija LRU procesa.33
Pored navedenih postoje i drugi algoritmi zamene stranica kao što su algoritam druge šanse
(engl. second chance), algoritmi sa registrom istorije pristupa stranici, gde svaki bit daje informaciju
da li se u poslednjih n milisekundi pristupilo datoj stranici i algoritmi koji se zasnivaju na broju pristupa
stranici (engl. most frequently used). Algoritam druge šanse poboljšanje FIFO algoritma. Koristi se
Ref bit koji ima vrednost 1 ako se stranici pristupilo u poslednjih n milisekundi ili vrednosr 0 u
suprotnom. Kada je vrednost Ref bita 0 tada algoritam radi kao FIFO. Kada je Ref=1 tada se stranica
ne izbacuje iz memorije, već se Ref bit postavlja na nulu i vreme učitavanja stranice se ažurira sa
tekućim vremenom, odnosno deskriptor stranice se stavlja na kraj FIFO liste. Drugim rečima, stranici
se daje druga šansa i prelazi se na sledeću FIFO stranicu. Realan je slučaj i da su svi Ref bitovi
postavljeni na vrednost 1. Da bi se tada sprečila mogućnost da ne psotoji stranica za izbacivanje iz
memorije, nakon prvog resetovanja Ref bita za datu stranicu uvodi se zabrana promene vrednosti Ref
bita, tj. Ref bit ima vrednost 0. Ako se toj stranici nakon toga i pristupi vrednost Ref bita ostaje 0.
Algoritam druge šanse se može implementirati i pomoću kružne liste. Tada pokazivač ukazuje na
sledeću stranicu koju treba zameniti.
Nedostatak upravljanja memorijom pomoću dinamičkih stranica je dodatno korišćenje
resursa. Za tabelu stranica potrebna je dodatna memorija. Jedno rešenje je da se primeni straničenje
na samu tabelu stranica. Ostala rešenja uvode složeniju strukturu podataka za preslikavanje vituelne
u fizičku adresu. Sam proces preslikavanja takođe unosi kašnjenje.34
33 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 291. 34 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,