Top Banner
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
21

Virtuelna memorija

Jan 28, 2016

Download

Documents

Marko Simic

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
Page 1: Virtuelna memorija

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

Page 2: Virtuelna memorija

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

Page 3: Virtuelna memorija

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.

Page 4: Virtuelna memorija

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.

Page 5: Virtuelna memorija

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

Page 6: Virtuelna memorija

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.

Page 7: Virtuelna memorija

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.

Page 8: Virtuelna memorija

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.

Page 9: Virtuelna memorija

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

Page 10: Virtuelna memorija

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

Page 11: Virtuelna memorija

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.

Page 12: Virtuelna memorija

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.

Page 13: Virtuelna memorija

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

Page 14: Virtuelna memorija

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.

Page 15: Virtuelna memorija

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

Page 16: Virtuelna memorija

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.

Page 17: Virtuelna memorija

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.

Page 18: Virtuelna memorija

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

Page 19: Virtuelna memorija

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.

Page 20: Virtuelna memorija

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.

Page 21: Virtuelna memorija

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