08.2008. Septembar 2010 - Resenja

You might also like

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

Septembarski rok

24. avgust 2010.


08.2008. Operativni sistemi

Odgovori
1. MS-DOS nije reentrant, ali mu upotreba pasivnog TSR ipak ne pravi problem. Objasniti zbog čega?
Odgovor: Pasivni TSR se pozivaju sinhrono (npr. iz korsiničkog programa), tako da su ovakvi pozivi
serijalizovani, dok se aktivni TSR pozivaju asinhrono (npr. iz prekidne rutine), tako da su ovakvi pozivi
konkurentni.

2. U sistemu datoteka FAT16, sa klasterima veličine 8 KB, nalazi se datoteka veličine 22345 bajtova.
Datoteka je smeštena u sledećim klasterima: 6, 12, 15.
a) Koliko blokova veličine 512 bajtova datoteka zauzima, a koliko blokova koristi?
b) Kolika je interna fragmentacija za ovu datoteku?
c) Ako je kapacitet sistema datoteka 1 GB, odredite veličinu FAT tabele.
(3 poena)

Odgovor:
a) Datoteka zauzima 3 klastera, a to je 3 × 8192/512 = 48 blokova.
b) Interna fragmentacija je 3 × 8192 – 22345 = 2231 bajt.
c) Broj klastera = kapacitet sistema datoteka /veličina klastera = 1 GB / 8 KB = 131072 klastera
FAT 16 ima dva bajta (16 bitova) po jednoj svojoj stavci
Veličina FAT tabele = broj klastera × broj bajtova po jednoj stavci FAT = 131072 × 2 = 256 KB

3. Šta će biti ispisano na standardnom izlazu nakon izvršenja sledećeg programa:

#include <sys/types.h>
#include <stdio.h>

int main(){
pid_t pid;
printf("A");
pid=fork();
if (pid==0) printf("B");
else {
wait(NULL);
printf("C");
}
}

Odgovor: ABAC

4. Nivo privilegije tekućeg programa definisan je:


a. Trenutnim sadržajem CPL (Current Privilege Level) registra mikroprocesora.
b. Stanjem PE (Protected Enable) bita u EFLAGS.
c. Vrednošću RPL (Requestor Privilege Level) u segmentnom selektoru instrukcije koja se tenutno
izvršava.
d. Vrednošću DPL (Descriptor Privilege Level) kodnog segmenta kome pripada instrukcija koja se
trenutno izvršava.
5. Šta je to Flat Memory Model kod arhitekture IA32?
Odgovor: To je kada svi segmenti zauzimaju celokupni linearni memorijski adresni prostor, od 0 do 4GB.

6. Da li rutina na obradu prekida korisičkog programa može da ide u blokirano stanje? Obrazložiti odgovor.
Odgovor: Da, ukoliko se rutina izvršava u prostoru kernela. Ona nije nit, ali se izvršava u kontekstu niti.
Zbog toga blokiranje rutine za obradu prekida vodi prekinutu nit u blokirano stanje.

7. U sistemu zasnovanom na arhitekturi IA32 u kome je isključeno straničenje, potrebno je pristupiti


strukturama podataka koje se nalaze u kodnom segmentu. Pod pretpostavkom da je čitanje u kodnom
segmentu dozvoljeno (dekriptor kodnog segmenta ima atribut R = 1), objasniti u kojim situacijama je to
moguće realizovati, uzimajući u obzir provere nivoa privilegije. (3 poena)
Odgovor:
a) Učitavanjem segmentnog selektora non-konforming kodnog segmenta u selektor data segmenta
(DS). Za ovakav način čitanja podataka važe pravila pristupa Data segmentu: CPL ≤ DPL.
b) Učitavanjem segmentnog selektora konforming kodnog segmenta u selektor data segmenta
(DS). Uvek je moguće, jer je nivo privilegije konforming segmenta po definiciji jednak CPL.
c) Standardno učitavanje selektrora kodnog segmenta u CS registar, a zatim upotreba segmentnog
prefiksa (CS) za čitanje podataka iz istog kodnog segmenta. U ovom slučaju, DPL kodnog
segmenta je uvek isti kao i CPL (radi se sa istim segmentom).

8. Za operativni sistem Solaris, objasniti šta su to aktivacije raspoređivača (Sheduler Activations).


Odgovor:
Korisničke niti mogu da prave problem prilikom blokirajućeg sistemskog poziva, kada se blokira ceo
proces, a sa njim i korisničke niti koje nisu aktivne. Radi rešavanja ovog problema, kernel koristi
mehanizam aktivacije raspoređivača (Scheduler Activation). Zavisno od vezije Solarisa, upotrebom
SIGWAITING ili Door Upcall, kernel obaveštava raspoređivač u korisničkom prostoru da će nit biti
blokirana.To daje mogućnost biblioteci niti da od kernela zahteva kreiranje nove kernel niti i da unutar
njenog novog lakog procesa (LWP) nastavi sa radom drugih, neblokiranih niti.

9. Pretpostavimo da se program trenutno izvršava u realnom režimu rada i da je pokrenut iz MS-DOS


datoteke tipa COM. Napisati deo kôda koji će inicijalizovati GDT tako da linearne adrese programskog
kôda ostanu iste i nakon prelaska u zaštićeni režim rada. Stavka za kodni segment u GDT data je sa:

SEGMENT DATA
gdt: db 0ffh, 0ffh, 0, 0, 0, 09ah, 0, 0
↑ ↑ ↑ ↑
----------------
Bazna adresa segmenta
Odgovor:

Formiramo baznu adresu sa ofsetom nula baš kao što to radi IA32 u realnom režimu rada.

xor eax,eax
mov eax,cs
shl eax,4 ; Siftovanjem segmentnog registra za 4 mesta ulevo
mov dword [gdt+2],eax ; formira se memorijska (bazna) adresa segmenta
mov byte [gdt+5],09ah ; ponovo atributi zbog prethodne instrukcije

Upisana bazna adresa kodnog segmenta u GDT odgovara tekućoj lineranoj adresi sa ofsetom nula.
Maksimalna veličina segmenta je 64 KB (0ffffh) .

10. U kojoj situaciji program koji ima PL=0 može da preda kontrolu programu koji ima PL=3. (3 poena)
Odgovor: Ako je iz PL=3 pozvan preko Call Gate, Interrupt Gate, upotrebom Fast Call ili je startovan kao
ugnježdeni task, pa izvršava instrukciju RETF (Call Gate), IRET (Interrupt Gate), SYSEXIT/SYSRET
(Fast Call), IRET sa NT=1 (ugnježdeni task), kao i u slučaju kada on sâm startuje task koji ima PL=3.
11. Na jednom procesorskom jezgru izvršava se task kojeg periodično treba istisnuti i zameniti drugim
taskom. Prekid koji potiče od sistemskog časovnika periodično vrši prekidanje izvršavanja prvog taska, a
rutina za obradu prekida, koja nije task, završava se instrukcijom IRET. Kako će se izvršavati drugi task,
kada instrukcija IRET po definiciji vraća kontrolu na mesto prekida, tj. prvom tasku?

Odgovor: Modifikacijom steka. Sa vrha steka će biti uklonjene i sačuvane dve stavke (pop EIP; pop CS) i
stavljene dve nove (push CS; push EIP) koje odgovaraju memorijskoj lokaciji na kojoj nastavlja sa
izvršavanjem drugi task. Prethodno sačuvane stavke biće ponovo stavljene na stek nakon sledećeg
prekida.

12. Pretpostavimo da su u nekom sistemu već inicijalizovane tabele GDT i IDT, kao i da postoje
odgovarajuće rutine za obradu prekida. Segmentni selektori (C_SEL,D_SEL,S_SEL)imaju poznate
vrednosti. U zaštićeni režim ulazi se na sledeći način:

cli ; zabrana prekida


mov eax,cr0
or eax, dword 1
mov cr0,eax
jmp C_SEL:flush
flush:
mov ax,D_SEL
mov ds,ax
mov ax,S_SEL
mov ss,ax

mov ax, 4C00h


int 21h ; programski prekid

Imajući i vidu prvu instrukciju (cli), da li će biti izvršena poslednja instrukcija (INT 21h). Obrazložiti
odgovor.

Odgovor: Biće izvršena jer se zabrana prekida (cli) odnosi samo na hardverske prekide (npr. clock).

13. Rekurzivna funkcija funkcija implementirana je sa namerom da obezbedi uzajamno isključivanje


svojih poziva i da tako bude bezbedna za pozive iz konkurentnih niti koje sadrže ovu funkciju. Objasnite
šta je problem sa ovom implementacijom. (2 poena)

semaphore s;
sema_init(&s,1);

void funkcija (...) {


sema_wait(&s);
...
if (...) funkcija(...);
...
sema_signal(&s);
}
Odgovor:

Problem je to što jedna nit, koja pozove funkciju i uđe u rekurziju, ulazi u uzajamno blokiranje
(deadlock) sama sa sobom. Naime, kada se funkcija pozove iz neke niti, na semaforu se izvršava
operacija wait, što zatvara ulaz u funkciju funkcija za nove pozive. Kada ta nit rekurzivno pozove
funkciju, ponovo se izvršava wait na istom semaforu, što dovodi do blokiranja pozivajuće niti koja
zauvek ostaje blokirana na semaforu koji je sama zatvorila.

14. Ukoliko se kernel izvšava samo na jednom procesorskom jezgru, u kojoj situaciji ima smisla koristiti
spinlock za sinhronizaciju?

Odgovor: Kada je u kernelu dozvoljeno istiskivanje.


15. U sistemu koji podržava virtuelnu memoriju upotrebom straničenja, aktivna su dva procesa. Sistem
poseduje 10 okvira fizičke memorije. Okviri su označeni od 0 do 9, a svaki je veličine 1024 bajtova. Tabele
stranica ova dva procesa prikazane su na slici. Svaka vrsta u tabeli sadrži deskriptor koji se sastoji od
rednog broja okvira i kontrolnih bitova. Ovi bitovi, kada su postavljeni na vrednost 1, znače: A - Stranica je
referencirana (Accessed), D - stranica je prljava (Dirty) i P - stranica je prisutna (Present).

Proces 1 Proces 2
Okvir A D P Okvir A D P
0 6 0 1 1 0 0 0 0 1
1 4 1 1 1 1 7 1 0 1
2 5 1 0 1 2 8 0 0 1
3 0 0 0 0 3 2 0 1 1
4 1 1 0 1 4 0 0 0 0
5 9 1 0 1 5 3 1 1 1

Sistem koristi Global Clock algoritam, koji perodično izvršava pozadinski task (npr. pagedaemon). Na kraju
svakog perioda, algoritam pretražuje polovinu ukupnog broja okvira. Svaka stranica koja je izabrana za
zamenu, stavlja se u listu slobodnih stranica. Kada nastane stranična greška, sistem uzima jednu stranicu iz
liste slobodnih stranica. Kada se okviri koji sadrže prljave stranice stavljaju na listu slobodnih, njihove
stranice se ne čiste, već se snimaju na disk tek kada se zaista zamene novom stranicom.

a) Pretpostavimo da su prikazane tabele stranica sa sadržajem na kraju okreta algroritma i da kazaljka


pokazuje na okvir br. 0 (to znači da će u sledećem krugu algoritam ispitivati stranice 0, 1, 2, 3, 4).
Prikažite sadržaj tabela stranica nakon tog kruga algoritma. Označiti stranice koje će biti dodate na
listu slobodnih stranica.
b) Odmah nakon završetka algoritma zamene, proces 2 pokušava da čita sa virtuelne adrese 4100, što
dovodi do stranične greške. Prikažite sadržaj tabele stranice procesa 2 nakon što je uspešno
završena obrada izuzetka i MMU je uspešno izvršio translaciju adrese. Pretpostavite da lista
slobodnih okvira sadrži one okvire dobijene izvršavanjem algoritma pod tačkom a). Označiti koje
stranice će biti snimljene na disk, a koje stranice učitane sa diska u memoriju. (3 poena)

Odgovor:

a) Okviri 0 i 2 će biti izabrani za zamenu i dodati u listu slobodnih stranica. Nove tabele stranica će
izgledati ovako:

Proces 1 Proces 2
Okvir A D P Okvir A D P
0 6 0 1 1 0 0 0 0 1
1 4 0 1 1 1 7 1 0 1
2 5 1 0 1 2 8 0 0 1
3 0 0 0 0 3 2 0 1 1
4 1 0 0 1 4 0 0 0 0
5 9 1 0 1 5 3 0 1 1

b) Stranica 4 Procesa 2 mora da se učita sa Ako se za zamenu izabere okvir 2, stranica 3


diska u memoriju. Ako se za zamenu izabere Procesa 2 mora da se kopira sa diska u
okvir 0, na disk ne treba naknadno snimati memoriju, pa će nova tabela stranica izgledati
nikakve stranice, a tabela stranica za Proces ovako:
2 će izgledati ovako:

Proces 2 Proces 2
Okvir A D P Okvir A D P
0 0 0 0 0 0 0 0 0 1
1 7 1 0 1 1 7 1 0 1
2 8 0 0 1 2 8 0 0 1
3 2 0 1 1 3 2 0 0 0
4 0 1 0 1 4 0 1 0 1
5 3 0 1 1 5 3 0 1 1
16. Ukoliko vrednost semafora ima pozitivnu vrednost m, to znači da (zaokružiti ono što je tačno):
a. m niti čeka u stanju mrtve petlje (busy waiting)
b. m niti čeka na tom semaforu u blokiranom stanju
c. m instanci zahtevanog resursa je trenutno zauzeto
d. m instanci zahtevanog resursa je trenutno slobodno

17. U redu zahteva za pristup disku nalaze se zahtevi za pristup sledećim cilindrima (po redosledu
pristizanja): 58, 39, 91, 126, 66, 37, 47. Prethodno opsluženi zahtev bio je na cilindru 52, a glava se kreće
prema cilindrima sa većim brojevima. Napisati redosled opsluživanja ovih zahteva ukoliko je algoritam
raspoređivanja: (2 poena)

a) SCAN: 58, 66, 91, 126, 47, 39, 37

b) SSTF: 47, 39, 37, 58, 66, 91, 126

18. Za kakve aplikacije je bitno povećanje brzine odziva, a za kakve je važna što veća iskorišćenost
procesora? (2 poena)

Odgovor:
Algoritmi koji obraćaju pažnju na brzinu odziva okrenuti su interaktivnim aplikacijama. Nasuprot njima su
algoritmi koji maksimizuju iskorišćenost procesora, tj. okrenuti su neinteraktivnim aplikacijama.

19. Opisati ukratko kako funkcioniše Round Robin algoritam raspoređivanja.

Odgovor:
Slično kao FCFS (First Come First Served), međutim svaka nit se izvršava određeni vremenski period
nakon kog se njeno izvršavanje prekida i bira druga nit koja se šalje na izvršavanje. Nitm čije je
izvršavanje prekinuto zbog prekoračenja vremenskog odsečka, šalje se na kraj reda niti koje čekaju na
izvršavanje.

You might also like