virtuelna memorija
DESCRIPTION
Seminarski rad. Bazični koncepti rada virtuelne memorije.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.,
str. 171.
Seminarski rad
6
SSTTRRAANNIIČČNNAA VVIIRRTTEELLNNAA MMEEMMOORRIIJJAA
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.
Korak 5: Rukovalac izuzecima greške stranice pronalazi žrtvovanu stranicu u glavnoj
memoriji (onu koja će biti zamenjena), i ako je ona modifikovana, vraća je na disk.
Korak 6: Rukovalac izuzecima greške stranice pribavlja novu stranicu u glavnu
memoriju i ažurira u njoj i odgovarajuću SST.
Korak 7: Rukovalac izuzecima greške stranice vraća upravljanje procesu koji ga je
aktivirao, dovodeći do restartovanja instrukcije na kojoj se javio izuzetak. Procesor
ponovo šalje istu virtuelnu adresu u MMU. Međutim, sada je virtuelna stranica prisutna
u glavnoj memoriji pa se javlja pogodak, pri kome se zahtevani podatak dostavlja
procesoru na već opisani način.15
4 Izuzetak
Rukovalac izuzetka greške
stanice
Čip procesora
2
Keš / glavna
memorija
MMU
A(SST) žrtvovana stranica
Disk
Procesor
5
1 SST
VA 3
nova
stranica
7
6
Slika 6. Učešće hardvera računara u prevođenju virtuelne adrese pri grešci stranice
Ovakva stranična tablica, koja se naziva linearna stranična tablica ili potpuna stranična
tablica, ima V stavki. Za 32-bitni vitruelni adresni prostor sa adresiranjem na nivou bajtova i stranice
veličine 4KB, V = 232 / 212 = 220 = 1M. Ako je svaka stavka stranične tablice dužine četiri bajta, cela
stranična tablica je veličine 4MB. Danas veći broj 64-bitnih procesora koristi virtuelni adresni prostor
od 43 i više bitova. Postavlja se pitanje: Koliko su velike njihove stranične tablice? Jedno od rešenja
za smanjenje broja stavki straničnih tablica ovakvih procesora je mogućnost korišćenja stranica
različitih veličina, na primer 8KB, 64KB, 512KB i 4MB. S obzirom da je po jedna ovakva stranica
potrebna za svaki proces u sistemu tu se ispoljava ranije naveden problem neophodnosti dupliranog
pristupa. Stranične tablice ovih veličina ne mogu se držati u registrima procesora, već u glavnoj
memoriji računara.
Dakle, može ovaj koncept uključuje rešavanje dva glavna problema. Prvi se odnosi na veliko
zauzeće memorije straničnim tablicama procesa, a drugi na to da svako obraćanje memoriji za
pribavljanje instrukcije ili podatka zahteva po jedno dodatno obraćanje memoriji za prevođenje
virtuelne u fizičku adresu.
15 Ibidem, str. 282.
Seminarski rad
9
TTLLBB –– KKEEŠŠ ZZAA PPRREEVVOOĐĐEENNJJEE VVIIRRTTUUEELLNNIIHH
UU FFIIZZIIČČKKEE AADDRREESSEE
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
Virtulena adresa
Pregledanje TLB-a
Šetnja kroz strnaičnu tablicu
Ažuriranje TLB-a
Greška stranice (OS pribavlja
stranicu)
Provera zaštite
Greška zaštite
Fizička adresa (ka kešu)
pogodak promašaj
Stranica u GM
Pristup dozvoljen
Da Ne Da Ne
Restartovanje instrukcije
Seminarski rad
11
HHIIJJEERRAARRHHIIJJSSKKAA SSTTRRAANNIIČČNNAA TTAABBLLIICCAA
Veliki obim stranične tablice, uz veliki broj procesa može angažovati znatan deo glavne
memorije. Računar naravno ne sme koristiti svoje resurse samo za svoje potrebe, veći deo toga mora
prepustiti korisniku. Dakle, rešenje je da se glavnoj u glavnoj memoriji ne čuvaju cele stranične tablice
svih procesa, već samo trenutno aktuelni delovi svake od ovih tablica. Pri tome se naravno ne
odričemo TLB-a, čiji je izbor aktuelnih stavki stranične tablice vrlo uzak.21
Razmotrimo virtuelnu memoriju sa 32-bitnim virtuelnim adresnim prostorom, adresivom na
nivou bajtova, i stranicama 4KB. Stranična tablica ima 1M stavki. Linearna struktura ovakve stranične
tablice može se zameniti hijerarhijskom strukturom, na primer u dva nivoa, na sledeći način. Neka je
svaki blok stranične tablice sa po 1K njenih sukcesivnih stavki (nazovimo ga ST blok) adresiran
jednom stavkom pomoćne stranične tablice, nazovimo je stranična tablica nivoa 1 (STN1), koja
takođe ima 1K stavki. Sa stavkama dužine 4B, STN1 je veličine jedne stranice, i može se čuvati u
glavnoj memoriji. Lokalnost programa ispoljava se i na nivou stranične tablice. To znači da će u
nekim vremenskim intervalima, merenim hiljadama ili milionoma obraćanja memoriji, biti korišćen
samo neki podskup
stavki stranične
tablice. Ovaj
podskup korišćenih
stavki stranične
tablice nalazi se u
malom broju ST-
blokova, zovimo ih
aktivnim ST-
blokovima. ST-
blokovi su veličine
4KB. Zaključujemo
da u prevođenju
virtuelnih adresa u
nekim vremenskim
intervalima
učestvuje relativno
mali broj aktivnih
ST-blokova. Sa
smenjivanjem ovih
vremenskih
intervala menjaju se
i aktivni ST-blokovi. Za aktuelni proces u glavnoj memoriji se onda mora držati STN1 i aktivni ST-
blokovi. Za aktuelni proces u glavnoj memoriji se mora držati STN1 i aktivni ST-blokovi, s tim da se
aktivni ST-blokovi menjaju s vremenom. Prenosom aktivnih ST-blokova između diska i glavne
memorije upravlja virtuelna memorija kao i sa prenosom programa i podataka korisnika.
Hijerarhijski organizovana stranična tablica sa dva nivoa prikazana je na slici 9.22 Polje broja
virtuelne stranice podeljeno je u dva nivoa dužina po 10 bitova, čiji su sadržaji označeni sa v1 i v2.
21 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 285. 22 Ibidem, str. 286
pomerajv2v1
Koren tekuće
stranične tablice
(Bazni registar
procesora)
Stranična
tablica nivoa 1
Stranična
tablica nivoa 2
Stranice
podataka
VIRTUELNA ADRESA
31 2122 12 11
v1
v2
pomeraj
Indeks u ST
nivoa 1
Indeks u ST
nivoa 2
0
Stranica u glavnoj memoriji
Stranica u sekundarnoj memoriji
SST nepostojeće stranice
Slika 9. Hijerarhijska stranična tablica u dva nivoa
Seminarski rad
12
Bazni registar procesora adresira koren stranične tablice – to je adresa početka stranične tablice
nivoa 1 procesa. Vrednost v1 koristi se kao indeks stavke STN1. Svaka stavka ove stranične tablice
sadrži podatke od jednom ST-bloku, koji su ovde stranične tablice nivoa 2 (skr. STN2). U te podatke
spada indikator prisutnosti STN2 u glavnoj memoriji, i ako je ona tamo prisutna, njena bazna adresa.
Na osnovu bazne adrese STN2, dobijene iz STN1, i veličine v2 kao indeksa u STN2 koja učestvuje u
prevođenju date virtuelne adrese. Broj fizičke stranice dobijen iz te stavke sa dopisanim pomeranjem
iz virtuelne adrese daje fizičku adresu podatka u glavnoj memoriji. Ovakve pristupe stavkama STN1 i
STN2 do pristupa podatku u glavnoj memoriji, koji se nazivaju i šetnja kroz stranične adrese (engl.
page table walking) organizuje hardver u okviru MMU-a.
Hijerarhijska stranična tablica može smanjiti zauzeće glavne memorije delovima straničnih
tablica procesa. Međutim, ako je lokalnost obraćanja procesa memoriji slabo izražena, aktivni ST-
blokovi se često menjaju. Ovo povlači potrebu za čestom razmenom prethodno aktivnih ST-blokova i
novih aktivnih ST-blokova između glavne memorije i diska, što povećava premašaje operativnog
sistema računara. Značajan nedostatak hijerarhijske organizacije stranične tablice je povećan broj
obraćanja memoriji, jednak broju nivoa stranične tablice, pri prevođenju u slučaju promašaja TLB-a.
Novi 64-bitni procesori sa vrlo velikim virtuelnim adresnim prostorom zahtevaju tri i više nivoa
stranične tablice što znatno produžuje prevođenje virtuelnih adresa.23
23 Ovde se misli, pre svega na premašenje (engl. overhead) operativnog sistema odnosno vreme koje operativni sistem utroši
na upravljanje (administriranje) sistemom iznad vremena izvršenja korisničkih programa.
Seminarski rad
13
IINNVVEERRTTOOVVAANNAA SSTTRRAANNIIČČNNAA TTAABBLLIICCAA
Krupan nedostatak korišćenja linearnih ili hijerarhijskih tablica je da njihovo čuvanje u glavnoj
memoriji može zauzimati znatan njen deo. Ovo posebno dolazi do izražaja sa povećanjem virtuelnog
adresnog prostora, na primer pri prelasku sa 32-bitne na 64-bitnu arhitekturu, kada broj virtuelnih
stranica enormno poraste. Ovakvo drastično povećanje virtuelnog prostora ne može biti praćeno
adekvatnim povećanjem veličine glavne memorije. Prema tome, pogodnija je organizacija stranične
tablice koja raste srazmerno sa porastom fizičkog, a ne virtuelnog adresnog prostora. Stranična
tablica sa takvom organizacijom postoji, i naziva se invertovana stranična tablica (engl. inverted page
table).
Broj stavki invertovane stranične tablice jednak je broju fizičkih stranica, tako da je ona gusto
popunjena. Pošto njene stavke za indeks imaju vrednosti iz skupa {0,1,…,R-1} potreban je
mehanizam koji će dâti broj virtuelne stranice tranformisati u indeks stavke invertovane stranične
tablice. Za to se može koristiti tzv. heš (engl. hash) funkcija. Ovde će biti razmotren jedan od više
mogućih korišćenja invertovanih straničnih tablica.
Glavna memorija
Virtuelna adresa
BVS pomeraj
BVS
Heš
funkcija
bvs RW U veza
D ind bvs 0
Legenda
BVS - broj virtuelne stranice bvs 1 veza
BFS - broj fizičke stranice
PID - identifikator procesa
bvs 0
RW - pravo pristupa
U - upotrebi vezu
D - dodeljena veza - pokazivač na sledeću SST
Invertovana stranična tablica
Heš tablica
Lista nedodeljenih fizičkih stranica
Slika 10. Adresiranje invertovane stranične tablice i struktura njenih stavki
Za tranformisanje datog broja virtuelne stranice u indeks stavke koristi se heš funkcija
zajedno sa pomoćnom heš tablicom (slika 10).24 Heš tablica H ima dva puta veći broj stavki od broja
fizičkih stranica. Stavka heš tablice sadrži identifikator D i indeks ind stavke u invertovanoj straničnoj
tablici koja učestvuje u prevođenju adrese. Vrednost D=1 znači da je fizička stranica sa BFS=ind
dodeljena, a D=0 da nije dodeljena. U stavki invertovane stranične tablice bvs je broj virtuelne
stranice, veza je pokazivač (indeks) na sledeću stavku invertovane stranične tablice, a U je indikator
24 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 288.
Seminarski rad
14
upotrebe veličine veza. RW kao i ranije određuju pravo pristupa. Kao heš funkcija često se koristi
logička XOR funkcija između PID i dela polja BVS. Pri prevođenju virtuelne adrese kao okviru tekućeg
procesa heš funkcija daje indeks stavke heš tablice iht=h(BVS, PID). Vrednost ind iz ove stavke
upućuje na stavku invertovane stranične tablice IST(ind). BVS iz date virtuelne adrese poredi se sa
bvs u ovoj stavci. U slučaju jednakosti, virtuelna stranica BVS prevodi se u fizičku stranicu BFS=ind.
U slučaju neslaganja, nastavlja se ovo poređenje sa vrednostima bvs u stavkama invertovane
stranične tablice koje obrazuju listu koja je se završava stavkom u kojoj je U=0. Ako se u nekoj od
ovih stavki ustanovi jednakost, traženi broj fizičke stranice određen je vrednošću veza iz prethodnog
elementa ove liste. Ako do kraja liste nema jednakosti, virtuelna stranica koju prevodimo nije u glavnoj
memoriji, pa se javlja greška stranice.
Po ustanovljenoj grešci stranice toj stranici se dodeljuje fizička stranica iz liste F, koja sadrži
brojeve nedodeljenih fizičkih stranica. U stavci heš tablice sa indeksom iht ispituje se identifikator D.
Pri D=0 za vrednost ind uzima se broj fizičke stranice sa početka liste F, a D se postavlja na 1. U
stavki sa indeksom ind u invertovanoj straničnoj tablici bvs uzima vrednost BVS, a U se briše (dobija
vrednost 0). Pri D=1 postojeća vrednost ind upućuje na stavku invertovane stranične tablice koja je
prva u listi stavki koje sadrže brojeve virtuelnih stranica sa istom heš vrednosšću. Dolazi se do
poslednje stavke u toj listi, i za vrednost veza u njoj uzima se broj fizičke stranice sa početka liste F, a
U se postavlja na 1. Ista vrednost broja fizičke stranice indeksira novu poslednju stavku u ovoj listi. U
nju se za vrednost bvs unosi BVS iz greške stranice, a U se briše. Iz liste F briše se broj dodeljene
fizičke stranice. Ovim se ažuriranje stanja invertovane stranične tablice završeno. Potrebno je
ažurirati i TLB. I naravno, treba sa diska preneti stranicu u dodeljenu fizičku stranicu.
Invertovana stranična tablica je dobila takav naziv jer se adresiranje njenih stavki vrši fizičkim
a ne virtuelnim adresama. Broj obraćanja memoriji pri prevođenju adresa korišćenjem invertovane
stranične tablice veliki je za najnepovoljniji slučaj. Opsežna istraživanja pokazala su, međutim, da se
prosečan broj obraćanja kreće između 1 i 2. Daleko manji obim invertovanih u odnosu na linearne
stranične tablice, kao i ovako mali prosečan broj obraćanja memoriji pri prevođenju virtuelnih adresa,
razlozi su što su invertovane stranične tablice korišćene u procesorima PowerPC i HP PA.25
25 http://www.webopedia.com/TERM/v/virtual_memory.html
Seminarski rad
15
SSTTRRAANNIIČČNNII PPRREEKKIIDDII
U pogledu podele programa na stranice i memorije na odgovarajuće okvire strana i formiranje
tabele strana za preslikavanje programske adrese u memorijsku adresu ne postoje nikakve razlike
između statičkih stanica i dinamičkih stranica. Suštinska razlika između ova dva načina upravljanja
memorijom ogleda se međutim u upravljanju unošenjem. Naime, dok se kod statičkih stranica sve
stranice programa unose u memoriju na samom početku (odnosno, preciznije pre nego što počne
izvršavanje) programa, kod dinamičkih stranica unošenje u memoriju vrši se isključivo po zahtevu
(engl. demand paging). To praktično znači da utabeli strana postoje strane koje se u posmatranom
trenutku nalaze u memoriji i za koje postoji adresa okvira u kome se smeštene i strane koje se ne
nalaze u memoriji (već na disku) i za koje pokazivač na okvir u tabeli strana ima „nil“ vrednost. Kada
se u toku izvršavanja programa traži pristup adresi koja pripada strani koja nije u memoriji dolazi do
prekida programa. Ova vrsta prekida naziva se stranični prekid (engl. page fault). Postupak u
izvršenju jedne instrukcije može se prema tome prokazati na sledeći način:
1. Utvrdi da li je adresa kojoj se pristupa u memoriji. Ako jeste nastavi sa izvršavanjem
instrukcije. U suprotnom korak 2.
2. Prekini izvršavanje programa.
3. Nađi slobodan okvir u memoriji. Ako takav okvir ne postoji izbaci jednu od strana,
odnosno oslobodi jedan od okvira koji su dodeljeni programu.
4. Pronađi na disku stranu kojoj se pristupa i upiši je u slobodan (ili oslobođen) okvir.
5. Ažuriraj tabelu strana (upiši adresu okvira u kojoj je smeštena strana).
6. Iniciraj izvršavanje instrukcije koja je izazvala prekid.
Ovde je posebno interesantno da uočimo korak 3. Naime, ukoliko ne postoji ni jedan
slobodan okvir (među kojima je operativni sistem dodelio posmatranom programu) neophodno je da
se jedna od strana koja se trenutno nalazi u memoriji izbaci iz memorije. Izbor takve strane vrši se
pomoću određenog algoritma zamene strana. Imajući u vidu činjenicu da je operacija pronalaženja
strane na disku i njeno unošenje u memoriju vremenski „skupa“ operacija, to loš algoritam zamene
strana može da izazove česte stranične prekide što znatno smanjuje performanse sistema za
upravljanje memorijom.
Kada se neki program prvi put pozove u operativnoj memoriji nema stranica koje pripadaju
tom programu. Stranice se zatim učitavaju u okvire redosledom onako kako su potrebne tom
programu. U nekom trenutku svi okviri su popunjeni. Ako tada program zatraži pristup stranici koja
nije u jednom od okvira, nastaje stranični prekid. Operativni sistem mora da učita traženu stranicu u
operativnu memoriju. Ali, ako su svi okviri popunjeni potrebno je da operativni sistem oslobodi jedan
okvir primenom algoritma za zamenu stranica.26
26 Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.,
str. 174 – 175.
Seminarski rad
16
SSTTRRAATTEEGGIIJJEE II AALLGGOORRIITTMMII PPRRIIBBAAVVLLJJAANNJJAA II
ZZAAMMEENNEE PPOODDAATTAAKKAA UU MMEEMMOORRIIJJII
Podaci se sa diska u glavnu memoriju mogu pribavljati po zahtevu, unapred ili njihovom
kombinacijom. Strategijom pribavljanje po zahtevu virtuelna stranica se sa diska prenosi u memoriju
posle nastanka greške stranice. Ona nastaje u okviru instrukcije a ne po njenom završetku. Procesor
po nastanku ove greške koju zapaža kroz pojavu izuzetka greške stranice, pamti informacije potrebne
za restartovanje instrukcije u kojoj je došlo do greške stranice i poziva rukovaoca izuzetka. Po
opsluženom izuzetku obnavlja informacije o prekinutoj instrukciji i restartuje njeno izvršenje.
Pribavljanje se unapred zasniva na prostornoj lokalnosti: ako se program obratio stranici i vrlo je
verovatno da će se uskoro obratiti susednim stranicama ...i-2, i-1, i+1, i+2,... itd. Pribavljanje ovih
stranica unapred može isključiti greške stranica pri skorom obraćanju njima. U tome mogu od velike
koristi keš memorije diskova.27
Pri pojavi greške stranice u toj stranici se mora dodeliti fizička stranica. Izbor fizičke stranice
vrši algoritam zamene stranica. Sistem vodi evidenciju o nedodeljenim stranicama, na primer u obliku
liste F iz pretprošlog poglavlja. Kada ova lista nije prazna, onda se za dodelu uzima fizička stranica sa
početka liste. Ako se pri tome takva lista formira za svaki proces odvojeno, aloritam zamene je lokalni.
Ako je lista zajednička za sve procese, algoritam zamene je globalni. Lokalni algoritam zamene
pogodan he kada se svakom procesu dodeljuje fiksni broj stranica, koji ne mora biti isti za sve
procese. Globalni algoritam zamene dopušta da se na novoj stranici podataka dodeli bilo koja fizička
stranica. Time on pruža veću slobodu u izboru fizičkih stranica za dodelu, pa će na njemu biti
bazirana sledeća izlaganja.28
Kada su sve stranice već dodeljene, mora se izabrati neka od njih da se u njoj već prisutna
stranica podataka zameni novom, u kojoj se javlja greška stranice. Za izbor se mogu koristiti sledeći
algoritmi zamene stranica:
RAND (Random) – slučajni izbor,
FIFO (First in First Out) – izbor bloka koji je prvi napunjen,
OPT (Optimal) – optimizacija na osnovu pretpostavki o nekorišćenju i
LRU (Least Recently Used) – izbor na osnovu vremena korišćenja.
RAND i FIFO ne zasnivaju se na informacijama o korišćenju blokova podataka u virtuelnoj
memoriji (engl. non usage based). Na prvi pogled, izgleda čudno da to važi za FIFO algoritam, što
postaje jasno ako se zna da je redosled blokova podataka, kandidata za zamenu, određen samo
redosledom njihovog prenošenja u virtuelnu memoriju posle odgovarajućih promašaja, a da kasniji
pogoci ne menjaju ovaj redosled. LRU se zasniva na informacijama o korišćenju blokova (engl. usage
based). Zahvaljujući ovome, strategija zamene LRU daje bolje rezultate od FIFO i RAND strategije.
27 Elekrtonika interfejsa u disk drajvu sadrži bafer memoriju, veličine 2MB, 8MB ili 16MB i jedna od njenih uloga je uloga
keš memorije diska. Aplikacije obično pristupaju podacima sekvencijalno, pa je korisno da diskovi na optimalan način
podrže takav način pristupa podacima. U te svrhe disk kontroleru je dodata funkcija upravljanja pribavljanjem unapred
sekvencijalnih podataka. Naime, posle svake naložene operacije čitanja, disk kontroler će autonomno nastaviti da čita
sekvencijalne podatke i da ih smešta u bafer. Ako je sledeći blok potrebnih podataka sekvencijalan u odnosu na pretodnim
nalogom pročitani blok, disk može da opsluži zahtev direktno iz bafera, što je mnogo brže jer nema kašnjenja. U baferu
diska se privremeno čuvaju i podaci aktuelni pri izvršenju nekog programa, a za koje nema dovoljno prostora u glavnoj
memoriji računara. 28 http://rti7020.etf.bg.ac.yu/rti/ri3aor/index.html
Seminarski rad
17
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.,
str. 175.
Seminarski rad
19
ZZAAŠŠTTIITTAA VVIIRRTTUUEELLNNEE MMEEMMOORRIIJJEE OODD
NNEEOOVVLLAAŠŠĆĆEENNOOGG PPRRIISSTTUUPPAA
Pri istovremenom izvršavanju više procesa u sistemu postoji opasnost od neovlašćenog
pristupa jednog procesa podacima drugog procesa. Ovo se mora sprečiti odgovarajućim rešenjima.
Postoji i potreba da omogući deoba nekih programa i/ili podataka u svrhu sinhronizacije procesa i
razmene podataka između njih. Pri tome pristupi deljenim programima ili podacima mogu biti
ograničeni na određene aktivnosti. Na primer, programima se može pristupati samo radi čitanja, ili se
podaci mogu samo čitati i dodavati, ali ne i menjati. Takva zaštita se u virtuelnoj memoriji lako izvodi
na sledeći način. Neka Proces_i i Proces_j imaju kako privatne, tako i deljive stranice podataka. Pri
dodeli memorije ovim procesima, deljivim stranicama podataka dodeljuju se iste fizičke stranice.
Na slici 11. prikazan je primer dva procesa. Proces_i ima privatnu stranicu vs1 i deljivu
stranicu vs2. Proces_j ima privatnu stranicu vs0 i deljivu stranicu vs1.35
Deljive stranice su deljive baš između ova dva procesa. Privatnim stranicama oba procesa
dodeljuju se različite fizičke stranice, dok se deljivim stranicama dodeljuje ista fizička stranica. Pri
dodeli memorije ovim stranicama upisuju se i odgovarajuće vrednosti indikatora R i W u
odgovarajućim stavkama stranične tablice odnosno TLB-a. Pri svakom prevođenju virtuelne adrese
pokušaj pristupa jednog procesa privatnim stranicama drugog procesa izaziva izuzetak povrede
pristupa procesa svojim deljenim stranicama. Do istog izuzetka dovodi i pokušaj nedozvoljenog tipa
pristupa procesa svojim deljenim stranicama.
35 Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004., str. 291–292.
Virtuelni adresni prostori
Glavna memorija
Pro
ces i VS 0
VS 1 FS 0
VS 2 FS 1
VS (V-1)
FS h
Pro
ces j VS 0
VS 1 FS (R-1)
VS 1
VS (V-1)
Slika 11. Dodela fizičkih stranica privatnim i deljivim virtuelnim stranicama
Seminarski rad
20
KKEEŠŠ MMEEMMOORRIIJJEE UU VVIIRRTTUUEELLNNOOMM
AADDRREESSNNOOMM PPRROOSSTTOORRUU
U sistemima sa virtuelnom memorijom procesor generiše virtuelne adrese koje za obraćanje
memoriji moraju biti prevedene u fizičke adrese. Kako je keš i memorija element fizičke memorije,
postavlja se pitanje da li se ona mora adresirati fizičkim adresama. Ovo zato što svako prevođenje
virtuelne adrese zahteva vreme, koje u tom slučaju odlaže i pristup kešu, što dovodi do zastoja u radu
procesora. Na slici 12. prikazani su procesor, MMU, keš i glavna memorija u dve konfiguracije koje se
razlikuju po tome da li se keš adresira fizičkim adresama ili virtuelnim adresama.36
Procesor
VA MMU
Fizički keš
Glavna memorija
FA
Procesor
Virtuelni keš
MMU
FA Glavna memorija
VA
Slika 12. Adresiranje keša fizičkim adresama (gore) i virtuelnim adresama (dole)
Keš adresiran fizičkim adresama (fizički keš) dolazi u tom lancu iza MMU-a. Veliki nedostatak
ovog rešenja je da se obraćanje kešu može započeti po okončanju prevođenja virtuelne adrese. U
ovom rešenju nema nikakvih ograničenja, a povoljno je i sa stanovišta eventualne direktne
komunikacije keša i U/I sistema računara.
Kod procesora sa virtuelnom memorijom adrese koje se generišu su virtuelne pa postoji
potreba za njihovim prevođenjem u fizičke adrese svaki put kada se pristupa fizičkoj memoriji. Ukoliko
u procesoru postoji i keš memorija postupak prevođenja virtuelnih u realne adrese i pristup keš
memoriji je moguće realizovati na dva načina: najpre se pristupa keš memoriji, pa se tek kod pristupa
operativnoj memoriji vrši prevođenje virtuelnih u realne adrese, ili najpre se vrši prevođenje virtuelnih
u realne adrese, pa se tek posle toga pristupa keš memoriji. U prvom slučaju u keš memoriji se
nalaze virtuelne adrese, pa se ovakva realizacija keš memorije naziva i virtuelna keš memorija. U
drugom slučaju u keš memoriji se nalaze realne adrese, pa se ovakva realizacija keš memorije naziva
i realna keš memorija. Posmatrano sa aspekta performansi keš memorije virtuelni keš je bolji nego
realni keš. Tada u slučaju pogotka koji se daleko češće javlja nego promašaj, ne bi bilo prevođenja
virtuelne u realnu adresu. U suprotnom slučaju vreme pristupa pogotku (engl. hit acces time) bi
trebalo stalno uvećavati za vreme prevođenja virtuelne u realnu adresu. Virtuelni keš, međutim, unosi
određene probleme za koje su potrebna odgovarajuća rešenja.
Prvi problem je posledica činjenice da različiti korisnici imaju iste virtuelne adrese koje se
preslikavaju na različite fizičke adrese. Na primer, svaki korisnik u slučaju stranične organizacije
virtuelne memorije ima stranice broj nula, jedan, itd. koje se, međutim, preslikavaju u različite blokove.
Isto to važi i za segmente sa brojevima nula, jedan itd. koji se, međutim, preslikavaju u različite delove
memorije. Stoga bi po prebacivanju procesora sa korisnika na korisnika novi korisnik mogao da utvrdi
da se potreban blok, recimo stranica nula, nalazi u kešu i da mu pogrešno pristupi, kako je to blok sa
istim brojem stranice nula koji je u kešu ostao od prethodnog korisnika. Tu postoje dva rešenja. Prvo
je da se svi ulazi keš memorije proglase za nevažeće pri prebacivanju procesora sa korisnika na
36 Ibidem, str. 292.
Seminarski rad
21
korisnika. Drugo je da se tag proširi sa PID brojem. U prvom slučaju se kvari procenat promašaja
(engl. miss rate) a u drugom povećava dužina taga.
Drugi problem sa virtuelnim kešom se sastoji u tome da različiti korisnici mogu da koriste
različite virtuelne adrese za istu fizičku adresu. To se dešava u slučaju stranične organizacije virtuelne
memorije u slučaju deljivih segmenata. Ove dvostruke adrese, nazvane sinonimi ili aliasi, mogu da
dovedu do toga da se u virtuelnom kešu pojave dve kopije istog podatka. U slučaju realnog keša ovo
ne može da se desi, zato što bi različite virtuelne adrese uvek bile prevedene na istu fizičku adresu.
Ovaj problem se može rešiti kombinacijom hardvera i softvera, korišćenjem tehnike bojenja stranica
(engl. page colouring). Kod bojenja stranica softverski se obezbeđuje da aliasi imaju određen broj
bitova virtuelnih adresa identične. Ako je taj broj l i ako je kapacitet keš memorije 2l bajta ili manji i
koristi direktno preslikavanje, tada će blokovi stranica aliasa zauzimati isti ulaz u virtuelnom kešu.
Stoga se ne može desiti da se u virtuelnom kešu nađu dve kopije fizičkog podatka. Ovde je u kešu
jedan blok za različite virtuelne adrese, ali se nepotrebno prebacuje iz keš u operativnu memoriju i
nazad, pri promeni virtuelne adrese aliasa.
Adresiranje keša može se započeti virtuelnom adresom, a dovršiti prevedenom fizičkom
adresom (virtuelni keš). U tom slučaju se pomeraj u virtuelnoj adresi, koji se neizmenjen prenosi u
fizičku adresu, koristi za adresiranje skupa keš blokova i čitanje njihovih etiketa. Kao što je već
spomenuto, ove etikete se određuju na osnovu viših delova memorijskih adresa. Po prevođenju
virtuelne u fizičku adresu adresu, ona se može uporediti sa pročitanim etiketama blokova u
adresiranom skupu keš blokova. Ako se prevođenje adresa obavi sa pogotkom TLB-a, nema zastoja
u pristupu kešu i u radu procesora. Ovde postoji sledeće ograničenje. Ako je l dužina polja pomeraja u
virtuelnoj adresi a r i b su dužine polja indeksa i adrese reči u bloku kod keš memorije, onda za
ovakvo adresiranje mora biti ispunjen uslov
l ≥ r + b. Iz ovoga sledi
2l ≥ 2r + b. 2l = L je veličina stranice podataka, a 2r + b = 2r + 2b = S x B. Onda je L ≥ S x B.
Ako obe strane nejednakosti pomnožimo sa A, dobićemo
L x A ≥ A x S x B = C
(A, S, B su asocijativnost, broj skupova keš blokova i dužina blokova keš memorije respektivno. C je
kapacitet keša u bajtovima). Sledi ograničenje
C ≤ L x A.
Za L = 4KB potrebna je velika asocijativnost da se dobije virtuelni keš dovoljnog kapaciteta. Za C =
32KB, A = 8.37
Postoje i druga, složenija rešenja za virtuelni keš koja ne podležu ovom ograničenju.
Prednost virtuelnog keša je pristup bez čekanja na okončanje prevođenja virtuelne adrese.
Nedostatak je nemogućnost direktne komunikacije keša i U/I sistema. Kod ulaza/izlaza se obično radi
sa fizičkim adresama, pa bi za interakciju sa virtuelnim kešom bilo potrebno njihovo preslikavanje u
virtuelne adrese.
37 Ibidem, str. 293.
Seminarski rad
22
RREEFFEERREENNCCEE
Katedra za Računarsku tehniku i informatiku, Elektrotehnički fakultet, Univerzitet u Beogradu, 2005., http://rti7020.etf.bg.ac.yu/
Webopedia 2005., www.webopedia.com
Nebojša Milenković, Arhitektura i organizacija računara, Elektronski fakultet, Niš, 2004.
Dejan Simić, Pavle Bataveljić, Organizacija računara i operativni sistemi, Fakultet organizacionih nauka, Beograd, 2004.
v1