Professional Documents
Culture Documents
08.2008. Septembar 2010 - Resenja
08.2008. Septembar 2010 - Resenja
08.2008. Septembar 2010 - Resenja
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
#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
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.
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:
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).
semaphore s;
sema_init(&s,1);
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?
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.
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
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)
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.
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.