Вы находитесь на странице: 1из 34

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
2m bajtova
uz m adresnih bitova.
U današnjim sustavima je uobičajeno da adresiranje počinje
s 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”.

podatak duljina adresa završava s bitovima


(operand)

bajt 8b ... xxxx


poluriječ 16 b ... xxxo
riječ 32 b ... xxoo
dvostruka riječ 64 b ... xooo
četverostruka riječ 128 b ... oooo

Adrese se unutar procesora generiraju u


• programskom brojilu
• registru kazaljke sloga
• adresnim registrima na temelju sadržaja adresnog
dijela instrukcija

a1
U najjednostavnijem načinu upotrebe spremnika - jednoprogramskom
radu - uvijek je samo jedan program u glavnom spremniku.
0
OPERACIJSKI
SUSTAV

POČETNA
ADRESA
PROGRAM PROGRAM PROGRAM
KORISNIČKOG
A B C
SUSTAVA

2m-1
3

Svi programi moraju biti pripremljeni tako da im je


• početna adresa jednaka je početnoj adresi korisničkog
prostora
• veličina manja ili najviše jednaka veličini slobodnog
korisničkog prostora
Programi B i C moraju se pripremiti za izvođenje i smjestiti u
pomoćni (vanjski) spremnik.

Kada program A završi u spremnik


se 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 se
ostvariti 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.
4

a2
OPERACIJSKI STALNI
SUSTAV DIO

STALNI DIO PREKLOPNI


DIO 1
PREKLOPNI
DIO 2

PREKLOPNI
DIO 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 prostor
pri gospodarenju glavnim (radnim) spremnikom.
5

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 i
glava za čitanje i zapisivanje koje se pokreću radijalno;
- upravljačkog sklopa sastavljenog od mikroprocesora,
spremnika i sučelja prema računalnoj sabirnici.

a3
ω

ploča
cilindar (cylinder)
staza (track)
sektor

Glava
za
sektor čitanje i
pisanje

Ruka

reper 7

• glave za čitanje i pisanje mogu se precizno pozicionirati na


jednu od koncentričnih staza.
• staze su podijeljene na sektore jednake veličine
• iako se sve glave pomiču istovremeno na svim diskovima u
pravilu se čita samo sektor na jednoj ploči (ili se piše samo
jedan 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
8

a4
• Broj bajtova po sektoru
tipično: 256, 512 ili 1024
(vidljivo sa strane računala, inače se znatan broj bitova
jednog 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 iskoristila
moguć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.

Dinamička svojstva
Prijenos 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)

10

a5
Rotacijsko kašnjenje određeno je brzinom okretanja ploča.
Uobičajena brzina n=3 600 okretaja/min
Brzi 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

11

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šekratnik
veličine sektora. U jednom zahtjevu može se prenijeti
viš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 traju
neko vrijeme.
Tipično : 0.3 do 1.0 ms
12

a6
Prijenos u glavni spremnik može početi nakon
Procesor postavlja zahtjev što je s diska prenesena stanovita količina

. Obrada zahtjeva Obavijest o


DMA
ispunjenju zahtjeva

t Upravljač

Disk
t
Rotacijsko kašnjenje Prijenos s diska
Postavljanje glave

Procesor postavlja zahtjev


. Obrada zahtjeva Obavijest o ispunjenju
zahtjeva
DMA

Upravljač
t

Disk
Postavljanje glave Roracijsko kašnjenje Prijenos na disk t
13

Podaci za neke komercijalne diskove


Tip 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 GB
Broj cilindara 2627 1449 1962
Staza po cilindru 21 8 19
Sektora po stazi ~99 113 72
Bajta po sektoru 512 256 512
Trajanje okreta 11.1 ms 14.99 ms 14.99 ms
5400 o/min 40020 o/min 40020 o/min
Minimalno 1.7 ms 2.5 ms 1.6 ms
postavljanje
( 1 staza)
Prosječno 11.0 ms x x
postavljanje
14

a7
“Dugo”
postavljanje 10.8+0.012d ms 8.00+0.008d ms
preko d staza
“Kratko
postavljanje 3.45+0.597 d ms 3.24+0.4 d ms
ispod d staza
d 616 383
Postavljanje
preko cijelog 22.5 ms xx xx
diska
Brzina 4.6 MB/s 1.2 MB/s 10 MB/s
prijenosa

x može se izračunati za d=1/3 1449 odnosno 1/3 1962


xx može se izračunati za d=1449 odnosno 1962

15

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 koje


glava (ruka) treba savladati :
- kod “kratkih pomaka” nema kretanja konstantnom
brzinom, 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 podacima
odnosi se na prijelaz preko trećine staza (ali nije jednoznačno defini-
16
rano).

a8
Model diska za ilustrativne primjere
Broj ploča (površina) P = 10
Broj
⋅ cilindara (staza na ploči) C = 2000
Broj sektora na stazi S = 100
Veličina sektora V = 512 B
Brzina vrtnje n = 4 800 o/min
= 80 o/s
Trajanje 1 okretaja TR= 12.5 ms
Trajanje postavljanja glava
preko d staza
TS= 1.5 d ms d ≤4
TS=4.0+0.5 d 4 ≤ d ≤ 400
TS=10.0+0.01d d ≥ 400
Kapacitet C •S •P •V = 1024 •106 B
Brzina prijenosa VP= 4.096 •106 B/s
VP= (V• S)/TR = V •S •n
17

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 kompaktno
b) 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 cilindra
2 cilindra puna 2 000 sektora
u 3. cilindru 1 staza (48 sektora)

18

a9
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 19

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/s
Upravljački sklop jedinke diska

Glavni spremnik

Blok

DMA Pristup

Buff.
Procesor
Mikroprocesor Lokalni
spremnik

20

a10
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

21

Početni položaj glave


0 100 200 700 800 900 1100 1500 1700 1900
FCFS: Glave
su prešle
preko 7800
staza

SSTF: Glave su
prešlepreko
3200 staza

22

a11
FCFS first come first served
SSTF shortest seek time first
SCAN scan (LOOK)
C-SCAN circular scan (C-LOOK)

ODREĐIVANJE VREMENA POSTAVLJANJA I ROTACIJSKOG


KAŠNJENJA
FCFS d1 = 800
d2 = 1500
d3 = 1700
d4 = 1200
d5 = 100
d6 = 700
d7 = 1400
d8 = 400
TK=206 ms
23

STSF d1= 100 Tk= . . . = 154 ms


d2= 100
d3= 400
d4= 400
d5= 200
d6= 200
d7=1700
d8= 100

24

a12
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četnoj
adresi 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 pojednostavljenom
modelu može se poljem bitova odrediti u kojoj riječi treba
promijeniti adresu C[1..k].
C[i]=0 ne treba mijenjati
C[i]=1 treba promijeniti
25

Neka je PA početna adresa apsolutnog modula, koji se


zapisuje u
A[1..k]
Priprema apsolutnog modula je
za i = 1 do k činiti
ako je C[i] = 1
onda A[i] := R[i] + PA
inače A[i] := R[i]

Premještanje programa na drugu početnu adresu zahtijeva


novo preračunavanje.
U načelu program pripremljen u apsolutnom obliku nema
smisla modificirati za novu PA, te se dodjeljivanje može nazvati
statič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.
26

a13
• Svaki od programa pripreman je za jednu od particija.
• Particije su u načeli bile različitih veličina.
REDOVI PROGRAMA ZA POJEDINE
PARTICIJE
O.S.

PA1

1 MB
PA2

PA3
1 MB

PA4
512 KB
256 KB
PA5
256 KB 27

Dio spremnika ostaje neiskorišten


Dva 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 cijela
particija ostaje neiskorištena
(premještanje programa iz particije u particiju
je skupo!

28

a14
8.4 Dinamičko dodjeljivanje spremnika s jednim segmetom
Priprema apsolutnog modula zahtijeva pribrajanje početne adrese
na neke adresne sadržaje premjestivig modula.Taj se posao može obaviti
sklopovski 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, a
kada se pristupa u spremnik one se prevode u fizičke adrese
pribrajanjem početne adrese fizičkog adresnog prostora,

29

Al Af
+
Procesor

Spremnik
PA
Bazni registar

Spremnički međusklop

U višeprocesnom radu treba osigurati da procesi jedan drugom ne diraju


adresni prostor.

Nikako se ne može pouzdati u disciplinu (“bezgrešnost”) proizvođača


programa.
30

a15
Prekid
Da
OGRADA Af>Ogr

Spremnik

Al
Procesor Af
+

PA Af<PA
Bazni registar Da

Prekid 31

O.S

PA1
P1 VELIČINA 1
Ograda1
OGRADAi=PAi+VELIČINAi
PA2
P2 VELIČINA 2
Ograda2
PA2 P3
VELIČINA 3
Ograda3
PA3 P4
VELIČINA 4
Ograda3

U opisnik procesa treba uvrstiti PAi i OGRADAi


Prilikom promjene konteksta treba u BAZNI registari REGISTAR
OGRADE napuniti sadržaje Pai i OGRADAi onog procesa koji se
aktivira 32

a16
Kako voditi evidenciju o raspodjeli prostora spremnika ?
Tokom rada neki procesi završavaju a drugi traže spremnik
Stoga mogu nastati nepopunjeni dijelovi ili “rupe”

S vremenom rupe mogu postati male tako


da se ne može pronaći program koji bi je
Puni blok mogao pšopuniti. To je tzv. fragmentacija
sprenmika
Rupa
Faktor fragmentacije
Puni blok
Rupa
Puni blok
Zbroj veličina rupa
Rupa f=
Veličina korisničkog prostora
Eviencija stanja spremnika može se voditi u dvije liste:
* Lista punih blokjova
33
* Lista praznih blokova - rupa

PUNI_B

PA PA PA

VELIČINA VELIČINA VELIČINA

PRAZNI_B

PA PA PA

VELIČINA VELIČINA
VELIČINA

Za smanjenje fragmentacije bilo bi korisno spajati susjedne rupe u veće


cjeline.
Za olakšanje spajanja može se alternativno voditi evidencija o
34
susjednosti blokova

a17
Npr. Uz svaki puni i prazni blok se na njegovu početku i kraju žrtvuje
određeni broj bajtova

0 Veličina
1 Veličina

Veličina

0 Veličina
1 Veličina

Rupa s dodatnim kazaljkama


Puni blok

35

1 Veličina A 1 Veličina A’

Veličina A
Rupa

1 Veličina A
1 Veličina B
OSLOBAĐA-
Veličina B NJE B Veličina A’
Puni blok
1 Veličina B
1 Veličina C
Rupa
Veličina C
1 Veličina C 1 Veličina A’
Veličina A’=VeličinaA+VeličinaB+VeličinaC
Spremnik je podijeljen na dva skupa blokova
H={Hi | i=1,..n} skup rupa veličine hi
36
F= {Fi | i=1,..m} skup punih blokova veličine fi

a18
Kada dođe novi zahtjev za dodjelu prostora veličine k, može se u načelu
postupiti na dva načina:
* dodjela prve odgovarajuće rupe, tj dodjeli se prva Hi za koju je
hi>= k (first fit)
* dodjeljuje se Hi za koju je ispunjeno
hi>=k
hi-k minimalno

Pri tome se može postupiti na dva načina:


Ako je hi-k <ε
onda dodjeljuje se cijela rupa
inače ostaje rupa veličine hi-k

Čitavo vrijeme prati se fragmentacija. Ako fragmentacija postane


znač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 37

Kako ocijeniti fenomen fragmentacije?


Knuthovo 50%-tno pravilo
Pretpostavke:
* 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.

38

a19
Postoje četiri tipa punih blokova
B A C B A C B A C B A C

Oslobađanjem A dobiva se

B A C B C’ B’ C B’

Tip i broj a b c c
blokova tipa:

m=a+b+c+d Broj punih blokova


n=(2d+b+c)/2
S obzirom da je b=c, n=(2d+2b)/2=b+d Broj rupa

39

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 = vjerojatnost


oslobađ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+2d
pm=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.

40

a20
Ocjena fragmentacije:
Pretpostavke: b prosječna veličina punog bloka
h prosječna veličina rupe
h=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

41

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 istovremeno
u 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 vanjskog
spremnika u radni i obrnuto.
Programer mora voditi računa o svin detaljima ostvarenja takvog
načina rada
-podijeliti program na odgovarajuće dijelove
-u stalni dio programa ugraditi mehanizme za donošenje odluke
o prebacivanju preklopnih dijelova (overlaya)
42
-voditi evidenciju o načinu korištenja pojedinih dijelova

a21
Posao se usložnjava u višeprocesorskom radu i ne može se izbjeći
fragmentacija 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 prostoru
izračunava logičke adrese (tzv. efektivne adrese)
Svaka lokacija u spremniku označena je svojom fizičkom adresom i
govori se o fizičkom adresnom prostoru
Logički adresni prostor dijeli se na stranice
p.
0 p (page) veličine 2
1 }2 m -> broj bitova efektivne adrese.
2
p -> broj bitova za adresiranje unutar stranice
r=m-p -> broj bitova za kodiranje rednog broja
stranice
2r-1 43

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=4GB


Broj stranica 2r=220=1M stranica
U 64 bitnoj arhitekturi uz stranice veličine 4KB (p=log2(4096))
m=64, p=12, r=m-p=52
m 32 32 9
Veličina efektivne memorije 2 =2 * 2 = 16* 10 GB
Broj stranica 2r=252=4*106GB

0
Stvarni (fizički) spremnik podijeljen je na
p
1 }2 okvire jednake veličini stranice tj 2p
2

2r-1
44

a22
Prekid kod
m=r+p p promašaja q+p

r
Procesor Tablica
2r*q q

Spremnik

45

Broj
stranice 0 Bit prisutnosti
A
0 4 1 Broj
1 B 1 0
okvira
0
2 C 2 0
3 0 1 E
3 D
4 1 1 2
4 E 5 0
3 H
5 F 6 0
7 3 1 4 A
6 G
Tablica prevođenja Fizički adresni prostor
7 H
Logički adresni
prostor
Pomoćni spremnik
(disk)
46

a23
r p Logička adresa

RAM
2r*q

Fizička adresa
q p

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 47

Stoga se uz procesor (memorijski međusklop postaje dio procesora)


dograđuje priručni međuspremnik za prevođenje adresa u kojem se
zapisuju 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 bit
prisutnosti a i neki drugi bitovi koji pomažu pri adresiranju.

48

a24
Primjer: Intel 486 p=12 r=q=20 m=32
Tablica 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
r p

10 10 12

Tablica
tablica 20
(page dir.)
CR3 registar

49
Tablice stranica

Tablica stranica je također stranica veličine 4096 bajta te sadrži adrese


1K okvira.
Tablica tablica je također stranica veličine 4K i može adresirati 1K
tablica 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
spremniku
Pojedine tablice stranica moraju se dobaviti u radni spremnik kada se
50
koriste.

a25
Stranice koje se dohvaćaju imaju adrese svojih okvira u TBL
međuspremniku. Taj međuspremnik se automatski puni iz tablice
stranica i u njemu se zadržavaju do istisnuća novim adresama.

Sadržaj tablice satranica:


*Za stranicu koja je u okviru
31 12 11 65 0
1
Redni broj okvira =
=bazna adresa okvira Bit prisutnosti

Bit pristupa
Bit pisanja
Za stranicu koja nije prisutna u glavnom spremniku
31 0
0 bit prisutnosti
51

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šaja
Efektivno vrijeme pristupa je te=(1-p)*ts+p*td

Primjer: Neka je ts=100ns=0,1 us td=10ms= 10000 us


te=0,1+9999,9*p us
-3
uz p=10 (jedan promašaj na tisuću dohvata) te=10.099us
uz p=10-4 (jedan promašaj na deset tisuća dohvata) te=1.099us
uz p=10-5 (jedan promašaj na sto tisuća dohvata) te=0.199us
uz p=10-6 (jedan promašaj na miliondohvata) te=0.1099us

52

a26
8.5.3 Straničenje na zahtjev
Stranica u (engl. demand paging)
okviru
Stranice se dobavljaju u radni spremnik kada je to potrebno

Instrukcija Adresiranje
1 TLB

Prazni
6 0 okvir
pokretanje procesa
ponavljanja instrukcije

tablica nadopuna
2 prekid zbog
5 promašaja
stranica tablica
4
Prebacivanje
dohvat stranice u prazni
operacijski 3 stranice okvir
sustav Adresirana 53
stranica

Prilikom promašaja događa se slijedeće:


Prekid zbog promašaja
Spremiti kontekst procesa
Blokirati proces
Zatražiti punjenje tražene stranice
Prebacivanje završeno
Nadopuniti tablive
Deblokirati proces
Proglasiti proces pripravnim
Pri ponovnom pokretanju procesa ponoviti istrukciju koja je
izazvala
prekid.
U kontekstu treba sačuvati programsko brojilo vraćeno na adrese
instrukcije
kao i obnovljene sadržaje registara koji su se do pojave prekida
već promijenili.

54

a27
8.5.4. Strategija zamjene stranica

Ako pri zahtjevu za punjenje stranica nema praznog okvira treba


odabrati stranicu koja će biti izbačena iz radnog spremnika. Kako?
Mjera vrednovanja strategije može biti broj promašaja tijekom
izvođenja programa
FIFO strategija:

Izbaciti stranicu koja je najdulje u radnom spremniku. FIFO


strategiju je teško ostvariti a osim toga pati od Beladyjeve anomalije.
S povećanjem broja raspoloživih okvira može porasti broj promašaja
Neka se redom pristupa do stranica:

123412512345

55

Broj okvira Broj promašaja


1 123412512345 12

2 113311552244
-22442211335 12

3 1114445--55-
-222111--33- 9
--33322--24-

4 1111--1-----
1222--2-----
--33--332222 10
---4--444333

5 1 1 1 1- - 1 - - - - -
-222--2 -----
--33--3----- 5
---4--4-----
------5----- 56

a28
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 sreanice
50120304230321201501

5552 -2- 2-- 2-- 2 - --5--


- 000 0 4 0 0 0 9 promašaja
- - 11 3 3 3 1 1

Za usporedbu: FIFO:

5552 22444 0 00 555


-000 333222 11 100 15 promašaja
-- 11 100033 22 221

57

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:
50120304230321201501

5552 2 4440 1 1 1
- 000 0 0033 3 0 0 12 promašaja
- - 11 3 3222 2 2 5

Ostvarenje LRU strategije također nije jednostavno


Jedna od mogućih aproksimacija:

Tablica stranjca Bitovi pristupa Posmačni registri povijesti 58

a29
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 izbacuje
se 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).
59

Kada se u stranicu piše, bit pisanja se postavlja.


Redoslijed odabira stranica za izbacivanje

Redoslijed bit bit Stranica


pristupa pisanja
1 0 0 nije * nije pisana
upotrebljavana (čista)

2 0 1 nije * pisana
upotrebljavana (“nečista”)

3 1 0 upotrebljavana “čista”

4 1 1 upotrebljavana “nečista”

* nakon zadnjeg brisanja od sata


60

a30
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 tj
o=int(m/n) okvira po procesu
* podijeliti okvire srazmjerno veličini programa
Pi - broj stranica procesa i P=Σpi Oi=int(Pi/P*m)
61

Eventualna dinamička preraspodjela okvira obavlja se kao posljedica


promatranja ponašanja procesa

Broj Dodati jedan okvir Suviše promašaja


proma-
šaja
Područje “normalnog”
promašaja

Oduzeti jedan okvir “Premalo” promašaja

Broj okvira

Ako svi procesi suviše promašuju, treba smanjiti stupanj višezadaćnosti


te raspodjeliti okvire procesima koji ostaju.
62

a31
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 će
se puniti promašivanjem

Bilo bi razumno zapamtiti koje stranice su bile u radnom spremniku


i napuniti ih sve u jednom zahvatu.
Ne vraćaju se sve stranice već samo one koje su u jednom razdoblju
tzv. Vremenskom prozoru, koristile. To je radni skup stranica.
D - vremenski prozor
W(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)

63

Primjer: Neka se u uzastopnim vremenskim intervalima pristupa u


slijedeć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 t2
D=2
D=2
W(t1,2)={1,5} W(t2,2)={3,4}
D=4 D=4

W(t1,4)={1,5,7} W(t2,4)={3,4}

D=10 D=10
W(t1,10)={1,2,5,6,7} W(t2,10)={2,3,4,6,}

64

a32
Veličina radnog skupa mijenja se tijekom odvijanja programa
Uz dovoljno širok prozor, sve stranice Pi nekog procesa mogu se
nalaziti u radnom skupu
1<=|w(t,D)|<=Pi
Praćenjem rada nekog programa može se ustanoviti da u tipičnom
slučaju postoje vremenska razdoblja kada je radni skup slabo
promjenjiv, te razdoblja (tranzijetna) kada je veličina skupa jako
promjenjiva.
|W(t,D)|

t
65
Stabilno

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 spremniku
Međutim nekada se mogu uočiti znatne promjene u trajanju programa
pri 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 činiti


za 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
66

a33
Ako na raspolaganju imamo samo jedan okvir, izvođenje
inicijalizacije će izazvati 512 promašaja.

Mala modifikacija programa

Za j:=1 do 512 činiti


za 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 s
b) 261114* 20 = 5222880 ms = 5222.88 s=1 sat 27 min 2.88 s

67

a34

Вам также может понравиться

  • 6.2 Predlošci
    6.2 Predlošci
    Документ5 страниц
    6.2 Predlošci
    api-3759825
    Оценок пока нет
  • 6.1 Naslijeđivanje
    6.1 Naslijeđivanje
    Документ11 страниц
    6.1 Naslijeđivanje
    api-3759825
    Оценок пока нет
  • Uvod
    Uvod
    Документ37 страниц
    Uvod
    api-3759825
    Оценок пока нет
  • Programi Za Obradu Slike
    Programi Za Obradu Slike
    Документ20 страниц
    Programi Za Obradu Slike
    api-3759825
    Оценок пока нет
  • X Terminal
    X Terminal
    Документ9 страниц
    X Terminal
    api-3759825
    Оценок пока нет
  • Prevodjenje Jezgre
    Prevodjenje Jezgre
    Документ4 страницы
    Prevodjenje Jezgre
    api-3759825
    Оценок пока нет
  • Wine - Linux
    Wine - Linux
    Документ8 страниц
    Wine - Linux
    toomy912
    Оценок пока нет
  • 5.1 Datoteke
    5.1 Datoteke
    Документ23 страницы
    5.1 Datoteke
    api-3759825
    Оценок пока нет
  • Lekcija 1 Uvod U C
    Lekcija 1 Uvod U C
    Документ309 страниц
    Lekcija 1 Uvod U C
    api-3759825
    100% (1)
  • Web Posluzitelj
    Web Posluzitelj
    Документ20 страниц
    Web Posluzitelj
    api-3759825
    Оценок пока нет
  • Samba Posluzitelj
    Samba Posluzitelj
    Документ26 страниц
    Samba Posluzitelj
    api-3759825
    Оценок пока нет
  • Shell Skripte
    Shell Skripte
    Документ5 страниц
    Shell Skripte
    api-3759825
    Оценок пока нет
  • PHP Nuke
    PHP Nuke
    Документ61 страница
    PHP Nuke
    api-3759825
    Оценок пока нет
  • Programi Za Izradu Web Stranica
    Programi Za Izradu Web Stranica
    Документ6 страниц
    Programi Za Izradu Web Stranica
    Roga29
    Оценок пока нет
  • Office Alati
    Office Alati
    Документ36 страниц
    Office Alati
    api-3759825
    Оценок пока нет
  • Osnove Linux Vatrozida
    Osnove Linux Vatrozida
    Документ31 страница
    Osnove Linux Vatrozida
    api-3759825
    Оценок пока нет
  • Nfs Posluzitelj
    Nfs Posluzitelj
    Документ18 страниц
    Nfs Posluzitelj
    api-3759825
    Оценок пока нет
  • Osnovna Uputstva
    Osnovna Uputstva
    Документ7 страниц
    Osnovna Uputstva
    api-3759825
    Оценок пока нет
  • Mandrake 9
    Mandrake 9
    Документ10 страниц
    Mandrake 9
    api-3759825
    Оценок пока нет
  • Mandrake
    Mandrake
    Документ14 страниц
    Mandrake
    api-3759825
    Оценок пока нет
  • Isdn Uredjaji
    Isdn Uredjaji
    Документ28 страниц
    Isdn Uredjaji
    api-3759825
    Оценок пока нет
  • Mail Posluzitelj
    Mail Posluzitelj
    Документ29 страниц
    Mail Posluzitelj
    api-3759825
    Оценок пока нет
  • Graficka Sucelja
    Graficka Sucelja
    Документ25 страниц
    Graficka Sucelja
    api-3759825
    100% (1)
  • Mail Klijenti
    Mail Klijenti
    Документ25 страниц
    Mail Klijenti
    api-3759825
    Оценок пока нет
  • Instalacija Targz
    Instalacija Targz
    Документ1 страница
    Instalacija Targz
    api-3759825
    Оценок пока нет
  • 1 Uvod
    1 Uvod
    Документ40 страниц
    1 Uvod
    api-3759825
    Оценок пока нет
  • Linux Usmjerivac
    Linux Usmjerivac
    Документ19 страниц
    Linux Usmjerivac
    api-3759825
    Оценок пока нет
  • Inetd
    Inetd
    Документ5 страниц
    Inetd
    api-3759825
    Оценок пока нет
  • FTP Posluzitelj
    FTP Posluzitelj
    Документ12 страниц
    FTP Posluzitelj
    api-3759825
    Оценок пока нет
  • FTP Klijenti
    FTP Klijenti
    Документ15 страниц
    FTP Klijenti
    api-3759825
    Оценок пока нет