Drugi kolokvij iz predmeta Operacijski sustavi 2. srpnja 2019. Napomene: PISATI ČITKO! Zadatke 7-10 rješavati na ovom papiru ili uz njih napisati "na papirima". 1. (2) Opisati pristupni sklop za izravni pristup spremniku (DMA). Gdje ima smisla koristiti takav sklop, a gdje koristiti prekidni način rada za upravljanje ulazno-izlaznim napravama? - DMA sklop prenosi podatke od UI jedinice izravno u radni spremnik tako da traži od procesora upravljanje sabirnicom za prijenose pojedinih podataka - ima ga smisla koristiti kod UI jedinica koje generiraju/daju puno podatka - nema ga smisla koristiti ako se na svaki podatak treba nešto napraviti (tada koristiti prekide) 2. (2) Pokazati ostvarenje me dusobna isključivanja korištenjem instrukcija koje koriste dva uzastopna sabirnička ciklusa (pokazati funkcije U di_u_ko i Iza di_iz_ko). - korištenjem dva uzastopna sabirnička ciklusa moguće je pročitati i odmah promijeniti sadržaj neke memorijske lokacije, prije nego li bi neka druga dretva pročitala istu vrijednost, a što je bio problem kod pokušaja me dusobnog isključivanja sa samo jednom varijablom (ZASTAVICA) U di_u_ko() { Iza di_iz_ko() { dok je TAS(ZASTAVICA) == 1 radi ZASTAVICA = 0 ; //radno čekanje 3. (2) Opisati jezgrinu funkciju PostaviOSEM(S) (riječima ili pseudokodom). PostaviOSEM(S) { spremi kontekst aktivne dretve u opisnik Aktivna_D ako je red OSEM[S] neprazan tada { stavi opisnik Aktivna_D u red Pripravne_D makni prvi opisnik iz OSEM[S] u red Pripravne_D makni prvi opisnik iz Pripravne_D u red Aktivna_D inače { OSEM[S].v = OSEM[S].v + 1 obnovi kontekst iz opisnika Aktivna_D 4. (2) Opisati sadržaj tablice prevo denja. Na primjeru pokazati mogući izgled jednog zapisa u tablici i kako se on koristi. - u tablici prevo denja nalaze se opisnici svih stranica procesa - opisnik stranice sastoji se od adrese (indeksa) okvira i zastavica primjer: stranica 55 nalazi se u okviru 381 - opisnik stranice 55: 381 V=1 (indeks okvira 381, bit prisutnosti=1) 5. Bajt je osnovna jedinica podataka koja se "adresira" u radnom spremniku. a) (1) Koja je osnovna jedinica podataka diska, koja se "adresira" u strukturi podataka diska? b) (1) Koja je osnovna jedinica podataka nekog datotečnog sustava, koja se "adresira" u strukturi podataka datotečnog sustava, npr. pri opisu smještaja elemenata datoteka? Navesti tipične veličine za jedinice podataka za a) i b).
a) sektor -- uobičajena veličina 512 B b) blok -- uobičajena veličina 4 KB za NTFS (UNIX 1 KB) 6. (2) Osim redundancije (zaštite u slučaju kvara), korištenje RAID sustava donosi i povećanje performansi. Opišite to na primjeru RAID 5 (kako/zašto se povećavaju brzine pisanja/čitanja). - jedan blok podataka je raspodijeljeno pohranjen na N diskova (zapravo na N-1 diskova + paritet na jednom od njih) - čitanje bloka zahtjeva da se njegovi dijelovi čitaju sa svih diskova - paralelnim radom brže se dohvaćaju podaci (sa svakog diska dohvaća se samo dio podataka - brže je nego dohvat cijelog bloka s jednog diska) - isto je i s pisanjem - dakle, pri čitanju i pisanju se paralelno koristi više diskova, više će se toga zapisati/učitati u jedinici vremena => brži rad 7. (4) U nekom sustavu u kojem se prekidi obra duju prema prioritetu, ali bez sklopa za prihvat prekida, uz programsku potporu za odre divanje prioriteta prekida, javljaju se prekidi: P 1 u 1. i 11., P 2 u 7. ms te P 3 u 4. ms. Prioritet prekida odre den je brojem (P 3 ima najveći prioritet). Procedura za prihvat prekida (PP) traje 2 ms a procedura za povratak iz prekida (PiP) 1 ms. Obrada svakog prekida traje po 4 ms. Grafički prikazati aktivnosti procesora u glavnom programu (GP), procedurama za obradu prekida (P i ) te procedurama za prihvat prekida (PP) i povratak iz prekida (PiP). GP --+ +-- P1 +-+ +-----+ +-------+ P2 +-------+ P3 +-+ +---+ +-+ PP +---+ +---+ +---+ +---+ PiP +-+ +-+ +-+ +-+ t 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 +1 +3 +2 +1-3 -2-1 -1 8. (4) U nekom sustavu s poslužiteljem poslovi se javljaju periodički svakih 20 ms i to: P 1 u 2. ms, P 2 u 4., P 3 u 7. i P 4 u 10. milisekundi (gledano prema početku periode). P 1 traje 5 ms, P 2 6 ms, P 3 2 ms te P 4 3 ms. Izračunati prosječne vrijednosti: α, β, ρ, T, n. P2 4 4 4 P1 2 2 2 3 3 3 3 3 3 4 4 A 1 1 1 1 1 2 2 2 2 2 2 3 3 4 4 4 t 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 +1 +2 +3 +4-1 -2-3 -4 a = 4 / 20 ms = 4000/20 = 200 s-1 1/b = (5+6+2+3)/4 = 4 ms => b = 1/4ms = 250 s-1 rho = a/b = 200/250 = 4/5 = 0,8 T1 = 5, T2 = 13-4 = 9, T3 = 15-7 = 8, T4 = 18-10 = 8 T = (5 + 9 + 8 + 8)/4 = 30/4 = 7,5 ms n = a*t = 200 s-1 * 7,5 ms = 200*7,5/1000 = 1,5 (sve ms) Formula T=1/(b-a) se ovdje ne može koristiti! Ovo je deterministički sustav! 9. (4) Poslužitelj P 1 zamijenjen je poslužiteljem P 2 (P 2 odra duje te poslove). P 2 je 25% brži od P 1. Dodatno, zbog novo uvedenih usluga (koje odra duju drugi poslužitelji) broj poslova (koje P 2
zaprima) je sada dvostruko manji nego prije (na P 1 ). Prosječno zadržavanje poslova u sustavu s P 1 bilo je 100 ms, uz prosječno trajanje obrade 50 ms. Koliko će biti prosječno zadržavanje poslova na P 2? b2=1,25 b1 b1 = 1/50 ms = 20 s-1 T1=100 ms a1 = b1-1/t1 = 20 s-1-1/100 ms = 10 s-1 1/b1=50 ms b2 = 1,25 b1 = 25 s-1 a2=1/2 a1 a2 = 1/2 a1 = 5 s-1 T2=? T2 = 1/(b2-a2) = 1/(25-5) = 1/20 = 1000/20 ms = 50 ms Nije ispravno: rho2 = 1/1,25 rho1 jer P2 prima manje poslova pa se opterećenja ne mogu uspore divati. 10. (4) U sustavu koji koristi raspore divanje podjelom vremena uz kvant T Q =2 jedinice vremena javljaju se sljedeće dretve: D 1 u t=0, D 2 u t=3, D 3 u t=5 te D 4 u t=9. Svaka dretva treba 6 jedinica procesorskog vremena. Pokazati izvo denje dretvi u tom sustavu dok sve dretve ne završe s radom. P2 3 2 2 4 3 3 2 2 4 4 3 3 P1 2 1 1 3 3 2 2 4 4 3 3 2 2 4 4 3 3 4 4 A 1 1 1 1 2 2 1 1 3 3 2 2 4 4 3 3 2 2 4 4 3 3 4 4 t 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +1 +2 +3-1+4-2 -3-3 11. (4) U sustavu s virtualnim spremnikom, veličina okvira je N riječi, a okviri se pune na zahtjev. Matrice A[N,N] i B[N,N] su pohranjene po redcima (na susjednim lokacijama se mijenja desni indeks). Koliko promašaja će izazvati prikazani program ako za matrice u radnom spremniku postoje dva okvira i koristi se LRU strategija zamjena stranica? Zanemariti promašaje zbog dohvata instrukcija samog programa i pristupa pomoćnim varijablama. za i = 1 do N radi za j = 1 do N radi B[j,i] = A[i,j]*B[j,i] Za A treba N stranica: označimo ih indeksima 1..N Za B treba N stranica: označimo ih indeksima N+1..2N (ne opet 1..N!!!) Zahtjevi: (i=1) # (i=2) #... 1 N+1 1 N+2... 1 N+N # 2 N+1 2 N+2... 2 N+N #... Okviri: - 1 1 1 1 # 2 2 - - N+1 N+2 N+N # N+N N+1 (1. redak od A i N od B)# (2. od A i N od B) br.prom.: 1 + N # 1 + N... suma = N*(1+N) 12. Neka datoteka se sastoji od 10 blokova, svaki veličine 4 KB. Blokovi datoteke su smješteni na disku u blokove diska redom: 321, 765, 455, 456, 457, 101, 102, 98, 99, 100 (1. blok datoteke u 321. blok diska, 2. u 765. itd.). a) (2) Opisati smještaj te datoteke korištenjem NTFS tablice (VCN/LCN/#). b) (1) U kojem bloku na disku se nalazi bajt 25576 (6*4096+1000)? c) (1) Ako se svaki blok diska sastoji od 8 sektora (prvi blok diska zauzima sektore 1-8, drugi 9-16 itd.), u kojem se sektoru nalazi bajt 25576? a) VCN LCN # 1 321 1
2 765 1 3 455 3 6 101 2 8 98 3 b) adresa 24577 je u 7. bloku datoteke koji je u 102. bloku diska c) 102. blok diska se sastoji od sektora 101*8+1 -- 102*8 bajt 25576 je 1000 bajtova od početka bloka => u 2. sektoru bloka => 101*8+2 = 808+2=810 -- u 810. sektoru 13. (4) Obrada poslova u nekom sustavu obavlja se s pomoću četiri dretve Priprema, jedne dretve Obrada i jedne dretve Zaostali. Sve dretve su cikličke. Dretve Priprema nezavisno zaprimaju zahtjeve sa Z=Zaprimi() i pripremaju poslove P=Pripremi(Z) te ih stavljaju u zajednički red sa Stavi_u_red(P). Dretva Obrada koristi posebno sklopovlje za obradu te ju nije poželjno aktivirati ukoliko ima manje od 10 poslova u redu. Ona uzima poslove iz reda s X=Uzmi_Poslove(10) (s operatorom duljina(x) može se doznati koliko je poruka uzeto) te ih obra duje s Obradi(X). Dretve Priprema trebaju probuditi dretvu Obrada samo ako ona ne radi i ako u redu ima barem 10 poslova. Dretva Zaostali svakih 5 sekundi provjerava red poslova te ukoliko on nije prazan, a dretva Obrada je neaktivna budi ju (da poslovi ne bi predugo čekali u redu). Pristup redu poslova zaštiti od istovremenog korištenja. Napisati pseudokod dretvi i sinkronizirati ih korištenjem monitora. m - monitor s jednim redom r br - broj poruka u redu status - status dretve obrada: 0-spava, 1-radi dretva Priprema { Z = Zaprimi() P = Pripremi(Z) Stavi_u_red(P) br++ ako je br >= 10 i status == 0 tada Oslobodi_iz_reda_uvjeta(r,m) dretva Obrada { status = 0 ako je br < 10 tada Čekaj_u_redu_uvjeta(r,m) X = Uzmi_Poslove(10) br = br - duljina(x) status = 1 Obradi(X) // obrada IZVAN monitora; // da se mogu stavljati nove poruke u red dretva Zaostali { odgodi(5)
ako je br > 0 i status == 0 tada Oslobodi_iz_reda_uvjeta(r,m)