Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Zadatak 6.

1: Problem „starog mosta“


Stari most je uski most i stoga postavlja ograničenja na promet. Na njemu istovremeno smiju biti
najviše tri automobila koja voze u istom smjeru (zbog toga što je most uzak i star). Simulirati
automobile dretvom Auto koja obavlja niže navedene radnje. Napisati pseudokod funkcija
Popni_se_na_most(smjer) i Siđi_s_mosta().

Dretva Auto(smjer){ // smjer = 0 ili 1


Popni_se_na_most(smjer);
prijeđi_most;
Siđi_s_mosta();
}

Rješenje A: (idejno rješenje u pseudokodu)


m-funkcija Popni_se_na_most(smjer) {
uđi_u_monitor(M);
dok je (most pun ili auti na mostu voze se u drugom smjeru) {
čekaj_u_redu_uvjeta (M,1);
}
kreni preko mosta;
izađi_iz_monitora(M);
}
m-funkcija Siđi_s_mosta() {
uđi_u_monitor(M);
obavijesti_sve_koji_čekaju_u_redu_uvjeta(M,1);
odvezi_se_s_mosta;
izađi_iz_monitora(M);
}

Jednostavno i kratko rješenje:

Početne vrijednosti:
auti = 0; //broj automobila na mostu
smjer_na_mostu = 0; //0-lijeva obala prema desnoj, 1-obratno
M - monitor s redom uvjeta auti_čekaju=1

m-funkcija Popni_se_na_most(smjer) {
mutex_lock(M);
dok je ((auti == 3) || (auti > 0 && smjer != smjer_na_mostu))
cond_wait(M,1);

auti++;
smjer_na_mostu = smjer;
mutex_unlock(M);
}

m-funkcija Siđi_s_mosta() {
mutex_lock(M);
auti--;
cond_broadcast(M,1);
mutex_unlock(M);
}
Zadatak 6.3. ping – pong dretve
Zadatak: ping – pong dretve
U sustavu postoje dvije vrste dretvi: ping dretve koje u beskonacnoj petlji ispisuju rijec "ping" i
pong dretve koje ispisuju "pong". Dretve treba sinkronizirati tako da se u ispisu izmjenjuju rijeci
"ping" i "pong".

Zadatak rijesiti:
a) uporabom semafora.
b) uporabom monitora.

a)

dretva Ping() {
while(1) {
ČekajBSem(1);
Ispiši(“Ping”);
PostaviBSem(2);
}
}
dretva Pong() {
while(1) {
ČekajBSem(2);
Ispiši(“Pong”);
PostaviBSem(1);
}
}

Početno:
BSem(1).v = 1
Bsem(2).v = 0

Ping Ping Pong...


dretva Ping() {
... ČekajOSem(1);
Ispiši(“Ping”);
PostaviOSem(2);
}
dretva Pong() {
... ČekajBSem(KO);
ČekajOSem(2);
ČekajOSem(2);
PostaviBSem(KO);
Ispiši(“Pong”);
PostaviOSem(1)
PostaviOSem(1)
}
OSem(1).v = 2
Bsem(2).v = 0
b)

zadnja=0 //PING = 0, PONG = 1

dretva Ping() {
while(1) {
mutex_lock(&m);
dok je (zadnja == PING)
cond_wait(&uv[PING], &m);
zadnja = PING;
Ispiši(“Ping”);
cond_signal(&uv[PONG]);
mutex_unlock(&m);
}
}
dretva Pong() {
while(1) {
mutex_lock(&m);
dok je (zadnja == PONG)
cond_wait(&uv[PONG], &m);
zadnja = PONG;
Ispiši(“Pong”);
cond_signal(&uv[PING]);
mutex_unlock(&m);
}
}

Zadatak 8.1
Disk ima 128 sektora po stazi veličine 512 bajtova, 2000 staza i vrti se brzinom 4800 okretaja u
minuti. Upravljački sklop pročita jedan cijeli sektor u interni spremnik, a zatim ga prenosi u
glavni spremnik. Prijenos u glavni spremnik odvija se brzinom od 10 Mbit/s, a za to vrijeme
sklop ne može čitati s diska.
a) Koliki treba biti faktor preplitanja (interleave factor)?
b) Koliko prosječno traje prebacivanje kompaktno smještene datoteke veličine 235 KB
ako je trajanje traženja staze 12 ms, vrijeme premještanja sa staze na stazu 2 ms?
Rješenje:
a) =4800 ok/min = 80 ok/s  1 okretaj traje TR=1/80=0.0125s=12.5ms
prosječno trajanje traženja sektora: TR=TR/2=6.25ms
čitanje jednog sektora: ts=TR/128=0.097656ms
trajanje prijenosa 1 sektora u gl. spremnik: tsm=br.bitova/brzina
tsm=512*8/107=0.4096ms
tsm/ts=4.194  k=6

n n+1 n+2 n+3 n+4 n+5 n+6

ts tsm
b) veličina datoteke 235 kB
tseek=12ms
tprem=2ms

kapacitet staze: 128 * 512 = 64kB


235/64  3 ili 4 premještanja glave sa staze na stazu
ukupno trajanje čitanja jednog sektora: ts=kts =0,59 ms

pronalaženje početka datoteke tseek+TR = 12+6,25 = 18,25 ms


čitanje svih sektora (1kB je na dva sektora): 235*2*ts=470 ts = 277,3 ms
+ kašnjenje zbog premještanja glave 3 tprem+3 TR = 24,75 ms

Rj. 320.3ms

Zadatak 8.2
Disk ima 100 sektora po stazi veličine 1kB, 2000 staza, 4 ploče i vrti se brzinom 7200 okretaja u
minuti. Podaci su zapisani na obje strane ploče. Upravljački sklop pročita jednu cijelu stazu u
interni spremnik, a zatim je prenosi u glavni spremnik. Prijenos u glavni spremnik odvija se
brzinom od 20 Mbit/s, a za to vrijeme sklop ne može čitati s diska.
A) Koliki je kapacitet tog diska?
B) Koliko prosječno traje prebacivanje kompaktno smještene datoteke veličine 135 KB ako
je trajanje traženja staze 10 ms i vrijeme premještanja sa staze na stazu 1 ms?
C) Koliko iznosi faktor preplitanja ako disk čita sektor po sektor i koliko traje prijenos
podataka u tom slučaju?
Rješenje:
A) Kapacitet diska = 1kB * 100 * 2000 * 4 * 2 =.= 1 600 000 KB=1,5625 MB
B) Prijenos datoteke=
1) pronalaženje početka datoteke
= trajanje postavljanja glave = trajanje traženja staze (10ms) + rotacijsko kašnjenje (TR/2)
= 10 +60/7200/2 = 10 + 4,17 = 14,17 ms
2) čitanje staze (TR) = 8,33 ms
3a) prijenos podataka (100kB)
= br.bitova/brzina = 100 * 1024 * 8 / 2E7 = 40,96 ms
3b) trajanje premještanja sa staze na stazu = 1ms Ovoga nema jer je kompaktno smješrena
datoteka na cilindru! Kada ne bi bila datoteka kompaktno smještena, tada bi trebalo uzeti u obzir
ovo: max. {40,96 ms, 1 ms) = 40,96 ms
4) rotacijsko kašnjenje = 4,17ms
5) čitanje cijele staze = 8,33 ms
6) prijenos podataka (35kB)
= br.bitova/brzina = 35 * 1024 * 8 / 2E7 = 14,37 ms
= 90,3 ms
C) Riješiti za domaću zadaću
Varijante zadatka 8.2
Zadatak 8.2.1
Program A veličine 5MB i program B veličine 9200kB kompaktno su smješteni na disku koji ima
128 sektora po stazi. Početni sektor i jednog i drugog programa su ujedno i prvi sektori na stazi
na kojoj se nalaze. Veličine sektora je 1kB, a disk se okreće brzinom 7200 rpm. Upravljački
sklop pročita jednu cijelu stazu u interni spremnik, a zatim je prenosi u glavni spremnik. Prijenos
u glavni spremnik odvija se brzinom od 100 Mb/s, a za to vrijeme sklop ne može čitati s diska.
Vrijeme traženja staze je 10 ms, a vrijeme premještanja sa staze na stazu 1 ms.
Koliko vremena protekne od istovremenog izdavanja naredbi za pokretanjem programa A i B pa
do trenutka kada se oba programa izvode ako:
a) se prvo program A u cijelosti učita u radnu memoriju, a zatim se učitava program B
b) se u radni spremnik prvo prenosi jedna staza programa A, a zatim jedna staza programa B
i tako dalje naizmjenično
c) Koji je način čitanja brži i zbog čega dolazi do razlike u izračunatim vremenima u
slučajevima a) i b)? Bi li do navedene razlike došlo da su datoteke smještene na SSD
diskovima?
Rj:
(Pretpostavka je da vremenom dominira vrijeme potrebno da se program učita u radni spremnik,
a sve drugo se zanemaruje npr. vrijeme potrebno da se procesi/dretve stave u liste)

Datoteka programa A zauzima 5*1024kB/128kB=40 => 40 (znamo da nije 41) staza na disku, a
datoteka programa B zauzima 9200kB/128kB= 71,875 => 72 staze ( na zadnjoj stazi samo prvih
112 sektora).
Tuk=TukA+TukB
Čitanje staze TČS=TR=1/(7200/60)=8.333ms
Rotacijsko kašnjenje TR/2= TR / 2=4.16667ms
Prijenos sektora u spremnik TPsek=1024*8b / 100Mb/s= 0.08192ms
Prijenos staze u spremnik TPstz=128* TPsek = 10.48576ms
Traženje staze Tseek=10ms
Premještanje sa staze na stazu Ts2s=1ms
23,9857599966
a)
TukA=Tseek+TR/2+TČS+ TPstz +39*( Ts2s+TR/2+TČS+ TPstz)= 968.43ms
TukB=Tseek+71*(TR/2+TČS+ TPstz Ts2s)+ TR/2+TČS+ 112*TPsek= 1734.66ms
Tuk(a)= 968.43ms + 1734.66ms =2703,09ms ≈ 2.7s

b) Za čitanje prvih 40 staza programa A i programa B svaki put se traži staza umjesto da se
prelazi sa staze na stazu (za staze 2-40).
Tuk(b)= Tuk(a)+2*(40-1)*( Tseek-Ts2s)= 2703,09ms + 702ms=3405,09ms ≈ 8.4s

c) Brže je ako se čita datoteka po datoteka nego dvije datoteke naizmjenično jer se u slučaju kada
se čitaju naizmjenično svaki put mora tražiti staza. Kod SSD diskova ne očekujemo razliku jer se
kod njih koristi slučajan pristup (random access) pa nije važno kojim se redoslijedom čitaju
podaci.
Zadatak 8.2.2
Ista fotografija kompaktno je smještena u dvije različite datoteke na disku u nekomprimiranom
(128MB) i komprimiranom formatu (896kB). Disk ima 128 sektora po stazi, veličine sektora je
1kB, a disk se okreće brzinom 7200 rpm. Početni sektor i jednog i drugog programa su ujedno i
prvi sektori na stazi na kojoj se nalaze. Upravljački sklop pročita jednu cijelu stazu u interni
spremnik, a zatim je prenosi u glavni spremnik. Prijenos u glavni spremnik odvija se brzinom od
100 Mb/s, a za to vrijeme sklop ne može čitati s diska. Vrijeme traženja staze je 10 ms, a vrijeme
premještanja sa staze na stazu 1 ms. Ako procesor može dekomprimirati komprimiranu sliku
brzinom od 5Mb/s prikazuje li se brze slika koja se učita iz nekomprimirane ili komprimirane
slike? Objasniti.

Rj:
Nekomprimirana datoteka 128*1024kB/128kB=1024 => 1024 staze (znamo da nije 1025) staza
na disku, a komprimirana datoteka 896kB/128kB= 7 => 7 staza (znamo da nije 8)

Čitanje staze TČS=TR=1/(7200/60)=8.333ms


Rotacijsko kašnjenje TR/2= TR / 2=4.16667ms
Prijenos sektora u memoriju TPsek=1024*8b / 100Mb/s= 0,08192ms
Prijenos staze u memoriju TPstz=128* TPsek = 10,48576ms
Traženje staze Tseek=10ms
Premještanje sa staze na stazu Ts2s=1ms
Vrijeme dekompresije Tdekompresije=896*1024*8 / 5Mb/s=1468,0064ms

TNK= Tseek+TR/2+TČS+ TPstz +1023*( Ts2s+TR/2+TČS+ TPstz)= 24570.36ms ≈ 24.57s


TK= [Tseek+TR/2+TČS+ TPstz +6*( Ts2s+TR/2+TČS+ TPstz)] + Tdekompresije =
176.9ms+1468ms=1644.9ms ≈ 1.6s

Puno se brže prikaže slika pohranjena u komprimiranoj datoteci jer je čitanje datoteke puno brže
pa zajedno sa dekompresijom treba manje vremena. (veći dio vremena otpada na dekompresiju)
Zadatak 8.3
(Slajd 08-104 ili na kraju 8. poglavlja)
U sustavu sa straničenjem program veličine 400 riječi (1-400) generira slijed adresa:
23, 47, 333, 81, 105, 1, 400, 157, 30, 209, 289, 149, 360
Program ima na raspolaganju 200 riječi primarne memorije. Napisati niz referenciranja stranica
veličine 50 riječi. Koliki je postotak promašaja za sve tri strategije izbacivanja stranica.
Rješenje:
adresa 23 47 333 81 105 1 400 157 30 209 289 149 360
stranica ili zahtjev 1 1 7 2 3 1 8 4 1 5 6 3 8
1 | 1 1 1 | 8 8 8 8 6 6 6
a) FIFO - | 7 7 7 | 7 4 4 4 4 3 3
11/13*100% - | - 2 2 | 2 2 1 1 1 1 8
- | - - 3 | 3 3 3 5 5 5 5
1 | 1 1 1 | 1 1 | 1 1 1 8
b) LRU - | 7 7 7 | 8 8 | 8 6 6 6
10/13*100% - | - 2 2 | 2 4 | 4 4 3 3
- | - - 3 | 3 3 | 5 5 5 5
1 | 1 1 1 | 1 1 | 1 1 | 1
c) LFU - | 7 7 7 | 8 4 | 5 6 | 8
9/13*100% - | - 2 2 | 2 2 | 2 2 | 2
- | - - 3 | 3 3 | 3 3 | 3
1 | 1 1 1 | 1 1 | 5 5 | |
c) OPT - | 7 7 7 | 8 8 | 8 8 | |
8/13*100% - | - 2 2 | 2 4 | 4 6 | |
- | - - 3 | 3 3 | 3 3 | |

Dodatno: Prikažite trenutni izgled tablice prevođenja programa na kraju primjene OPT strategije
(u tablicu uključiti bit prisutnosti)
Broj stranice Broj okvira Bit
(redak tablice) prisutnosti
1 1 0
2 3 0
3 4 1
4 3 0
5 1 1
6 3 1
7 2 0
8 2 1
Zadatak 8.4
U sustavu s virtualnim spremnikom veličina okvira je N riječi, a okviri se pune na zahtjev.
Algoritam zamjene stranica je LRU. Poredak A[1..N,1..N] je pohranjen po retcima (na susjednim
lokacijama se mijenja desni indeks). Koliko promašaja će izazvati prikazani program ako za
poredak A u radnom spremniku postoji:
t = 0;
za i=1 do N-1{
a) samo jedan okvir, za j=i+1 do N{
b) dva okvira, t = t + A[i,j];
c) tri okvira, t = t * A[j,i];
d) N okvira. }
}
Napomena: Zanemariti promašaje zbog dohvata naredbi samog programa i pristupa pomoćnim varijablama. (Na
primjer, neka je cijeli program u priručnoj memoriji za instrukcije, a pomoćne varijable i, j, t u registrima.)
Rješenje: Matrica (poredak) NxN:

Zahtjevi za dobavljanje redaka matrice


a) Broj promašaja za 1 okvir
2*(N-1) 2*(N-2) 2*2 2*1
1 2 1 3 ... 1 N 2 3 2 4 ... 2 N ... N-2 N-1 N-2 N N-1 N
broj promašaja = 2*[(N-1)+(N-2)+(N-3)+ ... +2+1] = 2*[N*(N-1)]/2 = N*(N-1)

b) Broj promašaja za 2 okvira


N N-1 3 1
1 2 1 3 ... 1 N 2 3 2 4 ... 2 N ..N N-2 N-1 N-2 N N-1 N
1 1  1 ...  1 2 2  2 ...  2 ... N-2 N-2  N-2 N-1 
- 2  3 ...  N N 3  4 ...  N N N N-1  N N 
broj promašaja = N+(N-1)+(N-2)+ ... +3+1 = N*(N+1)/2-2

c) Broj promašaja za 3 okvira


N N-1 5
1 2 1 3 ... 1 N 2 3 2 4 ... 2 N ... N-5 N ... N-4 N
1 1  1 ...  1 1 3  3 ...  N-1 ... ...  N-1
- 2  2 ...  N-1 2 2  2 ...  2  N-4
- -  3 ...  N N N  4 ...  N N  N

4 2 0
N-3 N-2 N-3 N-1 N-3 N N-2 N-1 N-2 N N-1 N
N-3 N-3  N-3  N-3 N-3 N-1    
N-4 N-2  N-2  N N N    
N N  N-1  N-1 N-2 N-2    

broj promašaja = N+(N-1)+(N-2)+ ... +4+2 = N*(N+1)/2-4


d) Broj promašaja za N okvira = N
Zadatak 8.5, upravljanje spremnikom
U nekom sustavu trebaju se obaviti četiri programa: P1, P2, P3 i P4 koji su već pripremljeni na
pomoćnom spremniku i zauzimaju redom 5 MB, 8 MB, 3 MB, 10 MB. Događaji pokretanja i
završetka programa znani su unaprijed i mogu se iskazati sljedećim nizom događaja: P1
pokrenut; P2 pokrenut; P1 završava; P3 pokrenut; P3 završava; P4 pokrenut; P2 završava; P4
završava. Sustav na raspolaganju ima 20 MB spremnika rezerviranog za korisničke programe.
Prikazati stanje radnog spremnika ako se koriste metode upravljanja spremnikom:
a) statičko upravljanje s veličinom segmenta od 10 MB,
b) dinamičko upravljanje,
c) straničenje, uz veličinu stranice od 1 MB.

a) statičko upravljanje

p1 P1
p2 P1 P2
-p1 P2
p3 P3 P2
-p3 P2
p4 P4 P2
-p2 P4
-p4

b) dinamičko upravljanje

p1 P1
p2 P1 P2
-p1 P2
p3 P3 P2
-p3 P2
P4 se ne može smjestiti u memoriju u ovom trenutku! (P3 ide u najmanju rupu!)

c) straničenje

P1 P1 P1 P1 P1
P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2
P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2
P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 P3 P3 P3
P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 P3 P3 P3
P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 P3 P3 P3 P4 P4 P4 P4
* * * * * P2 P2 P2 P2 P2 P2 P2 P2 * * * P4 P4 P4 P4
P4 P4 P4 P4 P4 P2 P2 P2 P2 P2 P2 P2 P2 P4 P4 P4 P4 P4
P4 P4 P4 P4 P4 P2 P2 P2 P2 P2 P2 P2 P2 P4 P4 P4 P4 P4
P4 P4 P4 P4 P4 P2 P2 P2 P2 P2 P2 P2 P2 P4 P4 P4 P4 P4

* - nije bilo mjesta pa je trebalo pohraniti okvire i obrisati memoriju prije dodjeljivanja
Komentirati zašto P3 nije odmah na mjesto P1 (zato jer prvo treba pohraniti i obrisati okvire;
'jeftinije' je prvo koristiti slobodni prostor, ako ga ima).

Zadatak 9.2
Ako je na UNIX datotečnom sustavu pohranjena datoteka veličine 555 kB koliko spremničkog
prostora zauzimaju kazaljke za tu datoteku u tablici datotečnog sustava? Skicirajte organizaciju
tih kazaljki. Veličina sektora/bloka je 1024 okteta (1kB), a veličina kazaljke 32 bita.

Opisnik 10+3 kazaljke

Prvih 10 opisuje prvih 10 * 1024 okteta = 10 KB, ostaje 555 – 10 = 545 KB

11. kazaljka pokazuje na blok s 1024/(32/8) = 256 kazaljki => 256 KB, ostaje 545-256 = 289 KB

12. kazaljka pokazuje na blok koji može imat 256 kazaljki na blokove s kazaljkama
S obzirom da nam je ostalo 289 KB, a svaki blok može imati 256 kazaljki, tj. opisati 256 KB,
dovoljna su nam dva takva bloka. Tj. od bloka na koji pokazuje 12. kazaljka koristimo samo prve
dvije kazaljke, a blok druge kazaljke ne koristimo u cijelosti.
[12.kaz]  [kaz1, kaz2, …. kaz256];
[kaz1]  [sekt1, sekt2, … sekt256]; pokriva 256 KB, ostaje 289-256 = 33
[kaz2]  [sekt1, sekt2, … sekt33, 0, 0, …., 0]; pokriva 33 KB

Kazaljke 1-10 11 12 13

256 kazaljki (a)

1 2 ostalih 254 kazaljki (b)

256 kazaljki (c) 256 kazaljki, koristim 33 (d)

10 kB 256 kB 256 kB 33 kB

Kazaljke zauzimaju (bez onih u opisniku) a+b+c+d = 4 bloka, tj. 4 KB (iako neke kazaljke u
blokovima 'b' i 'd' nisu iskorištene).

Dodatno:
Najveća datoteka?
10 KB + 256 KB + 256*256 KB + 256*256*256 KB = 16843018 KB  16448 MB  16 GB
Blokova za kazaljke: 1 + (1 + 256) + (1 + 256 * (1 + 256)) = 66051 (KB)  64,5 MB

Datoteka od 3 GB?
1.-10.  10 KB, ostaje 3 GB – 10 KB = 3*1024*1024 – 10 = 3145718 KB
11.  256 KB, ostaje 3145718 – 256 = 3145462 KB (1 blok za kazaljke)
12.  256*256 = 65536 KB, ostaje 3145462 – 65536 = 3079926 KB (1+256 blokova za kazaljke)

13.  3079926 KB = 46*65536 + 65270 (1 blok za početne kazaljke, samo 47 od 256 se koristi)
 prvih 46 kazaljki će pokazivati na blokove potpuno iskorištene (46*(1+256) blokova za k.)
 47 kazaljka: 65270 = 254 * 256 + 246 (1+255 blokova za kazaljke)

Ukupno blokova za kazaljke: 1 + (1 + 256) + (1 + 46 * (1 + 256) + 1 * (1 + 255)) = 12337


„Višak kazaljki“? Koliko treba minimalno ? 3 GB = 3 * 1024 * 1024 blokova za podatke; za svaki blok treba biti
adresa=4 bajta (32 bita)  3 * 1024 * 1024 * 4 B = 12 MB; 12337 blokova = 12 MB + 49 KB

Zadatak 9.2
Ako je na UNIX datotečnom sustavu pohranjena datoteka veličine 555 kB koliko spremničkog
prostora zauzimaju kazaljke za tu datoteku u tablici datotečnog sustava? Skicirajte organizaciju
tih kazaljki. Veličina sektora/bloka je 1024 okteta (1kB), a veličina kazaljke 32 bita.

Opisnik 10+3 kazaljke

Prvih 10 opisuje prvih 10 * 1024 okteta = 10 KB, ostaje 555 – 10 = 545 KB

11. kazaljka pokazuje na blok s 1024/(32/8) = 256 kazaljki => 256 KB, ostaje 545-256 = 289 KB

12. kazaljka pokazuje na blok koji može imat 256 kazaljki na blokove s kazaljkama
S obzirom da nam je ostalo 289 KB, a svaki blok može imati 256 kazaljki, tj. opisati 256 KB,
dovoljna su nam dva takva bloka. Tj. od bloka na koji pokazuje 12. kazaljka koristimo samo prve
dvije kazaljke, a blok druge kazaljke ne koristimo u cijelosti.
[12.kaz]  [kaz1, kaz2, …. kaz256];
[kaz1]  [sekt1, sekt2, … sekt256]; pokriva 256 KB, ostaje 289-256 = 33
[kaz2]  [sekt1, sekt2, … sekt33, 0, 0, …., 0]; pokriva 33 KB

Kazaljke 1-10 11 12 13

256 kazaljki (a)

1 2 ostalih 254 kazaljki (b)

256 kazaljki (c) 256 kazaljki, koristim 33 (d)

10 kB 256 kB 256 kB 33 kB

Kazaljke zauzimaju (bez onih u opisniku) a+b+c+d = 4 bloka, tj. 4 KB (iako neke kazaljke u
blokovima 'b' i 'd' nisu iskorištene).

Dodatno:
Najveća datoteka?
10 KB + 256 KB + 256*256 KB + 256*256*256 KB = 16843018 KB  16448 MB  16 GB
Blokova za kazaljke: 1 + (1 + 256) + (1 + 256 * (1 + 256)) = 66051 (KB)  64,5 MB

Datoteka od 3 GB?
1.-10.  10 KB, ostaje 3 GB – 10 KB = 3*1024*1024 – 10 = 3145718 KB
11.  256 KB, ostaje 3145718 – 256 = 3145462 KB (1 blok za kazaljke)
12.  256*256 = 65536 KB, ostaje 3145462 – 65536 = 3079926 KB (1+256 blokova za kazaljke)

13.  3079926 KB = 46*65536 + 65270 (1 blok za početne kazaljke, samo 47 od 256 se koristi)
 prvih 46 kazaljki će pokazivati na blokove potpuno iskorištene (46*(1+256) blokova za k.)
 47 kazaljka: 65270 = 254 * 256 + 246 (1+255 blokova za kazaljke)

Ukupno blokova za kazaljke: 1 + (1 + 256) + (1 + 46 * (1 + 256) + 1 * (1 + 255)) = 12337


„Višak kazaljki“? Koliko treba minimalno ? 3 GB = 3 * 1024 * 1024 blokova za podatke; za svaki blok treba biti
adresa=4 bajta (32 bita)  3 * 1024 * 1024 * 4 B = 12 MB; 12337 blokova = 12 MB + 49 KB

Zadatak 9.3
Na slici su prikazane nakupine sektora (klasteri) nekog sveska (particije). Nakupine sektora jedne
datoteke su zasjenjene i numerirane redoslijedom kako se logički pojavljuju u datoteci (masno
otisnute brojke). Opisati datotečnu tablicu, tj. njen dio koji opisuje smještaj zadane datoteke.
Redni brojevi nakupina sektora na disku prikazani su u gornjem lijevom kutu svake ćelije.
(Veličina nakupine sektora za ovaj primjer nije bitna, može biti primjerice 4KB).

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

17 18 19 20 21 22 23 24
3 4 5
25 26 27 28 29 30 31 32

33 34 35 36 37 38 39 40
1 2
41 42 43 44 45 46 47 48

49 50 51 52 53 54 55 56
11 12 13 14 15
57 58 59 60 61 62 63 64
6 7 8 9 10
NTFS
VCN LCN Broj nakupina
1 37 2
3 18 3
6 57 5
11 51 5

*unix*
prvih 13 kazaljki
37 38 18 19 20 57 58 59 60 61 x

51 52 53 54 55 (ostatak kazaljki neiskorišten)


DATOTEČNI PODSUSTAV

Zadatak 9.1
Disk s pokretnim glavama ima 100 staza (0 - 99). Neka se glava trenutno nalazi na stazi 29, s tim
da je prije bila na stazi 8. Zahtjevi za pristup pojedinim stazama svrstani po redu prispjeća su: 3,
7, 40, 98, 71, 68, 70, 21, 5 i 49.
a) Koliki je ukupan pomak glave pri izvršenju tih zahtjeva za strategije posluživanja: redom
prispjeća (FCFS), s najkraćim vremenom premještaja glave (SSTF), pregledavanje
(LOOK i SCAN) i kružno pregledavanje (C-LOOK i C-SCAN)?
b) Opisati svaku od navedenih strategija!
c) Kod kojih može doći do izgladnjivanja (beskonačnog odgađanja posluživanja nekih
zahtjeva zbog posluživanja novopristiglih zahtjeva)?
d) Grafički prikazati kretanje glave prilikom obrade zahtjeva za sve strategije!

Rješenje:
0 10 20 30 40 50 60 70 80 90 99

FCFS

SSTF

LOOK
SCAN

C-LOOK
C-SCAN

3 5 7 21 29 40 49 68 70 71 98

You might also like