OS1/Januar 2013
1. zadatak
Postavka
Šta je to multiprocesorski sistem, a šta distribuirani sistem? Navesti po jedan primer svakog.
Rešenje
Videti zadatak iz julskog roka 2012.
2. zadatak
Postavka
Korišćenjem funkcije yield(jmp_buf old, jmp_buf new)
koja čuva kontekst jedne niti i predaje procesor drugoj niti, realizovati operaciju wait
na brojačkom semaforu u školskom jezgru.
Rešenje
void Semaphore::wait() {
lock(lck);
if(--val < 0) {
jmp_buf old = Thread::running->context;
blocked.put(Thread::running);
Thread::running = Scheduler::get();
jmp_buf new = Thread::running->context;
yield(old, new);
}
unlock(lck);
}
3. zadatak
Postavka
Navesti najmanje tri slučaja (povoda) u kojima proces gubi procesor i prelazi u red suspendovanih (blokiranih) i naznačiti da li se to dešava kao posledica sistemskog poziva tog procesa ili spoljašnjeg prekida
Rešenje
- Zbog operacije na sinhronizacionoj primitivi, tj. na semaforu ili događaju
- Prilikom eksplicitnog poziva metode koja čeka da se nit/niti završe (poput
join
) - Pri sinhronoj I/O operaciji, posledica sistemskog poziva tog procesa
4. zadatak
Postavka
Napisati kod koji realizuje Petersonov algoritam međusobnog isključenja dva uporedna procesa pomoću uposlenog čekanja.
Rešenje
shared var turn : integer := 1, flag1, flag2 : boolean := false;
process P1
begin
loop
flag1 = true; turn := 2;
while flag2 and turn = 2 do null;
<critical>
flag1 := false
<non-critical>
end
end
end P1;
process P2
begin
loop
flag2 = true; turn := 1;
while flag1 and turn = 1 do null;
<critical>
flag2 := false
<non-critical>
end
end
end P2;
5. zadatak
Postavka
U čemu je razlika između tehnika dinamičkog učitavanja (dynamic loading) i preklopa (overlay)?
Rešenje
Videti zadatak iz julskog roka 2012.
6. zadatak
Postavka
Virtuelni adresni prostor sistema je 8GB, adresibilna jedinica je 16-bitna reč, a virtuelni adresni prostor je organizovan stranično sa stranicom veličine 32KB. Fizički adresni prostor je veličine 2GB. Tabele preslikavanja stranica su organizovane u dva nivoa, s tim da tabela prvog nivoa ima 2K ulaza. Prikazati logičku strukturu virtuelne adrese i označiti širinu svakog polja. Označiti i podelu polja za broj stranice na polja za indeksiranje PMT prvog i drugog nivoa.
Rešenje
- PA: frame(16), offset(14)
- VA: PMT1(11), PMT2(7), offset(14)
7. zadatak
Postavka
Neki sistem sa straničnom organizacijom memorije koristi tehniku copy on write. Jedan proces je tek kreirao drugi proces pozivom fork()
. Ako novokreirani proces odmah po pokretanju izvrši operaciju upisa u memoriju, koji izuzetak će generisati procesor, page fault ili neki drugi i koji? Precizno objasniti zašto i kako.
Rešenje
Desiće se "access violation", jer proces ima sve stranice trenutno učitane, ali u njihovim deskriptorima u PMT je zapisano da se u njih ne sme upisivati, operativni sistem pogleda u opise segmenata i vidi da je dozvoljen upis u tu stranicu pa je zaključak da se ona trenutno deli sa nekim drugim procesom, stranica će se kopirati i u tu novu kopiju, čiji je vlasnik trenutni proces, će biti izvršen upis.
8. zadatak
Postavka
Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine sa zadate adrese na izlazni uređaj korišćenjem programiranog ulaza/izlaza sa prozivanjem (polling).
Rešenje
main: LD R1, blockAddr
LD R2, cnt
ST [ctrl], #0..1
wait: LD R0, [status]
AND R0, #1..0
JZ wait
LD R0, [R1]
ST [data], R0
INC R1
DEC R2
JNZ wait
ST [ctrl], #0
9. zadatak
Postavka
Šta je osnovna svrha (motiv) postojanja operacije otvaranja fajla?
Rešenje
Svrha toga jeste da pri svakom obraćanju fajlu ne koristimo njegovo ime već koristimo ID u nizu fajl deskriptora koji sadrže pokazivače na deskriptor u tabeli otvorenih fajlova koja sadrži pokazivač na FCB datog fajla.
10. zadatak
Postavka
Navesti i objasniti neku tehniku organizacije strukture podataka za rukovanje slobodnim prostorom fajl sistema na disku, osim bit-vektora.
Rešenje
Slobodni blokovi se mogu grupisati tako da prvi blok u grupi slobodnih sadrži pokazivač na naredne slobodne blokove.