ОС1/Јануар 2014
1. zadatak
Postavka
Šta označava termin multiprogramiranje, a šta termin multiprocesiranje?
Rešenje
Multiprogramiranje označava izvršavanje uporedo više procesa na jednom procesoru. Dok jedan proces čeka na izvršavanje I/O operacije, procesor izvršava druge poslove.
Multiprocesiranje označava izvršavanje procesa fizički paralelno na više procesora.
2. zadatak
Postavka
Korišćenjem funkcija setjmp()
i longjmp()
iz standardne C biblioteke, realizovati operaciju yield(jmp_buf old, jmp_buf new)
koja čuva kontekst niti čiji je jmp_buf
dat kao prvi argument, oduzima joj procesor i restaurira kontekst niti čiji je jmp_buf
dat kao drugi argument, kojoj predaje procesor.
Rešenje
void yield(jump_buf old, jump_buf new) {
if(setjmp(old) == 0) {
longjmp(new, 1);
}
}
3. zadatak
Postavka
Na programskom jeziku Java implementirati nit (thread) koja izvršava praznu petlju sve dok joj se pozivom operacije ne kaže da stane. Napisati i kod koji pravi i pokreće N takvih uporednih niti.
Rešenje
public class Main {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
for (int i = 0; i < n; i++) {
Thread thread = new Thread() {
@Override
public void run() {
try {
while(!Thread.interrupted()) {}
} catch(InterruptedException e) {};
}
}
thread.start();
}
}
}
4. zadatak
Postavka
Korišćenjem standardnih brojačkih semafora napisati kod za uslovnu sinhronizaciju dva uporedna procesa od kojih jedan ispunjava neki logički uslov, a drugi ne sme da prođe određenu tačku ako taj uslov nije ispunjen.
Rešenje
var semA : Semaphore := 0;
semB : Semaphore := 0;
flag : boolean := false;
process A:
begin
loop
...
flag = true;
signal(semB);
wait(semA);
end
end
end A;
process B:
begin
loop
wait(semB);
signal(semA);
end
end
end B;
5. zadatak
Postavka
Ako tokom svog prvog prolaza linker u svojoj tabeli pronađe prethodno definisan simbol koji je definisan u tekućem fajlu (izvozi se), da li će prijaviti grešku? Obrazložiti.
Rešenje
Da, jer se već nalazi u tabeli simbola i dolazi do konflikta imena.
6. zadatak
Postavka
Šta je interna fragmentacija kod alokacije memorije? Da li je ona moguća kod kontinualne alokacije memorije?
Rešenje
Interna fragmentacija predstavlja neiskorišćen deo memorije unutar alociranih blokova zbog ograničavanja dozvoljene veličine bloka. Kod kontinualne alokacije postoji problem eksterne ali ne i interne fragmentacije jer proces zauzima tačno onoliko prostora koliko mu je potrebno.
7. zadatak
Postavka
U nekom sistemu sa straničnom organizacijom virtuelne memorije virtuelna adresa je 64-bitna. Posmatraju se dva (teorijska) granična slučaja: a) neki proces koristi ceo svoj virtuelni prostor; b) neki proces koristi samo nekoliko susednih stranica svog virtuelnog prostora. Koji pristup organizacije PMT zauzima manje memorije za PMT za svaki od ova dva slučaja: PMT organizovana u jednom nivou (linearno) ili PMT organizovana u više nivoa? Kratko obrazložiti
Rešenje
Manje prostora bi zauzimala PMT organizovana u jednom nivou jer bi organizovanje u dva nivoa izazvalo alociranje cele tabele prvog i zatim određen broj tabela 2. nivoa.
8. zadatak
Postavka
Kojom tehnikom se može blokovski orijentisani ulazni uređaj koristiti kao znakovno orijentisani ulazni tok? Kratko objasniti kako.
Rešenje
Tehnikom baferisanja: poseban proces koji kontroliše uređaj. Sa uređaja se uzima blok po blok podataka i stavlja u bafer. Korisnik uzima znak po znak kao znakovno orijentisani ulazni tok.
9. zadatak
Postavka
Neki proces izvršava redom sledeće sistemske pozive. Pod pretpostavkom da korisnik u čije ime se izvršava ovaj proces ima pravo pristupa do oba fajla i na čitanje i na upis, i da oba poziva za otvaranje fajlova uspevaju, navesti koji od preostalih poziva će biti uspešan, a koji neuspešan (upisati na liniji pored poziva).
FHANDLE f1 = fopen("x.doc", read);
FHANDLE f2 = fopen("y.doc", read | write);
fread(f1, buffer1, n1);
fwrite(f1, buffer2, n2);
fread(f2, buffer1, n1);
fwrite(f2, buffer2, n2);
Rešenje
Videti zadatak iz junskog roka 2011.
10. zadatak
Postavka
Predložiti i ukratko objasniti neki način vođenja evidencije slobodnih blokova na disku koji ne koristi nikakav dodatni prostor za tu evidenciju (osim tih slobodnih blokova).
Rešenje
Prvi slobodan blok sadrži broj slobodnih blokova i pokazivač na sledeći.