34
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 u spremnik čiji je adresni prostor velik 2 m bajtova uz m adresnih bitova. U današnjim sustavima je uobičajeno da adresiranje počinje s 0 i završava s adresom 2 m -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 x poluriječ 16 b . . . x x x o riječ 32 b . . . x x o o dvostruka 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

OS-05 Prostor spremnika

Embed Size (px)

Citation preview

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