ОС1/Септембар 2013
1. zadatak
Postavka
Šta je bio osnovni motiv uvođenja multiprogramiranja u do tada paketne računarske sisteme?
Rešenje
Ovo pitanje pojavilo se na septembarskom roku 2011. godine kao 1. pitanje.
2. zadatak
Postavka
Korišćenjem standardnih bibliotečnih funkcija setjmp()
i longjmp()
, realizovati operaciju
void 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(jmp_buf old, jmp_buf new) {
if(setjmp(old) == 0) {
longjmp(new, 1);
}
}
3. zadatak
Postavka
Korišćenjem sistemskih poziva fork()
i execlp()
napisati program run
koji, kada se pokrene kao proces, kreira procese-decu nad svim programima koji se nalaze u fajlovima čija su imena data argumentima programa run
(npr. run p1.exe p2.exe p3.exe
).
Rešenje
int main(int argc, char* argv[]) {
for(int i = 1; i < argc; i++) {
int pid = fork();
if(pid == 0) {
execlp(argv[i]);
return -1;
}
else if(pid < 0)
return -2;
}
return 0;
}
4. zadatak
Postavka
Korišćenjem standardnih brojačkih semafora, napisati kod za inicijalizaciju i potrebnu sinhronizaciju između dva procesa koji u svoje kritične sekcije treba da ulaze strogo naizmeničn
Rešenje
var semA : Semaphore := 1;
semB : Semaphore := 0;
process A:
begin
loop
wait(semA);
<critical>
signal(semB);
<non-critical>
end
end A;
process B:
begin
loop
wait(semB);
<critical>
signal(semA);
<non-critical>
end
end B;
5. zadatak
Postavka
Koju uslugu operativni sistem treba da obezbedi procesima da bi oni koristili preklope (overlays)?
Rešenje
Preklopi ne zahtevaju podršku OS-a. Sve obavlja prevodilac i generisani kod. OS samo obezbeđuje usluge za alokaciju dela virtuelnog adresnog prostora.
6. zadatak
Postavka
Ako je učestanost pogotka u TLB 90%, a vreme pristupa TLB iznosi 20% od vremena pristupa fizičkoj memoriji, koliko (procentualno) je duže efektivno vreme pristupa virtuelnoj memoriji u odnosu na pristup fizičkoj memoriji kod straničenja u dva nivoa?
Rešenje
0.9 * ( 0.2t_ram + t_ram) + 0.1 * ( 0.2t_ram + 3t_ram) = 1.49 t_ram
Odnos: 49%
7. zadatak
Postavka
Šta je svrha tehnike copy-on-write kod stranične organizacije virtuelne memorije?
Rešenje
Služi sa uštedu memorije koja bi se bespotrebno trošila sve dok jedan od procesa ne zatraži promenu te stranice kada se alocira nova stranica i kopira se sadržaj. Ukoliko više procesa dele istu stranicu, samo će onaj koji je napravio izmenu dobiti novu stranicu dok će ostali nastaviti da dele istu stranicu.
8. zadatak
Postavka
Koja je razlika između sinhronog i asinhronog slanja podataka na izlazni uređaj?
Rešenje
Sinhronim slanjem podataka proces zadaje operaciju i po potrebi se suspenduje i nastavlja tek kada se zahtevana operacija završi. Kod asinhronog poziva pozivajući proces samo zadaje operaciju i nastavlja izvršavanje.
9. zadatak
Postavka
U nekom fajl sistemu u sistemskom pozivu za otvaranje fajla proces navodi da li će fajl samo čitati ili ga i na bilo koji način menjati. U zavisnosti od toga, taj sistemski poziv zaključava fajl sa jednim od dve vrste ključa. Ako se fajl otvara samo za čitanje, fajl se zaključava deljenim ključem; ako se fajl otvara za izmenu, zaključava se ekskluzivnim ključem. Ukoliko poziv ne može da se izvrši zbog toga što ključ ne može da se dobije, poziv se otkazuje bez izmena u fajl sistemu i vraća se greška.
Procesi A, B, C i D izvršavaju sistemske pozive otvaranja i zatvaranja istog fajla u sledećem redosledu (neki proces izvršava poziv zatvaranja fajla samo ako ga je uspešno otvorio):
- A: open(READ)
- B: open(WRITE)
- C: open(READ)
- A: close
- C: close
- D: open(WRITE)
Rešenje
Uspešno: 1, 2, 4, 5, 6
Neuspešno: 3
10. zadatak
Postavka
Šta je najveći nedostatak organizacije fajl sistema pomoću FAT?
Rešenje
Veoma velika osetljivost na otkaze. Bilo kakvo oštećenje u FAT uzrokuje štetu. Moguće je uništiti ceo fajlsistem.