ОС1/Септембар 2013
1. zadatak
Postavka
Šta je bio osnovni motiv uvođenja multiprogramiranja u do tada paketne računarske sisteme?
Rešenje
Videti prvi zadatak sa septembarskog roka 2011. godine.
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 oldBuf, jmp_buf newBuf) {
if (setjmp(oldBuf) == 0) {
longjmp(newBuf, 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
end A;
process B:
begin
loop
wait(semB);
<critical>
signal(semA);
<non-critical>
end
end
end B;
5. zadatak
Postavka
Koju uslugu operativni sistem treba da obezbedi procesima da bi oni koristili preklope (overlays)?
Rešenje
Videti rešenje 5. zadatka iz jula 2013. godine.
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
Odnos: 40%
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, 3, 4, 5, 6
- Neuspešno: 2
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.