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

Operativni sistemi

Odgovori         februarski ispitni rok (akademske studije) 2010/2011 

Pitanja za 2 poena

1. Pored TID (task ID), navesti još dve stvari koje su jedinstvene za svaki task.  

Odgovor: Kontekst i stek. 


 

2. U sistemu datoteka FAT16, sa klasterima veličine 1KB, nalazi se datoteka KERNEL.SYS. Odrediti
kolika je njena interna fragmentacija. Napomena: EOC = 0FFF8h
direktorijumska stavka
ime start veličina atributi
KERNEL  SYS  006A  1BA5  ... 

FAT (u brojevima klastera izostavljene su prve dve vodeće nule)


65 66 67 68 69 6A … 92 93 94 95 96 97 98 99 9A 9B
46 EOC 00 45 00 97 … 57 96 00 EOC 99 98 93 66 57 00

Odgovor: Datoteka zauzima 7 klastera (66, 6A, 93, 96, 97, 98, 99). Broj bajtova koje zauzima
datoteka je 7 x 400h = 1C00h, pa je interna fragmentacija 1C00h -1BA5h = 5Bh (91 bajt).

3. Data je tabela deskriptora segmenata:


Deskriptor
Selektor
Bazna adresa segmenta Dužina segmenta
1 219 196
2 1327 196
3 2300 410
4 101 101
5 1327 580
Koje linearne adrese odgovaraju sledećim logičkim adresama:

1:60 279
2:169 1496
3:230 2530
4:100 201
5:196 1523

4. Popuniti sledeću tabelu odgovorima DA ili NE.

Operacija Istiskivanje Blokiranje


Izvršavanje niti
U prostoru kernela DA DA
U toku hardverskog prekida DA DA

RAF.08.2008.I2A.2010
Operativni sistemi
5. Za dodeljivanje memorije u kernelu operativnog sistema primenjuje se partnerski sistem (Buddy).
U nekom trenutku stanje zauzetosti prikazano je na donjoj slici (prikazani su blokovi i njihove
veličine izražene u broju stranica; osenčeni blokovi su zauzeti, beli su slobodni). Prikazati na isti
način stanje nakon dodeljivanja memorije veličine a) 1 stranice, a zatim b) još 1 stranice.

8 1 1 2 4 8 8

Odgovor:

a)
8 1 1 2 4 8 8

b)
8 1 1 1 1 4 8 8

Pitanja za 3 poena

6. U kojoj situaciji program koji ima PL=3 može da preda kontrolu programu koji ima PL=0 uz
mogućnost prenošenja parametara? Objasniti kako se prenose ovi parametri.

Odgovor: Ako je program koji ima PL=0 pozvan upotrebom Call Gate. Parametri se prenose
preko steka i to tako što se vrši automatsko kopiranje sa steka niže privilegije na stek
više privilegije. Broj parametara koji se ovako kopira određen je sadržajem polja u
Call Gate deskriptoru (to je polje WC čija je maksimalna vrednost 25 - 1 = 31).

7. Navedite najmanje tri atributa Unix procesa koji nisu istovremeno atributi njegove osnovne niti.

Odgovor: Grupni ID, tekući direktorijum, korenski direktorijum, ID sesije, kontrolni terminal,
otvorene datoteke, dostupni resursi, identifikator procesa (PID) ...

8. 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.
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).

RAF.08.2008.I2A.2010
Operativni sistemi
9. U sistemu datoteka FAT32, sa klasterima veličine 2KB, nalazi se datoteka veličine 11967 bajtova.
Datoteka zauzima 6 klastera.
a. Koliko blokova veličine 512 bajtova zauzima ova datoteka?
b. Kolika je interna fragmentacija za ovu datoteku?
c. Ako je kapacitet sistema datoteka 2 GB, odredite veličinu FAT tabele.

Odgovor:

a. Datoteka zauzima 6 klastera, a to je 6 × 2048/512 = 24 bloka.


b. Interna fragmentacija je 6 × 2048 – 11967 = 321 bajt.
c. Broj klastera = kapacitet sistema datoteka / veličina klastera = 2 GB / 2 KB = 1048576
klastera. FAT 32 ima 4 bajta (32 bita) po jednoj svojoj stavci. Veličina FAT tabele =
broj klastera × broj bajtova po jednoj stavci FAT = 1048576 × 4 = 4 MB.

10. Navesti tri stanja u kojima može da se nadje kernel nit (kernel thread), bez obzira na implementaciju
operativnog sistema. Nacrtati dijagram stanja i obeležiti uslove za prelazak između stanja.

Odgovor: switch
1) Stanje nespremnosti za izvršenje
2) Stanje spremnosti za izvršenje 2 3
preempt
3) Stanje izvršenja

• switch = zamena konteksa (dispatch)


• preempt = istiskivanje (prioritetno ili vremenski wakeup wait
kvantum)
• wait = blokirajući sistemski poziv
• wakeup = nastanak događaja na koji se čeka u 1
blokiranom stanju

Pitanja za 5 poena

11. Imajući u vidu da PSP kod DOS datoteke tipa COM počinje od lokacije 81h, objasniti šta radi
sledeći deo kôda:

org 100h 
 
mov  ch, 01h  ; Maksimalni broj ponavljanja instrukcije sa prefiksom rep__ 
mov  di, 81h 
mov  al, ' ' 
repe  scasb 
lea  dx, [di‐1] 
dec  di 
mov  al, 13 
repne  scasb 
mov  byte [di‐1], 0 

Odgovor: Parsuje komandnu liniju za argument COM datoteke zadat preko komandne linije. Ovaj
argument postaje string koji počinje od lokacije na koju pokazuje registar DX, a završava se nulom.

RAF.08.2008.I2A.2010
Operativni sistemi
12. 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!
 
mem_velicina    equ  512    ; Velicina memorije u KB 
stek_velicina    equ  1024    ; Velicina boot steka u bajtovima 
 
  mov  ax, mem_velicina 
shl  ax, 6            
sub  ax, 32     
mov  es, ax           
sub  ax, stek_velicina / 16    
mov  ss, ax 
mov  sp, stek_velicina         
mov  cx, 512           
mov  si, 7C00h         
xor  di, di            
mov  ds, di            
rep  movsb             
push  es                
push  word main         
retf 
   main:                            
push  cs 
pop  ds                
  ... 

Odgovor: Pre izvršenja funkcije main, program se kompletno relocira iz boot oblasti u oblast
512KB - 512 bajtova. Bazna adresa ovog dela memorije je 7FE00h, što znači da je
njegova segmentna adresa 7FE0h, pa je i segmenta adresa funkcije main 7FE0h.

13. Pretpostavimo da su u nekom sistemu sa procesorom arhitekture IA32 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         
  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       

Objasniti ulogu instrukcije jmp C_SEL:flush imajući i vidu da je to praktično skok na sledeću


instrukciju, koja bi se izvršila i da nema navedene instrukcije.  

Odgovor: Instrukcija predstavlja međusegmentni skok (iako ostajemo u istom segmentu) koji
automatski prazni prefetch queue, čiji sadržaj ne može da se koristi u trenutku
prelasaka u zaštićeni režim rada.

RAF.08.2008.I2A.2010
Operativni sistemi
14. Napisati deo koda koji realizuje jednostavni kružni raspoređivač sched. Svi TSS segmenti taskova
su inicijalizovani. Selektor nultog taska učitan je u registar TR kao i u varijablu task. Selektori
ostalih taskova nalaze se redom iza slektora nultog taska.  
 
TASK_0    equ   32    ; Selektor taska 0 
TASKOVA    equ  4    ; Broj taskova 
deskriptor  equ  8    ; Velicina task deskriptora 
 
SEGMENT DATA 
task:  dw 0 
 
SEGMENT CODE 
sched: 
 
add  word [task], deskriptor                    
cmp  byte [task], TASK_0+(TASKOVA‐1)*deskriptor  
jle   .dispatch 
mov  word [task], TASK_0 
 
   .dispatch:  
jmp far [task‐2] 
ret 
 

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

fun: mov      si, bx 
     and word si, 000fh   
     mov byte al, [tab+si]       
     ret                          
tab: 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 fun. Mogući prototip: char fun(int a);

RAF.08.2008.I2A.2010

You might also like