Professional Documents
Culture Documents
OS Jun 2016 Odgovori
OS Jun 2016 Odgovori
OS Jun 2016 Odgovori
#include <sys/types.h>
#include <stdio.h>
int main(){
pid_t pid;
printf("RAF");
pid = fork();
if (pid == 0) fflush(stdout);
else wait(NULL);
}
Odgovor: RAFRAF
Odgovor:
U prvom sistemu broj okvira je 512/4 = 128, dok je kod drugog sistema broj okvira 512/8 = 64. U oba
slučaja broj okvira je jednak odgovarajućem broju stranica za dati sistem. Kada je broj okvira jednak
broju stranica, broj straničnih grešaka nije nula, već je jednak broju okvira koji su u početnom
trenutku prazni. Razlog za to je što svaka stranica koja se po prvi put referencira, tog trenutka nije u
memoriji. Prema tome, apsolutni minimum straničnih grešaka je 128 kod prvog sistema i 64 kod
drugog sistema.
3. Napisati deo NASM kôda koji će prekidnu rutinu timer pozvati kao da je obična funkcija, bez obzira
što je u pitanju prekidna rutina i što se završava sa IRET.
Odgovor:
pushf
push cs
call timer
Po završetku prekidne rutine, izvršavanjem instrukcije IRET, sa steka se skidaju vrednosti IP, CS i
FLAGS, pa se kontrola toka programa vraća pozivaocu.
4. Kolika je veličina linearnog adresnog prostora mikroprocesora iz klase IA32, ako se on nalazi u
realnom režimu rada? Obrazložiti odgovor.
Odgovor:
Maksimalna veličina lineranog adresnog prostora dobija se postavljanjem segmentnog registra (SR)
i ofset registra (OR) tako da sadrže sve jedinice, tj. SR = FFFF i OR = FFFF. Zatim se SR šiftuje za
četiri bita ulevo (pomnoži sa 16d) i sabere sa OR, tj. FFFF0 + FFFF = 10FFEF, što odgovara
prostoru od 1MB + 64kB = 1088kB. Naravno, procesor u realnom režimu rada može da adresira
samo prvih 1MB jer ima na raspolaganju 20 fizičkih adresnih linija (A0 – A19).
Operativni sistemi
5. Koji problemi mogu da nastanu upotrebom korisničke bibloteke niti kod višeprocesorskog sistema
koji ih mapira kao jednu kernelovu nit?
Odgovor:
a) U slučaju sinhronog (blokirajućeg) sistemskog poziva, blokiraju se sve korisničke niti bez obzira
kod koje je nastao ovaj poziv.
b) Operativni sistem ne može da pošalje neku specifičnu nit na izvršavanje nakon nastanka nekog
događaja.
c) Korisničke niti se ne mogu izvršavati na različitim procesorskim jezgrima.
Odgovor:
1:200 Ilegalna adresa
2:196 Ilegalna adresa
3:200 2500
4:200 401
5:196 1523
cli
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
Imajući i vidu prvu instrukciju za zabranu svih prekida (cli), da li će biti izvršena poslednja
instrukcija (int 21h)? Obrazložiti odgovor.
Odgovor:
Izvršiće se, bez obzira na eventualno mapiranje IRQ1 u INT21h (tastatura), jer je u pitanju softverski
(sinhroni) “poziv” prekida.
Operativni sistemi
8. Na sledećem listingu prikazan je početak boot sektora FAT16 diska sa koga se podiže operativni
sistem. Navesti brojnu vrednost kodnog segmenta u kome će početi izvršavanje funkcije main?
Obrazložiti odgovor.
main:
push cs
pop ds
...
Odgovor:
Pre izvršenja funkcije main, program se kompletno relocira iz boot oblasti u oblast 640KB - 512
bajtova. Bazna adresa ovog dela memorije je 9FE00h, što znači da je njegova segmentna adresa
9FE0h, pa je i segmenta adresa funkcije main 9FE0h.
9. Objasniti ukratko koji proces kod operativnih sistema Unix i Linux ima PID = 0.
Odgovor:
U pitanju je proces pod nazivom swapper kod sistema BSD Unix ili shed kod Unix System V. U
principu, to i nije proces u klasičnom smislu jer ne pripada korisničkom prostoru, već kernelu.
Njegova istorijska uloga je učitavanje ili snimanje na disk celokupnih korisničkih procesa (swap-in i
swap-out), kada je to bilo potrebno, tj. kada je nedostajala fizička memorija kod multiprogramskih
sistema. Upotrebom straničenja na zahtev, swapper je izgubio svoju originalnu funkciju. Međutim, to
je i dalje proces u kernelovom prostoru koji nastaje iz niti boot procesa i koji forkuje prvi korisnički
proces init (PID = 1), kao i još neke sistemske procese (vmdaemon, pagedaemon ...).
Kod sistema Linux, proces čiji je PID = 0 je idle task, tj. proces koji se izvršava kada nijedan drugi
proces nije spreman.
Operativni sistemi
10. U nekom sistemu sa straničnom organizacijom virtuelne memorije u datom trenutku raspored
stranica tri procesa po okvirima u fizičkoj memoriji izgleda ovako:
Okvir 1 2 3 4 5 6 7 8 9
Korisnik K B2 A1 C3 C0 DLL B0 K K
Slova A, B i C označavaju procese kojima pripadaju stranice u tim okvirima, brojevi označavaju
brojeve stranica tih procesa, K označava okvir koji pripada kernelu operativnog sistema, a DLL
označava okvir čiji je sadržaj dinamička biblioteka koju koriste sva tri procesa A, B i C.
U virtuelnom adresnom prostoru procesa A dati DLL se nalazi na stranici broj 3, a u prostorima
procesa B i C na stranici broj 4. Napisati kako izgledaju tabele preslikavanja stranica za sva tri
procesa A, B i C. U tabelu upisati brojeve okvira i T ili F kao oznaku da li je stranica u memoriji ili
ne, za prvih 6 stranica.
Stranica 0 1 2 3 4 5
Proces A F T2 F T5 F F
Proces B T6 F T1 F T5 F
Proces C T4 F F T3 T5 F