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

Operativni Sistemi

Pitanja oktobarski ispitni rok 18.09.2012.


Ispit traje 120 minuta

Pitanja za 1 poen

1. Šta od navedenog generiše asinhroni prekid?

a. Sistemski časovnik int 08h


b. Poziv BIOS servisa int 10h
c. Deljenje nulom int 0h
d. Prekid tastature int 09h
e. Sistemski poziv int 21h

2. Za upravljanje procesima u operativnom sistemu Unix zadužen je kernel. Da li je moguće


kreirati proces u samom kernel prostoru? Obrazložiti odgovor.

Odgovor:

Ne. Procesi pripadaju samo korisničkom prostoru.

3. Kod Intel 8086 arhitekture koriste se 20-bitne linearne adrese pomoću dva 16-bitna registra.
Koliki adresni prostor nam to daje na raspolaganju?

Odgovor:

220b = 1MB

4. Koja od sledećih stanja postoje kod Linux taskova?

a. Ghost
b. Ready
c. Zombie
d. Halt
e. Fork

5. Koliko niti može da se izvršava paralelno u kritičnoj sekciji?

Odgovor:

Samo jedna nit može da se izvršava unutar svoje kritične sekcije u jednom trenutku.

Pitanja za 2 poena

6. Naš program je u realnom režimu rada. Želimo da instaliramo svoju prekidnu rutinu za prekid
17h. Ako znamo da ES registar sadrži vrednost 0, koju asemblersku oznaku ćemo koristiti da
Operativni Sistemi
naznačimo lokaciji u memoriji u koju treba upisati adresu naše rutine?

Odgovor:

[ES:17h*4] za offset i
[ES:17h*4+2] za segment

7. Koja je prednost a koji nedostatak mikrokernel arhitekture u odnosu na monolitnu arhitekturu


jezgra operativnog sistema?

Odgovor:

Prednost: Visoka pouzdanst i robusnost. Pad nekog podistema (npr. drajvera) ne izaziva krah
čitavog sistema.

Nedostatak: Lošije performanse zbog česte promene nivoa privilegije prilikom prenosa poruka
(zavisno od hardverske podrške).

8. Koji nedostatak Mutex mehanizma se rešava uvođenjem Semafora?

Odgovor:

Ako više od dve niti čeka na kritičnu sekciju, kod Mutex ne postoji način da se odredi kojoj niti
treba dodeliti kritičnu sekciju. Ako je dodeljivanje slučajno, neke niti mogu da čekaju suviše
dugo na kritičnu sekciju. Semafor je generalizovano Mutex rešenje koje može da radi za
proizvoljan broj niti na “fer” način (npr. FIFO).

9. Pretpostavimo da operativni sistem deli memoriju na fiksne particije jednake veličine, ali da su
sve particije u jednom trenutku popunjene. U međuvremenu, neophodno je da se startuje jedan
proces koji ne može da se smesti u okviru jedne particije, čak i da je ona prazna. Kako može da
se reši ovaj problem?

Odgovor:

Ukoliko su sve particije zauzete, operativni sistem može da prebaci neki proces na disk
(swap-out), a da zatim, u oslobođenoj particiji, koristi preklapanje (overlay).

10. Koja vrsta fragmentacije se može javiti kod deljenja memorije na particije fiksne veličine, a
koja kod dinamičkog deljenja memorije na particije?

Odgovor:

Kod fiksne veličine particija, javlja se interna fragmentacija, a kod dinamičkog deljenja
memorije na particije javlja se eksterna fragmentacija.
Operativni Sistemi
Pitanja za 3 poena

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

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

int main() {
 pid_t pid1, pid2;
 printf(“A”);
 pid1 = fork();
 pid2 = fork();
 while (0) { }
}

Odgovor:

AAAA

12. Potrebno je upisati jedinicu u svaki element matrice 128 x 128. Veličina stranice memorije je
128, a operativni sistem dodeljuje 64 memorijska okvira celom programu.

int i, j;
int[128][128] data;
for (j=0; j < 128; j++)
for (i=0; i < 128; i++)
data[i][j] = 1;

Matrice se čuvaju u memoriji red po red, tj. u sledećem redosledu: data[0][0], data[0][1], … ,
data[0][127], data[1][0], data[1][1], … , data[127][127].
Koliko grešaka stranice će se dogoditi tokom izvršavanja ovog programa? Objasnite kako taj
broj može da se smanji.

Odgovor:

Izvršenje programa će rezultirati u 16384 (tj. 128 x 128) grešaka stranice. Ovaj broj može da se
smanji na sledeći način:

int i, j;
int[128][128] data;
for (i=0; i < 128; i++)
for (j=0; j < 128; j++)
data[i][j] = 1;

U ovom slučaju, biće samo 128 grešaka stranice, jer se čitav red matrice nalazi unutar stranice.
Operativni Sistemi
13. Navedite i ukratko opišite tri tehnike za izvođenje U/I operacija.

Odgovor:

1) Programirani U/I (Polling) – Procesor boravi u petlji dok čeka završetak operacije. CPU
izdaje U/I komande u ime programa.
2) U/I na bazi prekida – Zadaje se U/I komanda (CPU u ime programa), nastavlja se izvršavanje
instrukcija, a U/I modul (hardver) šalje signal prekida kada je započeta U/I operacija završena.
3) Direktan pristup memoriji (DMA) – DMA modul (hardver) upravlja razmenom podataka
između glavne memorije i U/I modula. Procesor šalje zahtev za prenos bloka podataka DMA
modulu i prekida se samo kada se prenese ceo blok.

14. Napisati deo koda koji, na osnovu sadržaja zaglavlja, ispituje da li je učitani MS-DOS program
tipa COM. Program sa diska je učitan počev od lokacije pocetak.

Odgovor:

MS-DOS ne proverava zaglavlje programa tipa COM već ga odmah startuje od lokacije
pocetak + 100h.

15. Za memorijski sistem sa veličinom stranica 2KB, data je tabela stranica:

Stranica Okvir
0 4
1 7
2 12
3 3
4 1
5 6
6 15

Koje fizičke adrese odgovaraju sledećim logičkim adresama: 550, 5500, 55000
Operativni Sistemi
Odgovor:

fizička adresa = okvir * veličina stranice + offset

550: Broj stranice = 550 div 2048 = 0. Iz tabele, ovo je okvir 4. Offset = 550 mod 2048 = 550.
Fizička adresa = 4 * 2048 + 550.
5500: Broj stranice = 5500 div 2048 = 2. Iz tabele, ovo je okvir 12. Offset = 5500 mod 2048 =
1404. Fizička adresa = 12 * 2048 + 1404
55000: Broj stranice: 55000 div 2048 = 26. Nije validna adresa.

Pitanja za 5 poena

16. Objasniti šta u sledećem listingu radi funkcija b2x. Napisati mogući prototip ove funkcije u
jeziku C.

b2x:
mov si, bx
and word si, 000fh
mov byte al, [char+si]
ret

char:
db '0123456789ABCDEF'

Odgovor:
Vrši konverziju donjeg binarnog nibla koji se prosleđuje preko BX u ASCII vrednost, koja se
vraća preko registra AL. Ovo se može koristiti za sve tipove konverzije iz binarnog formata u
npr. u oktalni, decimalni ili heksadecimalni, o čemu mora da vodi računa funkcja koja poziva
b2x. Mogući prototip: char b2x(int a);

17. Rekurzivna funkcija funkcija implementirana je sa namerom da obezbedi uzajamno


isključivanje svojih poziva i da tako bude bezbedna za pozive iz konkurentnih niti. Objasnite šta
je problem sa ovom implementacijom.

Semaphore s(1); 
 
void funkcija (...) { 
  s.wait();   
  ... 
  if (...) funkcija(...); 
  ... 
  s.signal(); 
}
Operativni Sistemi
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, sa
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.

18. Opisati mehanizam straničenja na zahtev.

Odgovor:

Pokušaj adresiranja stranice koja nije prisutna generiše grešku. Ovaj izuzetak mora da poseduje
svoju stavku u tabeli prekida. Rutina za obradu, na osnovu kôdne oznake greške koju uzima sa
steka, određuje zbog čega je nastala greška a zatim proverava da li je linearna adresa ispravna
(da li je translacija dozvoljena i da li je moguća translacija u fizičku adresu). Ako nije, procesu
se šalje signal ili poruka, nakon čega se on zaustavlja i o tome se ispisuje poruka (Unix Kernel
Panic ili Windows BSOD). Ako je adresa ispravna, rutina proverava da li ima slobodnih okvira
u fizičkoj memoriji. Ako nema, primenjuje neki od algoritama zamene. Sledi blokirajući
sistemski poziv rutine za upis sadržaja okvira na disk. U deskriptor stranice koja je izazvala
izuzetak kopira se adresa izabranog okvira, u stari deskriptor oznaka da stranica nije prisutna, a
u ostatak starog deskriptora lokacija stare stranice na disku. Tekući proces se stavlja u blokirano
stanje čekanja na završetak disk operacije. U međuvremenu se izvršava neki drugi proces. Po
završetku disk operacije upisivanja stranice, blokirani proces se aktivira, a u deskriptor se
upisuje da je stranica čista. Okvir sada može da se koristi za učitavanje nove stranice. Tražena
stranica se pronalazi na disku. Ponovo se koristi blokirajući sistemski poziv za učitavanje sa
diska, tokom koga proces ponovo blokira, a neki drugi se izvršava. Kada se završi učitavanje
stranice, ažurira se odgovarajuća tabela stranica. Programski brojač na steku ponovo se
postavlja na instrukciju koja je napravila straničnu grešku. Proces se prebacuje u stanje
spreman. Nastavalja se izvršavanje rutine za obradu stranične greške, koja se na svom izlazu
vraća procesu kao da se greška nije ni dogodila.

19. Predstaviti sva stanja memorijskog prostora od 1MB, u kojem se koristi buddy sistem za
dodeljivanje memorijskih particija, ako je poznato da su se dogodili sledeći događaji:

1) Zahtev 200K ( A )
2) Zahtev 50K ( B )
3) Zahtev 350K ( C )
4) Oslobađanje 200K ( A )
5) Zahtev 100K ( D )
6) Zahtev 70K ( E )
7) Oslobađanje 50K ( B )
8) Oslobađanje 350K ( C )
9) Oslobađanje 70K ( E )
Operativni Sistemi
10) Oslobađanje 100K ( D )

Odgovor:

1M

A 256K 512K

A B 64K 128K 512K

A B 64K 128K C

256K B 64K 128K C

D 128K B 64K 128K C

D E B 64K 128K C

D E 256K C

D E 256K 512K

D 128K 256K 512K

1M

You might also like