Upload
-
View
220
Download
0
Embed Size (px)
Citation preview
7/25/2019 09 Operativni Sistemi - Nedelja IX
1/60
Operativni sistemi
Deveto poglavlje: Virtuelna memorija
7/25/2019 09 Operativni Sistemi - Nedelja IX
2/60
Operativni sistemi
Poglavlje 9: Virtuelna memorija
Background Stranienje na zahtev
Copy-on-Write
Zamena strana
Alokacija frejmova Thrashing
Memorijski mapirani fajlovi
Alokacija memorije kernelu
Druga razmatranja
Primeri operativnih sistema
7/25/2019 09 Operativni Sistemi - Nedelja IX
3/60
Operativni sistemi
Ciljevi
Opisati pogodnosti koje prua sistem virtuelne memorije
Objasniti koncepte stranienja na zahtev, algoritama zamene strana i alokacijefrejmova
Prodiskutovati o principu working-set modela
7/25/2019 09 Operativni Sistemi - Nedelja IX
4/60
Operativni sistemi
Background
Virtuelna memorija odvajanje korisnike logike memorije od fizike memorije. Samo deo programa treba da bude u memoriji za izvravanje
Logiki adresni prostor moe zato biti daleko vei od fizikog adresnog prostora Dozvoljava da vie procesa dele adresni prostor Dozvoljava efikasnije kreiranje procesa
Virtuelna memorija se moe primeniti kao: Stranienje na zahtev Segmentacija na zahtev
7/25/2019 09 Operativni Sistemi - Nedelja IX
5/60
Operativni sistemi
Virtuelna memorija je vea od fizike memorije
7/25/2019 09 Operativni Sistemi - Nedelja IX
6/60
Operativni sistemi
Deljena biblioteka kada se koristi virtuelna memorija
7/25/2019 09 Operativni Sistemi - Nedelja IX
7/60
Operativni sistemi
Stranienje na zahtev
Donosi stranu u memoriju samo kada je to neophodno Potrebno je manje I/O
manje memorije je potrebno
Bri odziv
Vie korisnika
Kada je potrebna strana referencira se invalid referenca abort
nije-u-memoriji donesi u memoriju
Lenji swapper nikada se ne zamenjuje-prebacuje strana u memoriju dok ta stranane bude potrebna
Swapper koji radi sa stranama naziva se pager
7/25/2019 09 Operativni Sistemi - Nedelja IX
8/60
Operativni sistemi
Transfer straniene memorije susednom prostoru na disku
7/25/2019 09 Operativni Sistemi - Nedelja IX
9/60
Operativni sistemi
Valid-Invalid bit Svakom upisu-entry u tabelu strana validinvalid bit se pridruuje
(v u-memoriji, i nije-u-memoriji) Inicijalno se validinvalid bit postavlja na i za sve upise-entries
Primer jednog stanja tabele strana:
Za vreme translacija adresa, ako je validinvalid bit za ulaz-entry u tabelu stranai pogrena strana (page fault)
v
v
v
v
i
ii
.
Frame # valid-invalid bit
page table
7/25/2019 09 Operativni Sistemi - Nedelja IX
10/60
Operativni sistemi
Tabela strana kada neke strane nisu u memoriji
7/25/2019 09 Operativni Sistemi - Nedelja IX
11/60
Operativni sistemi
Pogrena strana (page fault)
Ako postoji referenca-upuivanje na stranu, prvo referenciranje na tu stranu dae kao
rezultat trap operativnom sistemu:page fault
1. Operativni sistem trai u drugoj tabeli da odlui: Invalid referenca abort
Samo nije u memoriji
2. Trap
3. Dobija se prazan frejm
4. Ubaci se stranica u frejm
5. Resetuju tabele
-Postavlja bit ispravnosti = v
6. Restartuje se instrukcija koja je prouzrokovala page fault
7/25/2019 09 Operativni Sistemi - Nedelja IX
12/60
Operativni sistemi
Koraci u rukovanju Page Fault-om
7/25/2019 09 Operativni Sistemi - Nedelja IX
13/60
Operativni sistemi
Performanse stranienja na zahtev Opseg pojave Page Fault-a 0 p 1.0
ako jep = 0 nema page faults
ako jep = 1, svaka referenca je fault
Efektivno vreme pristupa Efective Access Time (EAT)
EAT = (1 p) x memory access
+p (page fault overhead
+ swap page out+ swap page in
+ restart overhead
)
7/25/2019 09 Operativni Sistemi - Nedelja IX
14/60
Operativni sistemi
Primer stranienja na zahtev
Vreme pristupa memoriji = 200 nanosekundi
Srednja vrednost vremena servisiranja page-fault-a = 8 milisekundi
EAT = (1 p) x 200 + p (8 milisekundi)
= (1 p x 200 + p x 8,000,000
= 200 + p x 7,999,800
Ako jedan pristup od 1,000 prouzrokuje page fault, onda je
EAT = 8.2 mikrosekundi.
Ovo je usporenje za faktor 40!!
7/25/2019 09 Operativni Sistemi - Nedelja IX
15/60
Operativni sistemi
Kreiranje procesa
Virtuelna memorija dozvoljava druge pogodnosti za vreme kreiranja procesa:
- Copy-on-Write
- Memorijsko-mapiranje fajlova
7/25/2019 09 Operativni Sistemi - Nedelja IX
16/60
Operativni sistemi
Copy-on-Write
Copy-on-Write (COW) dozvoljava i parent procesu i child procesu da
inicijalno dele iste strane u memoriji
Strana se kopira samo ako jedan od procesa modifikuje deljenu stranu.
COW dozvoljava efikasnije kreiranje procesa poto se samo modifikovanestrane kopiraju
Slobodne strane se alociraju iz pool-a strana koje se nisu koristile (zeroed-outpages)
7/25/2019 09 Operativni Sistemi - Nedelja IX
17/60
Operativni sistemi
Pre nego to proces 1 modifikuje stranu C
7/25/2019 09 Operativni Sistemi - Nedelja IX
18/60
7/25/2019 09 Operativni Sistemi - Nedelja IX
19/60
Operativni sistemi
ta se deava ako ne postoji slobodan okvir?
Zamena strane nai neku stranu u memoriji, koja se ne koristi esto i
prebaciti je - zameniti (swap out) algoritam performanse algoritam koji e kao rezultat da da minimalan broj pogrenih
strana - page faults
Iste strane mogu biti doneene u memoriju vie puta
7/25/2019 09 Operativni Sistemi - Nedelja IX
20/60
Operativni sistemi
Zamena strane
Spreiti prekomernu alokaciju memorije modifikuju
i page-fault servisnu rutinutako da ukljui zamenu strane
Koristi se modify (dirty) bit za smanjenje overhead-a transfera strane samomodifikovane strane se upisuju na disk
Zamena strane completes odvajanje izmeu logike i fizike memorije veavirtuelna memorija moe da se obezbedi na manjoj fizikoj memoriji
7/25/2019 09 Operativni Sistemi - Nedelja IX
21/60
Operativni sistemi
Potreba za zamenom strane
7/25/2019 09 Operativni Sistemi - Nedelja IX
22/60
Operativni sistemi
Osnovi zamene strana
1. Nai lokaciju eljene strane na disku
2. Pronai slobodan frejm:- Ako postoji slobodan frejm, iskoristiti ga- Ako ne postoji slobodan frejm, iskoristiti algoritam zamene strane
za selekciju okvira rtve
1. Doneti eljenu stranu u (novi) slobodni okvir; aurirati tabele strana ifrejmova
2. Restartovati proces
7/25/2019 09 Operativni Sistemi - Nedelja IX
23/60
Operativni sistemi
Zamena strane
7/25/2019 09 Operativni Sistemi - Nedelja IX
24/60
Operativni sistemi
Algoritmi zamene strane elimo manju brzinu pojave pogrene stranice (page-fault stranica koja nije u memoriji)
Algoritam dodele frejmova odreuje Koliko frejmova se dodeljuje svakom procesu
Koje frejmove zameniti
Algoritam zamene strane eli se najmanja brzina pojave page-fault-a i za prvi pristup i za ponovni pristup
Evaluirati algoritam startujui ga na posebnom string-u memorijskih referenci (stringreferenciranja) i izraunati broj page faults za taj string
String sadri brojeve strana, ne pune adrese Ponavljanje pristupa istoj strani ne prouzrokuje page fault
U sledeim primerima string referenci je
7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
7/25/2019 09 Operativni Sistemi - Nedelja IX
25/60
Operativni sistemi
Graf pogrenih strana (page faults) u odnosu na broj frejmova
7/25/2019 09 Operativni Sistemi - Nedelja IX
26/60
Operativni sistemi
First-In-First-Out (FIFO) algoritam
Reference string: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
3 frejma (3 strane mogu biti u memoriji u isto vreme po jednom procesu)
Ako se promeni reference string: na primer 1,2,3,4,1,2,5,1,2,3,4,5 Poveanje broja frejmova (vea memorija) moe da izazove vie page fault-a!
Belady-jeva anomalija
Kako voditi rauna o starosti strana? Koristiti FIFO red
7
0
1
1
2
3
2
3
0
4 0 7
2 1 0
3 2 1
15 page fault-a
7/25/2019 09 Operativni Sistemi - Nedelja IX
27/60
Operativni sistemi
FIFO zamena strana
7/25/2019 09 Operativni Sistemi - Nedelja IX
28/60
Operativni sistemi
FIFO ilustracija Belady-jeve anomalije
7/25/2019 09 Operativni Sistemi - Nedelja IX
29/60
Operativni sistemi
Optimalna zamena strana
Zameni stranicu koja se najvie vremena "nee koristiti"
Primer na donjoj slici sa optimalnim brojem page faulta-a 9
Kako znate ta e se desiti u budunosti?
Koristi se za merenje-odreivanje koliko je dobar va algoritam
7/25/2019 09 Operativni Sistemi - Nedelja IX
30/60
Operativni sistemi
Least Recently Used (LRU) algoritam Koriste se podaci neposredno pre posmatranja
Zamenjuje se strana koja se nije koristila u tom periodu
Pridruuje se vreme korienja svakoj stranici
12 faults better than FIFO but worse than OPT
Primena brojaa Svaki ulaz-upis strane ima broja; svaki put kada se strana referencira kroz ovaj ulaz-upis-entry, kopira se
vreme u broja
Kada strana treba da se promeni, pogledaju se brojai da bi se odredilo koja treba da se promeni
7/25/2019 09 Operativni Sistemi - Nedelja IX
31/60
Operativni sistemi
Use Of A Stack to Record The
Most Recent Page References
7/25/2019 09 Operativni Sistemi - Nedelja IX
32/60
Operativni sistemi
LRU aproksimacioni algoritmi
Reference bit
Svakoj strani se pridruuje bit, inicijalizovan na 0 Kada se strana referencira bit se postavlja na 1
Zamenjuju se oni koji su 0 (ako postoje) Ne znamo redosled, meutim
Druga ansa
Potreban je reference bit Zamena clock-a
Ako strana koja treba da se zameni (po redosledu clock-a) ima reference bit = 1 onda: postavi reference bit 0
ostavi stranu u memoriji
zameni sledeu stranu (po redosledu clock-a), prema istom pravilu
7/25/2019 09 Operativni Sistemi - Nedelja IX
33/60
Operativni sistemi
Second-Chance (clock) algoritam zamene strane
7/25/2019 09 Operativni Sistemi - Nedelja IX
34/60
Operativni sistemi
Counting algoritmi
Odrava se broja-counter broja referenci koje su nainjene za svaku stranu
LFU Algoritam: zamenjuje stranu sa najmanjim brojem-count
MFU Algoritam: baziran na argumentu da je strana sa najmanjim brojem-count verovatno upravo doneta i jo nije koriena
7/25/2019 09 Operativni Sistemi - Nedelja IX
35/60
Operativni sistemi
Alokacija frejmova
Svaki proces treba minimalni broj strana
Dve glavne eme alokacije fiksna alokacija alokacija prema prioritetu
7/25/2019 09 Operativni Sistemi - Nedelja IX
36/60
Operativni sistemi
Fiksna alokacija
Jednaka alokacija Na primer, ako postoji 100 frejmova i 5 procesa, daje sesvakom procesu 20 frejmova.
Proporcionalna alokacija Alokacija prema veliini procesa
7/25/2019 09 Operativni Sistemi - Nedelja IX
37/60
Operativni sistemi
Alokacija koriste
i prioritete
Koristi proporcionalnu alokacionu emu radije koristei prioritete negoveliinu
Ako proces Pi generie page fault, selektuje se za zamenu jedan od njegovih frajmova
selektuje se za zamenu frejm od procesa sa najmanjim prioritetnim brojem
7/25/2019 09 Operativni Sistemi - Nedelja IX
38/60
7/25/2019 09 Operativni Sistemi - Nedelja IX
39/60
Operativni sistemi
Thrashing
Ako proces nema dovoljno stranica, verovatnoa pojave page-fault-a je
veoma velika. Ovo dovodi do: malog iskorienja CPU-a
operativni sistem misli da on treba da povea stepen " multiprogramming-a"
drugi proces se dodaje sistemu
Thrashing proces je zauzet prebacivanjem-swapping-om strana u i van
7/25/2019 09 Operativni Sistemi - Nedelja IX
40/60
Operativni sistemi
Thrashing (nastavak)
7/25/2019 09 Operativni Sistemi - Nedelja IX
41/60
Operativni sistemi
Strani
enje na zahtev i thrashing
Zato se stranienje na zahtev radi?
Model lokaliteta Proces migrira sa jednog lokaliteta na drugi
Lokaliteti se mogu preklapati
Zato se thrashing pojavljuje?
veli
ina lokaliteta > ukupna veli
ina memorije
7/25/2019 09 Operativni Sistemi - Nedelja IX
42/60
Operativni sistemi
Slika lokacija-mesta referenciranja memorije
7/25/2019 09 Operativni Sistemi - Nedelja IX
43/60
Operativni sistemi
Model radnog skupa (working-set)
prozor radnog skupa
fiksni broj referenciranja straneprimer: 10,000 instrukcija
WSSi (radni skup procesa Pi) =ukupan broj strana referenciranih u najskorije vreme (menja se u vremenu)
ako je isuvie malo, ne uzimaju se u obzir svi lokaliteti
ako je isuvie veliko, preklapa se nekoliko lokaliteta ako je = zaokruie se itav program
D = WSSi ukupan broj zahtevanih frejmova
Ako jeD > m Thrashing, sledi, suspenduje se jedan od procesa
7/25/2019 09 Operativni Sistemi - Nedelja IX
44/60
Operativni sistemi
Working-set model
7/25/2019 09 Operativni Sistemi - Nedelja IX
45/60
Operativni sistemi
ema uestanosti pojave pogrene strane
Uspostavlja se prihvatljiva brzina pojave page-fault-a If actual rate too low, process loses frame
If actual rate too high, process gains frame
7/25/2019 09 Operativni Sistemi - Nedelja IX
46/60
7/25/2019 09 Operativni Sistemi - Nedelja IX
47/60
Operativni sistemi
Memorijski mapirana deljena memorijakod Windows operativnog sistema
7/25/2019 09 Operativni Sistemi - Nedelja IX
48/60
Operativni sistemi
Alokacija kernel memorije
Tretira se drugaije u odnosu na korisniku memoriju
esto alocirana iz praznog-slobodnog memorijskog skladita (pool-a) Kernel zahteva memoriju za strukture razliitih veliina
Neka memorija kernela treba da bude susedna-contiguous
7/25/2019 09 Operativni Sistemi - Nedelja IX
49/60
Operativni sistemi
Buddy sistem
Alocira memoriju iz segmenata fiksne veliine koji su sastavljeni od fizikisusednih strana
Alocirana memorija koristi power-of-2 allocator Zadovoljava zahteve u jedinicama ija je veliina umnoak od 2
Zahtev zaokruen na sledeu veu vrednost koja je umnoak 2
Kada je potrebna manja alokacija od iskoristljive, tekui chunk se cepa na dvabuddies sledee nie vrednosti koja je umnoak 2
Nastavlja se dok se ne dobije chunk odgovarajue veliine
7/25/2019 09 Operativni Sistemi - Nedelja IX
50/60
Operativni sistemi
Buddy System alokator
7/25/2019 09 Operativni Sistemi - Nedelja IX
51/60
Operativni sistemi
Slab alokator
Alternativna strategija Slabje jedna strana ili vie fiziki susednih strana
Cache se sastoji od jednog ili vie slab-ova Single cache za svaku jedinstvenu strukturu podataka kernel-a
Svaki cache popunjen objektima koji su primerci strukture podataka
Kada se ke kreira, popunjen je objektima oznaenim kao free Kada se strukture uskladite, objekti su oznaeni kao used Ako je slab pun korienih objekata, sledei objekat se alocira iz praznog slab-a
Ako nema praznih slab-ova, alocira se novi slab
Beneficije ukljuuju to da ne postoji fragmentacija i da su brzo zadovoljenimemorijski zahtevi
7/25/2019 09 Operativni Sistemi - Nedelja IX
52/60
Operativni sistemi
Slab alokacija
7/25/2019 09 Operativni Sistemi - Nedelja IX
53/60
Operativni sistemi
Drugi problemi-teme Prepaging
Prepaging
Da bi se smanjio veliki broj page faults koje se pojavljuju u startup-u procesa Prepage svih ili samo strana koje e procesu trebati, pre nego to se referenciraju
Ali ako se prepaged strane ne koriste, I/O i memorija se "troe"
7/25/2019 09 Operativni Sistemi - Nedelja IX
54/60
Operativni sistemi
Drugi problemi-teme Veliina strane
Selekcija veliine mora da uzme u obzir: fragmentaciju
veliinu tabele
I/O overhead
lokalitet
7/25/2019 09 Operativni Sistemi - Nedelja IX
55/60
Operativni sistemi
Drugi problemi TLB
TLB Reach - Koliina memorije kojoj se moe pristupiti TLB-a
TLB Reach = (TLB veliina) X (Veliina strane)
Idealno, working set svakog procesa je uskladiten u TLB Inae postoji veliki stepen pojave page faults
Poveanje veliine strane Ovo moe da dovede do poveanja fragmentacije poto sve aplikacije ne zahtevaju
veu veliinu strane Obezbediti vie veliina strana
Ovo dozvoljava aplakacijama da zahtevaju vee veliine strana i mogunostnjihovog korienja bez poveanja fragmentacije
7/25/2019 09 Operativni Sistemi - Nedelja IX
56/60
Operativni sistemi
Drugi problemi-teme Struktura programa
Struktura programa Int[128,128] data;
Svaki red je memorisan na jednoj strani Program 1
for (j = 0; j
7/25/2019 09 Operativni Sistemi - Nedelja IX
57/60
7/25/2019 09 Operativni Sistemi - Nedelja IX
58/60
Operativni sistemi
Primeri operativnih sistema
Windows XP
Solaris
7/25/2019 09 Operativni Sistemi - Nedelja IX
59/60
Operativni sistemi
Windows XP
Koristi stranienje na zahtev sa clustering-om. Clustering donosi strane kojeokruuju faulting page.
Procesima se pridruuje working set minimum i working set maximum Working set minimum je minimalan broj stranica koje procesu garantuju da ih
ima u memoriji
Procesu moe biti pridrueno maksimalno onoliko strana koliki je working setmaximum
Kada koliina slobodne memorije u sistemu padne ispod granice, automaticworking set trimming se izvrava da bi restaurirao koliinu slobodnememorije
Working set trimming uklanja strane iz procesa koji imaju vie strana od svog
working set minimum-a
7/25/2019 09 Operativni Sistemi - Nedelja IX
60/60
Operativni sistemi
Solaris
Odrava listu slobodnih strana za pridruenje faulting procesa
Lotsfree granini parametar (koliina slobodne memorije) da bi poelo
stranienje Desfree granini parametar da bi se povealo stranienje
Minfree granini parametar da bi se izveo swapping
Paging se izvrava sapageoutprocesom
Pageout skenira strane koristei modifikovani clock algorithm Scanrateje brzina kojom se strane skeniraju. Opseg brzine je od slowscan do
fastscan
Pageout se poziva ee zavisno od koliine slobodne memorije koja je naraspolaganju