os-05 prostor spremnika
TRANSCRIPT
1
1
8. KORIŠTENJE I RASPOREĐIVANJE PROSTORA SPREMNIKA
8.1. UVODNA RAZMATRANJA
U dosadašnjem opisu pojava u računalnom sustavu pretpostavljalo se da su programi u strojnom obliku smješteni uspremnik čiji je adresni prostor velik
2m bajtovauz m adresnih bitova.
U današnjim sustavima je uobičajeno da adresiranje počinjes 0 i završava s adresom 2m-1.
Ako su podaci smješteni u uzastopne bajtove adrese moraju biti (ili je prikladno da budu) “poravnate”.
2
podatak duljina adresa završava s bitovima(operand)
bajt 8 b . . . x x x xpoluriječ 16 b . . . x x x oriječ 32 b . . . x x o odvostruka riječ 64 b . . . x o o očetverostruka riječ 128 b . . . o o o o
Adrese se unutar procesora generiraju u• programskom brojilu• registru kazaljke sloga• adresnim registrima na temelju sadržaja adresnog
dijela instrukcija
2
3
U najjednostavnijem načinu upotrebe spremnika - jednoprogramskomradu - uvijek je samo jedan program u glavnom spremniku.
OPERACIJSKISUSTAV
PROGRAMA
0
POČETNA ADRESAKORISNIČKOG SUSTAVA
PROGRAMB
PROGRAMC
2m-1
4
Svi programi moraju biti pripremljeni tako da im je• početna adresa jednaka je početnoj adresi korisničkog
Programi B i C moraju se pripremiti za izvođenje i smjestiti upomoćni (vanjski) spremnik.
Kada program A završi u spremnikse može staviti program B ili program C.
U načelu bi se ti programi mogli smatrati zadacima jednog sustava zadataka.Višeprocesni (ili višeprogramski) rad mogao bi seostvariti tako da se pri prebacivanju procesora s procesa na proces u “promjenu konteksta” uključi pražnjenje i punjenje glavnog spremnika.
Sličan pristup tzv. preklopnog korištenja spremnika (engl. overlay technique), omogućuje izvođenje programa većih od slobodnog korisnika tog prostora.
prostora• veličina manja ili najviše jednaka veličini slobodnog
korisničkog prostora
3
5
OPERACIJSKISUSTAV
STALNI DIO
STALNIDIO
PREKLOPNIDIO 1
PREKLOPNI DIO 2
PREKLOPNIDIO 3
Pokazuje se da se već i u najjednostavnijem načinu raspore-đivanja spremničkog prostora mora računati s pomoćnim vanjskim spremnikom.
Kao pomoćni spremnici danas služe magnetski diskovi.Pretežiti dio diskovnog spremničkog prostora koristi se za
smještanje datoteka, no jednako je tako važan i kao pomoćni prostorpri gospodarenju glavnim (radnim) spremnikom.
6
Stoga će prije daljnjih računa raspoređivanja prostora spremnika obraditi svojstva diskova.
8.2. Svojstva magnetskih diskova i njihovo korištenje
Jedinka magnetskog diska (engl. magnetic disk drive) sastoji se od:- jedne ili više okruglih ploča presvučenih magnetskim
materijalom koje rotiraju konstantnom kutnom brzinom iglava za čitanje i zapisivanje koje se pokreću radijalno;
- upravljačkog sklopa sastavljenog od mikroprocesora,spremnika i sučelja prema računalnoj sabirnici.
4
7
ploča
cilindar (cylinder)staza (track)sektor
ω
sektor
reper
Glava za čitanje ipisanje
Ruka
8
• glave za čitanje i pisanje mogu se precizno pozicionirati najednu od koncentričnih staza.
• staze su podijeljene na sektore jednake veličine
• iako se sve glave pomiču istovremeno na svim diskovima upravilu se čita samo sektor na jednoj ploči (ili se piše samojedan sektor).
Neka svojstva današnjih diskova• Ploče promjera od 1.3 do 8 inča.
Tipični promjeri: 2.5 , 3.5 , 5.25 inča• Gustoća staza 1500 do 5000 staza/inč• Gustoća bitova na stazi
40 000 do 60 000 bitova/inč• Broj ploča u diskovnoj jedinki
od 1 do 20
5
9
• Broj bajtova po sektorutipično: 256, 512 ili 1024
(vidljivo sa strane računala, inače se znatan broj bitovajednog sektora koristi za korekciju grešaka )
• Mnogi diskovi imaju staze grupirane u zone (3 do 20 zona). Zone s većim promjerom staza imaju više sektora kako bi se iskoristilamoguća gustoća bitova.
• Svaki sektor ima svoju jedinstvenu adresu, koja se izračunava iz:• rednog broja ploče;• rednog broja staze na ploči;• rednog broja sektora na stazi.
10
Dinamička svojstvaPrijenos podataka obavlja se po sektorima. Vrijeme potrebno
za obavljanje prijenosa dijeli se na:• vrijeme za postavljanje glava
(engl. head-positioning time)• vrijeme za prijenos podataka
(engl. data transfer rate)Vrijeme za postavljanje glava ima dvije komponente:
• vrijeme postavljanja (glave na stazu)(engl. seek time)
• rotacijsko kašnjenje(engl. rotational lateney)
6
11
Rotacijsko kašnjenje određeno je brzinom okretanja ploča.Uobičajena brzina n=3 600 okretaja/minBrzi dijelovi do 7 200 okretaja/min
za 3 600 okretaja/min
TR=1/60 sekundi = 16.6 ms
Prosječno rotacijsko kašnjenje je
TR= 1/2 TR = 8.3 ms
12
Upravljački sklopovi podliježu standardima, npr.• SCSI ( Small Computer Standard Interforce )• IPI - 3 ( Intelligent Peripheral Interface - 3 )
Jedinično se prenose blokovi.Veličina bloka je jednaka veličini sektora ili je višekratnikveličine sektora. U jednom zahtjevu može se prenijetiviše blokova.
Upravljački sklop:• prihvaća zahtijev za prijenos• obavlja prevođenje logičke adrese sektora u fizičku adresu
(broj ploče, broj staze, broj sektora);• određuje redoslijed obavljanja zahtjeva.
Pripremni poslovi u upravljačkom sklopu također trajuneko vrijeme.
Tipično : 0.3 do 1.0 ms
7
13
Procesor postavlja zahtjev. Obrada zahtjeva DMA Obavijest o
ispunjenju zahtjeva
Prijenos u glavni spremnik može početi nakon što je s diska prenesena stanovita količina
Upravljač
Upravljač
Disk
Disk
t
t
t
t
Postavljanje glave
Rotacijsko kašnjenje Prijenos s diska
Procesor postavlja zahtjev. Obrada zahtjeva
DMA
Obavijest o ispunjenju zahtjeva
Postavljanje glave Roracijsko kašnjenje Prijenos na disk
14
Podaci za neke komercijalne diskoveTip Seagate ST434001N HPC2200A HP47560
Elik-3 SCSI
Promjer 5.25 inč 5.25 inč 5.25 inčKapacitet 2.8 GB 335 MB 1.3 GBBroj cilindara 2627 1449 1962Staza po cilindru 21 8 19Sektora po stazi ~99 113 72Bajta po sektoru 512 256 512Trajanje okreta 11.1 ms 14.99 ms 14.99 ms
5400 o/min 40020 o/min 40020 o/minMinimalno 1.7 ms 2.5 ms 1.6 mspostavljanje( 1 staza)Prosječno 11.0 ms x xpostavljanje
8
15
“Dugo”postavljanje 10.8+0.012d ms 8.00+0.008d mspreko d staza“Kratkopostavljanje 3.45+0.597 d ms 3.24+0.4 d msispod d staza
d 616 383Postavljanje preko cijelog 22.5 ms xx xx diskaBrzina 4.6 MB/s 1.2 MB/s 10 MB/sprijenosa
x može se izračunati za d=1/3 1449 odnosno 1/3 1962xx može se izračunati za d=1449 odnosno 1962
16
Vrijeme (trajanje) postavljanja sastoji se od:- trajanja ubrzavanja ruke,- kretanja konstantnom brzinom(za velike razmake staza),
- trajanja usporavanja ruke,- trajanja finog pozicioniranja.
Trajanje postavljanja ovisi o razmacima između staza kojeglava (ruka) treba savladati :
- kod “kratkih pomaka” nema kretanja konstantnombrzinom, već se prvo polovinu vremena ruka ubrzava,a drugu polovinu usporava- kod prelaženja preko svih staza (od najvećeg do naj-manjeg promjera) može se koristiti režim “brzog”prijelaza.
Prosječno vrijeme postavljanja koje se navodi u podacimaodnosi se na prijelaz preko trećine staza (ali nije jednoznačno defini-rano).
9
17
Model diska za ilustrativne primjereBroj ploča (površina) P = 10Broj cilindara (staza na ploči) C = 2000Broj sektora na stazi S = 100Veličina sektora V = 512 BBrzina vrtnje n = 4 800 o/min
= 80 o/sTrajanje 1 okretaja TR= 12.5 msTrajanje postavljanja glavapreko d staza
TS= 1.5 d ms d 4TS=4.0+0.5 d 4 d 400TS=10.0+0.01d d 400
Kapacitet C S P V = 1024 106 BBrzina prijenosa VP= 4.096 106 B/s
VP= (V S)/TR = V S n
≤
≤ ≤
≥
⋅
• •• •
•
• ••
18
Primjer:Koliko je trajanje prijenosa programa veličine 1 MB = 1024 KB
s diska u radni spremnik?Zanemariti sva vremena zadržavanja upravljačkog sklopa. Koristiti podatke za model diska.
Razmotriti dva slučaja:a) program je smješten na disku kompaktnob) program se prenosi u blokovima veličine 1 KB smještenim u
dva uzastopna sektora, s tim da ti parovi mogu biti raspršeni po cijelom disku.a) Za 1024 KB potrebna su 2048 sektora
Kompaktni smještaj : 3 uzastopna cilindra2 cilindra puna 2 000 sektorau 3. cilindru 1 staza (48 sektora)
10
19
Trajanje:• postavljanje na 1. cilindar 10.0+c/3 0.01 16.66 ms• rotacijsko kašnjenje 1/2TR=1/2 12.5 6.25 ms• prijenos 10 staza 10TR= 125 125.00 ms• premještanje na susjedni cilindar 1.50 ms• prijenos 10 staza 10TR=125 125.00 ms• premještanje na susjedni cilindar 1.50 ms• rotacijsko kašnjenje 1/2TR=1/2 12.5 6.25 ms• priojenos 48 sektora 48/100TR=0.48 12.5 6.00 ms
Ta= 294.41 ms
•
•
•
•
b) Za svaki par sektora treba 1024 puta uzeti u obzir• postavljanje na cilindar 10.0+c/3 0.001 =16.66 ms• rotacijsko kašnjenje 1/2TR=6.25 ms• trajanje prijenosa 2 sektora 2/100TR=0.25 ms
Tb= 1024 (16.66 + 6.25 + 0.25) = 23 715.84 ms = 23.72 s
20
Vrijeme (trajanje) prijenosa podataka ovisi o brzini prijenosa(engl. data transfer rate)
Brzina prijenosa određena je brzinom okretanja i gustoćom bitova na stazi. Tipične brzine : 1 do 5 MB/sUpravljački sklop jedinke diska
DMA
Buff.
Glavni spremnik
Blok
ProcesorLokalni spremnik
Pristup
Mikroprocesor
11
21
Upravljački sklop može zahtjeve za prijenos s cilindara posluživati na razne načine.
Recimo da su redom prispjeli zahtjevi za pristup do cilindara :1700, 200, 1900, 700, 800, 100, 1500, 1100
Glava za čitanje/pisanje nalazi se početno na cilindru 900
22
0 100 200 700 800 900 1100 1500 1700 1900FCFS: Glave su prešle preko 7800staza
Početni položaj glave
SSTF: Glave su prešlepreko3200 staza
12
23
FCFS first come first servedSSTF shortest seek time firstSCAN scan (LOOK)C-SCAN circular scan (C-LOOK)
ODREĐIVANJE VREMENA POSTAVLJANJA I ROTACIJSKOGKAŠNJENJA
FCFS d1 = 800d2 = 1500d3 = 1700d4 = 1200d5 = 100d6 = 700d7 = 1400d8 = 400
TK=206 ms
24
STSF d1= 100d2= 100d3= 400d4= 400d5= 200d6= 200d7=1700d8= 100
Tk= . . . = 154 ms
13
25
8.3. Statičko dodjeljivanje spremnika
• Povijesno značenje• Adrese koje se generiraju u programu su fizičke adrese glavnog(radnog) spremnika
• Programi moraju biti pripremljeni tako da započinju na početnojadresi korisničkog adresnog prostora.
• Pri pripremi programa stvara se tzv. premjestivi modul(relokatibilni) kod kojeg je početna adresa jednaka nuli,a sve ostale adrese referiraju se na tu početnu adresu.• Pretpostavimo da je strojni oblik zapisan u polje (riječi)
R[1..k]i da su neke od njih adrese. U takovom pojednostavljenommodelu može se poljem bitova odrediti u kojoj riječi trebapromijeniti adresu C[1..k].C[i]=0 ne treba mijenjatiC[i]=1 treba promijeniti
26
Neka je PA početna adresa apsolutnog modula, koji sezapisuje u
A[1..k]Priprema apsolutnog modula je
za i = 1 do k činitiako je C[i] = 1
onda A[i] := R[i] + PAinače A[i] := R[i]
Premještanje programa na drugu početnu adresu zahtijevanovo preračunavanje.
U načelu program pripremljen u apsolutnom obliku nema smisla modificirati za novu PA, te se dodjeljivanje može nazvatistatičnim.
U višeprogramskom radu prikladno je da više programa(programskih zadataka, procesa) bude smješteno u radni spremnik.
U ranijim sustavima se cijeli spremnik dijelio na particije.
14
27
• Svaki od programa pripreman je za jednu od particija.• Particije su u načeli bile različitih veličina.
REDOVI PROGRAMA ZA POJEDINEPARTICIJE
O.S.
1 MB
1 MB
512 KB256 KB256 KB
PA1
PA2
PA3
PA4
PA5
28
Dio spremnika ostaje neiskorištenDva razloga neiskorištenosti:
• programi su u načelu manji od veličine particije(to je tzv. unutarnja neiskorištenost)• događa se da u nekim razdobljima nema programa(ili su blokirani) za pojedine particije, tako da cijelaparticija ostaje neiskorištena
(premještanje programa iz particije u particijuje skupo!
15
29
8.4 Dinamičko dodjeljivanje spremnika s jednim segmetom
Priprema apsolutnog modula zahtijeva pribrajanje početne adresena neke adresne sadržaje premjestivig modula.Taj se posao može obavitisklopovski i to tijekom izvođenja programa u trenutku kada se adresira radni spremnik* Program stalno ostaje u premjestivom obliku tj. S početnom adresom
jednakom nuli - to tzv. Logički adresni prostor programa.* Kada se program smjesti u spremnik, on je smješten u fizički adresni
prostor.* Unutar procesora generiraju se adrese logičkog adresnog prostora, akada se pristupa u spremnik one se prevode u fizičke adrese pribrajanjem početne adrese fizičkog adresnog prostora,
30
Spremnik
+
PA
Procesor
Bazni registar
Al Af
Spremnički međusklop
U višeprocesnom radu treba osigurati da procesi jedan drugom ne dirajuadresni prostor.
Nikako se ne može pouzdati u disciplinu (“bezgrešnost”) proizvođača programa.
16
31
Spremnik
+
PA
Procesor
Bazni registar
Al Af
OGRADA Af>Ogr
Af<PADa
Da
Prekid
Prekid
32
O.S
P1
P2
P3
P4
PA1
Ograda1PA2
Ograda2PA2
Ograda3PA3
Ograda3
U opisnik procesa treba uvrstiti PAi i OGRADAiPrilikom promjene konteksta treba u BAZNI registari REGISTAR OGRADE napuniti sadržaje Pai i OGRADAi onog procesa koji seaktivira
VELIČINA 1
VELIČINA 2
VELIČINA 3
VELIČINA 4
OGRADAi=PAi+VELIČINAi
17
33
Kako voditi evidenciju o raspodjeli prostora spremnika ?Tokom rada neki procesi završavaju a drugi traže spremnikStoga mogu nastati nepopunjeni dijelovi ili “rupe”
Puni blok
Rupa
Puni blokRupaPuni blok
Rupa
S vremenom rupe mogu postati male takoda se ne može pronaći program koji bi jemogao pšopuniti. To je tzv. fragmentacija sprenmika
Faktor fragmentacije
Veličina korisničkog prostora
Zbroj veličina rupaf=
Eviencija stanja spremnika može se voditi u dvije liste:* Lista punih blokjova* Lista praznih blokova - rupa
34
PUNI_B
PA
VELIČINA
PA PA
PA PA PA
VELIČINA
VELIČINA VELIČINA
VELIČINA VELIČINA
PRAZNI_B
Za smanjenje fragmentacije bilo bi korisno spajati susjedne rupe u većecjeline.Za olakšanje spajanja može se alternativno voditi evidencija osusjednosti blokova
18
35
Npr. Uz svaki puni i prazni blok se na njegovu početku i kraju žrtvujeodređeni broj bajtova
0 Veličina
0 Veličina
1 Veličina
1 Veličina
Veličina
Puni blok Rupa s dodatnim kazaljkama
36
1 Veličina C 1 Veličina A’
1 Veličina A’1 Veličina A
1 Veličina A1 Veličina B
1 Veličina B1 Veličina C
Rupa
Rupa
Puni blok
Veličina A
Veličina B
Veličina C
OSLOBAĐA-NJE B Veličina A’
Veličina A’=VeličinaA+VeličinaB+VeličinaC
Spremnik je podijeljen na dva skupa blokovaH={Hi | i=1,..n} skup rupa veličine hiF= {Fi | i=1,..m} skup punih blokova veličine fi
19
37
Kada dođe novi zahtjev za dodjelu prostora veličine k, može se u načelupostupiti na dva načina:
* dodjela prve odgovarajuće rupe, tj dodjeli se prva Hi za koju jehi>= k (first fit)* dodjeljuje se Hi za koju je ispunjenohi>=khi-k minimalno
Pri tome se može postupiti na dva načina:Ako je hi-k <ε
onda dodjeljuje se cijela rupainače ostaje rupa veličine hi-k
Čitavo vrijeme prati se fragmentacija. Ako fragmentacija postaneznačajna, onda se može zastati s radom i obaviti preslikavanje programa:
* Programi se moraju fizički preseliti* U opisnike treba zapisati nove početne adrese
38
Kako ocijeniti fenomen fragmentacije?Knuthovo 50%-tno praviloPretpostavke:* Razmatra se stohostičko ravnotežno stanje: Vjerojatnost oslobađanja
jednaka je vjerojatnosti zahtjeva.* Prosječna vrijednost broja punih blokova je m
Prosječna vrijednost broja rupa ne n* Vjerojatnost q da će se pronaći rupa jednaka je veličini zahtjeva je
vrlo mala. Suprotna vjerojatnost p=1-q je bliska jedinici.* Koristi se najbolje slaganje dodjele* Veličina spremnika je vrlo velika tako da se rubni uvjeti mogu
zanemariti.* Pri oslobađanju punog bloka novonastala rupa spaja se sa susjednim
rupama.
20
39
Postoje četiri tipa punih blokovaB A C B A C B A C B A C
B A C B C’ B’ C B’
Oslobađanjem A dobiva se
m=a+b+c+d Broj punih blokovan=(2d+b+c)/2S obzirom da je b=c, n=(2d+2b)/2=b+d Broj rupa
Tip i broj a b c cblokova tipa:
40
Vjerojatnost da broj rupa poraste za 1:(1) Vjerojatnost oslobađanja * a/m
Vjerojatnost da broj rupa opadne za 1(2) vjerojatnost oslobađanja *d/m+ vjerojatnost zahtjeva*q
Iz uvjeta ravnoteže (1)=(2) vjerojatnost zahtjeva = vjerojatnostoslobađanja:
a/m=d/m+q ili a/m=d/m+(1-p) tj a=d+(1-p)m pa je
m=a+b+c+d=d+(1-p)m+2b+d = (1-p)m+2b+2dpm=2(b+d)=2n a kako je p->1 n=m/2
U stacionarnom stanju uz m punih blokova ima m/2 rupa u spremniku.
21
41
Ocjena fragmentacije:Pretpostavke: b prosječna veličina punog bloka
h prosječna veličina rupeh=k*b (naći koeficijent k)M Veličina memorije
Slijedi:h=(M-mb)/n=(M-mb)/(m/2) M=mb(k/2+1)f=(n*k*b)/M=m/2*k*b/(m*b*(k/2+1))f=k/(k+2)
Simulacijom se može dobiti primjerice za :b=M/10 f=>0.1 h=>0.22b
za
b=M/3 f=>0.5 h=>2b
42
8.5 Dodjeljivanje spremnika straničenjem,ostvarenje virtualnog spremnika
8.5.1 Osnovne napomene.Za ostvarenje virtuelnog spremnika bitna je zamisao da se
program može podijeliti u dijelove, koji ne moraju biti istovremenou radnom spremniku .
Začetak takvog korištenja spremnika je njegovo preklopno(Overlay) korištenje:
-jedan osnovni dio programa . Stalni dio (root) mora se cijelo vrijeme nalaziti u spremniku
- drugi dijelovi mogu se naizmjence premještati s vanjskogspremnika u radni i obrnuto.Programer mora voditi računa o svin detaljima ostvarenja takvognačina rada
-podijeliti program na odgovarajuće dijelove-u stalni dio programa ugraditi mehanizme za donošenje odlukeo prebacivanju preklopnih dijelova (overlaya)-voditi evidenciju o načinu korištenja pojedinih dijelova
22
43
Posao se usložnjava u višeprocesorskom radu i ne može se izbjećifragmentacija spremnika.
8.5.2 Sklopovska podloga straničenja
Program djeluje u svom tzv. logičkom adresnom prostoru.Procesor pri izvođenju programa djeluje u logičkom adresnom prostoruizračunava logičke adrese (tzv. efektivne adrese)Svaka lokacija u spremniku označena je svojom fizičkom adresom igovori se o fizičkom adresnom prostoru
012
2r-1
}2p
Logički adresni prostor dijeli se na stranice(page) veličine 2p.
m -> broj bitova efektivne adrese.p -> broj bitova za adresiranje unutar stranicer=m-p -> broj bitova za kodiranje rednog broja
stranice
44
U 32 bitnoj arhitekturi uz stranice veličine 4KB (p=log2(4096))m=32, p=12, r=m-p=20
Veličina efektivne memorije 2m=220* 212=4GBBroj stranica 2r=220=1M stranicaU 64 bitnoj arhitekturi uz stranice veličine 4KB (p=log2(4096))
m=64, p=12, r=m-p=52
Veličina efektivne memorije 2m=232* 232 = 16* 109GBBroj stranica 2r=252=4*106GB
012
2r-1
}2p
Stvarni (fizički) spremnik podijeljen je naokvire jednake veličini stranice tj 2p
23
45
Procesor Tablica
2r*q
Prekid kod promašajam=r+p p
q
q+p
r
Spremnik
46
Broj
stranice 0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
Logički adresni prostor
Broj okvira
0
1 E
2
3 H
4 A
Fizički adresni prostor
Pomoćni spremnik(disk)
0 4 1
1 0
2 0
3 0
4 1 1
5 0
6 0
7 3 1
Bit prisutnosti
Tablica prevođenja
24
47
r p Logička adresa
RAM
2r*q
q pFizička adresa
Pri adresiranju fizičkog spremnika bi trebalo:- pristupiti do spremnika i dohvati lokaciju u tablici prevođenja (tablicu
stranice)- oblikovati fizičku adresu i pristupiti do adresirane lokacije u fizičkom
spremniku
48
Stoga se uz procesor (memorijski međusklop postaje dio procesora)dograđuje priručni međuspremnik za prevođenje adresa u kojem sezapisuju adrese adrese okvira (engl. Translation lookaside buffer TLB)(to je obično asocijativni međuspremnik).U međuspremniku se osim adrese (rednog broja) okvira zapisuje bitprisutnosti a i neki drugi bitovi koji pomažu pri adresiranju.
25
49
Primjer: Intel 486 p=12 r=q=20 m=32Tablica prevođenja je dvorazinska:
* bitovi 22 - 31 određuju indeks u tablici tablica (directory)* bitovi 12 - 21 određuju indeks u tablici stranica (table)
31 22 21 12 18 0
CR3 registar
Tablicatablica
(page dir.)
Tablice stranica
10 10
20
12
r p
50
Tablica stranica je također stranica veličine 4096 bajta te sadrži adrese1K okvira.Tablica tablica je također stranica veličine 4K i može adresirati 1Ktablica stranica.
To znači da:*Jedna tablica tablica može adresirati 1K*1K=1M stranica tjčitav linearni adresni prostor od 4GB.
* Tablice zauzimaju 4MB + 4KB prostora za 4GB veliki program.
Operacijski sustav se može odabrati da se* jedna tablica tablica koristi za sve zadatke ili* jedna tablica tablica koristi za svaki zadatak posebno ili* postupa proizvoljno
Pri izvođenju nekog programa tablica tablica mora biti u radnom spremnikuPojedine tablice stranica moraju se dobaviti u radni spremnik kada sekoriste.
26
51
Stranice koje se dohvaćaju imaju adrese svojih okvira u TBLmeđuspremniku. Taj međuspremnik se automatski puni iz tablicestranica i u njemu se zadržavaju do istisnuća novim adresama.
Sadržaj tablice satranica:*Za stranicu koja je u okviru
31 12 11 6 5 0
1Redni broj okvira = =bazna adresa okvira
Bit pisanja
Bit pristupa
Bit prisutnosti
Za stranicu koja nije prisutna u glavnom spremniku
0 bit prisutnosti31 0
52
Očigledno je da straničenje usporava odvijanje programa.Procjena usporenja:Pretpostavimo da je: ts - vrijeme pristupa do radnog spremnika
td - vrijeme dobavljanja stranice iz pomoćnog spremnika
p - vjerojatnost promašajaEfektivno vrijeme pristupa je te=(1-p)*ts+p*td
Primjer: Neka je ts=100ns=0,1 us td=10ms= 10000 uste=0,1+9999,9*p us
uz p=10-3 (jedan promašaj na tisuću dohvata) te=10.099usuz p=10-4 (jedan promašaj na deset tisuća dohvata) te=1.099usuz p=10-5 (jedan promašaj na sto tisuća dohvata) te=0.199usuz p=10-6 (jedan promašaj na miliondohvata) te=0.1099us
27
53
8.5.3 Straničenje na zahtjev(engl. demand paging)Stranice se dobavljaju u radni spremnik kada je to potrebno
Stranica uokviru
InstrukcijaTLB
0
2 prekid zbogpromašaja
dohvatstranice
Prebacivanjestranice u prazniokvir
nadopunatablica
pokretanje procesaponavljanja instrukcije
tablicastranica
operacijskisustav
3
1
4
5
6
Adresiranje
Prazni okvir
Adresiranastranica
54
Prilikom promašaja događa se slijedeće:Prekid zbog promašaja
Spremiti kontekst procesaBlokirati procesZatražiti punjenje tražene stranice
Prebacivanje završenoNadopuniti tabliveDeblokirati procesProglasiti proces pripravnim
Pri ponovnom pokretanju procesa ponoviti istrukciju koja je izazvalaprekid.U kontekstu treba sačuvati programsko brojilo vraćeno na adrese instrukcijekao i obnovljene sadržaje registara koji su se do pojave prekida već promijenili.
28
55
8.5.4. Strategija zamjene stranica
Ako pri zahtjevu za punjenje stranica nema praznog okvira trebaodabrati stranicu koja će biti izbačena iz radnog spremnika. Kako?Mjera vrednovanja strategije može biti broj promašaja tijekom izvođenja programaFIFO strategija:
Izbaciti stranicu koja je najdulje u radnom spremniku. FIFOstrategiju je teško ostvariti a osim toga pati od Beladyjeve anomalije.S povećanjem broja raspoloživih okvira može porasti broj promašajaNeka se redom pristupa do stranica:
1 2 3 4 1 2 5 1 2 3 4 5
56
Broj okvira Broj promašaja1 1 2 3 4 1 2 5 1 2 3 4 5 12
2 1 1 3 3 1 1 5 5 2 2 4 4- 2 2 4 4 2 2 1 1 3 3 5 12
3 1 1 1 4 4 4 5 - - 5 5 -- 2 2 2 1 1 1 - - 3 3 - 9- - 3 3 3 2 2 - - 2 4 -
4 1 1 1 1 - - 1 - - - - -1 2 2 2 - - 2 - - - - -- - 3 3 - - 3 3 2 2 2 2 10 - - - 4 - - 4 4 4 3 3 3
5 1 1 1 1- - 1 - - - - -- 2 2 2 - - 2 - - - - -- - 3 3 - - 3 - - - - - 5- - - 4 - - 4 - - - - -- - - - - - 5 - - - - -
29
57
Optimalna strategija (OPT)Izbaciti strranicu koja se najdalje u budućnosti ne će upotrebljavati.Nije prikladna za praktičnu upotrebu. Služi samo za usporedbu!Primjer: 3 okvira; koriste se redom sreanice5 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 5 0 1
5 5 5 2 - 2 - 2 - - 2 - - 2 - - - 5 - -- 0 0 0 0 4 0 0 0 9 promašaja- - 1 1 3 3 3 1 1
Za usporedbu: FIFO:
5 5 5 2 2 2 4 4 4 0 0 0 5 5 5 - 0 0 0 3 3 3 2 2 2 1 1 1 0 0 15 promašaja- - 1 1 1 0 0 0 3 3 2 2 2 2 1
58
LRU strategija (Last recently used)Izbaciti onu stranicu koja u prošlosti nije najdulje upotrebljavana.(Zamisao: Možda stranica više nije ni potrebna!)
Primjer:5 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 5 0 1
5 5 5 2 2 4 4 4 0 1 1 1- 0 0 0 0 0 0 3 3 3 0 0 12 promašaja- - 1 1 3 3 2 2 2 2 2 5
Ostvarenje LRU strategije također nije jednostavnoJedna od mogućih aproksimacija:
Tablica stranjca Bitovi pristupa Posmačni registri povijesti
30
59
Uz tablicu stranica postoji: * bit pristupa *posmačni registri povijesti
* Početno su svi bitovi pristupa i posmačni registri jednaki nuli.* Svaki puta kada se pristupa stranici postavlja se njezin bit pristupa* Prekid od sataperiodički (npr. Svakih 100 ms) pomiče bit pristupa u
posmačne registre i briše ga.* Sadržaji posmačnih registara tretiraju se kao binarni brojevi i izbacujese stranica (ili jedna od stranica) s najmanjim brojem.To rješenje degenerira tako da nema registatara povijesti.Stranice se dijele u dvije grupe
* stranice u koje se u zadnjoj periodi vremena pristupalo* stranice u koje se nije pristupalo
Korisno je ako se stranica koja se izbacuje nije promijenila. Nju ne treba prenositi u pomoćni spremnik, jer tamo postoji važeća kopija. Time seštedi jedan pristup na disk.Za ostvarenje te zamisli uz bit pristupa uvodi se i bit pisanja (vidi I486).
60
Kada se u stranicu piše, bit pisanja se postavlja.Redoslijed odabira stranica za izbacivanje
Redoslijed bit bit Stranicapristupa pisanja
1 0 0 nije * nije pisanaupotrebljavana (čista)
2 0 1 nije * pisanaupotrebljavana (“nečista”)
3 1 0 upotrebljavana “čista”
4 1 1 upotrebljavana “nečista”
* nakon zadnjeg brisanja od sata
31
61
8.5.5. Dodjela stranica u višezadaćnom sustavu.
Pretpostavimo da korisnički prostor ima m okvira. U jednozadaćnom sustavu svi okviri dodjeljuju se jednom procesu.U višezadaćnom radu moguća su dva pristupa:
Globalna podjela:Svi procesi dobivaju stranice iz zajedničkog prostora
Lokalna podjela -raspoloživi okviri dijele se unaprijed na procese.
Globalna podjela je nezgodna jer se tešk može izbjeći (i nadzirati)međudjelovanje procesa.Pri lokalnoj podjeli može se:
* podijeliti na n procesa jednoliko sve okvire tjo=int(m/n) okvira po procesu* podijeliti okvire srazmjerno veličini programa
Pi - broj stranica procesa i P=Σpi Oi=int(Pi/P*m)
62
Eventualna dinamička preraspodjela okvira obavlja se kao posljedicapromatranja ponašanja procesa
Brojproma-šaja
Broj okvira
Dodati jedan okvir Suviše promašaja
Oduzeti jedan okvir “Premalo” promašaja
Područje “normalnog”promašaja
Ako svi procesi suviše promašuju, treba smanjiti stupanj višezadaćnostite raspodjeliti okvire procesima koji ostaju.
32
63
8.5.6. Model radnog skupa stranica
Ako zbog nekog razloga neki proces treba zaustaviti I oduzeti mu okvire koje koristi, kod ponovnog pokretanja tog procesa stranice ćese puniti promašivanjem
Bilo bi razumno zapamtiti koje stranice su bile u radnom spremnikui napuniti ih sve u jednom zahvatu.Ne vraćaju se sve stranice već samo one koje su u jednom razdobljutzv. Vremenskom prozoru, koristile. To je radni skup stranica.
D - vremenski prozorW(tj,D) - radni skup stranica u trenutku tj s prozorom širine D
(engl. Working set)Vrijeme t i širina prozora mjere se u nekom virtualnom mjerilu(diskretiziranom)
64
Primjer: Neka se u uzastopnim vremenskim intervalima pristupa uslijedeće stranice:
2 6 1 5 7 7 7 7 5 1 6 2 3 4 2 3 4 4 4 3 1 4 3
t1 t2D=2 D=2
W(t1,2)={1,5} W(t2,2)={3,4}
D=4
W(t1,4)={1,5,7} W(t2,4)={3,4}
W(t1,10)={1,2,5,6,7} W(t2,10)={2,3,4,6,}
D=10 D=10
D=4
33
65
Veličina radnog skupa mijenja se tijekom odvijanja programaUz dovoljno širok prozor, sve stranice Pi nekog procesa mogu senalaziti u radnom skupu
1<=|w(t,D)|<=PiPraćenjem rada nekog programa može se ustanoviti da u tipičnomslučaju postoje vremenska razdoblja kada je radni skup slabo promjenjiv, te razdoblja (tranzijetna) kada je veličina skupa jako promjenjiva.
|W(t,D)|
tStabilno
66
8.5.7. Utjecaj straničenja na odvijanje programa
U načelu korisnik računala ne mora ništa znati o načinu dodjele prostora u spremnikuMeđutim nekada se mogu uočiti znatne promjene u trajanju programapri neznatnim zahvatima u njegovu strukturu.Uobičajeni primjer je odsječak programa za inicijalizaciju matrice.Primjer:Pretpostavimo da treba inicijalizirati matricu A[1..512,1..512]s nulama.
Za i:=1 do 512 činitiza j:=1 do 512 činiti
A[i,j]:=0;
Neka jedna stranica bude veličine 512 riječi. Ako se matrica smješta po recima, tada je u jednoj stranici smješten jedan stupac|A[i,1] | |A[i,2] |A[i,3] |A[i,4] …. |A[i,512] | jedna stranica
34
67
Ako na raspolaganju imamo samo jedan okvir, izvođenjeinicijalizacije će izazvati 512 promašaja.
Mala modifikacija programa
Za j:=1 do 512 činitiza i:=1 do 512 činiti
A[i,j]:=0;izaziva 512 * 512 = 261 144 promašaja.Ako se za svaku zamjenu stranica utroši 20 ms, programi traju:a) 512 * 20 = 10240 ms = 10,24 sb) 261114* 20 = 5222880 ms = 5222.88 s=1 sat 27 min 2.88 s