ОС1/Јул 2014
1. zadatak
Postavka
Šta je bio osnovni motiv za uvođenje raspodele vremena (engl. time-sharing) kod interaktivnih sistema? Objasniti.
Rešenje
Videti zadatak iz februarskog roka 2013.
2. zadatak
Postavka
Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati prevod sledeće rekurzivne funkcije:
int fib (int n) {
if (n<=1) return 1;
else return fib(n-1)+fib(n-2);
}
Rešenje
fib: LD R1, #n[SP]
LD R0, #1
CMP R1, R0
JG else
RTS
else: SUB R1, R0
PUSH R1
CALL fib
POP R2
SUB R1, R0
PUSH R1
CALL fib
POP R0
ADD R0, R1
RTS
3. zadatak
Postavka
Ukoliko su svi sistemski pozivi izvršeni uspešno, koliko procesa se ukupno kreira kada se nad sledećim programom kreira jedan proces (računajući i taj jedan)?
void main () {
for (int i=0; i<7; i++)
if (fork()==0)
return;
}
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
4. zadatak
Postavka
Korišćenjem standardnih brojačkih semafora napisati kod tri uporedna procesa koji sarađuju na sledeći način. Proces A upisuje jednu vrednost u deljenu promenljivu x, a nezavisni proces B uporedo upisuje jednu vrednost u deljenu promenljivu y. Proces C potom čita x i y da bi izračunao njihov zbir. Tek kada je C pročitao x, proces A upisuje novu vrednost u x; tek kada je C pročitao vrednost y, proces B upisuje novu vrednost u y, i tako ciklično.
Rešenje
var: sax : Semaphore := 1, scx : Semaphore := 0, sby : Semaphore := 1, sbc : Semaphore := 0;
x, y, z : Integer;
process A:
begin
loop
wait(sax);
x := ...
signal(scx);
end;
end A;
process B:
begin
loop
wait(sby);
y := ...
signal(scy);
end;
end B;
process C:
begin
loop
wait(scx);
z := x;
signal(sax);
wait(scy);
z := z + y;
signal(sby);
end;
end A;
5. zadatak
Postavka
Neki program koristi dve velike strukture podataka naizmenično: najpre za neku složenu obradu koristi samo prvu strukturu, pa onda za neku drugu obradu koristi samo drugu strukturu, pa onda ponovo prvu, pa drugu itd. Ako se ove dve strukture učitavaju dinamički i preklapaju se (kod korišćenja preklopa, overlays), u kom slučaju će izvršavanje tog programa trajati duže, a u kom će koristiti više memorije: kada se koristi samo dinamičko učitavanje, ili kada se koriste preklopi? Kratko obrazložiti.
Rešenje
Kod preklopa će ivršavanje trajati duže zbog toliko učitavanja a dinamičko učitavanje će koristiti više memorije.
6. zadatak
Postavka
Neki sistem primenjuje kontinualnu alokaciju memorije. Kakva je hardverska podrška potrebna za ovaj pristup da bi se obezbedila:
- relokatibilnost procesa
- zaštita memorijskog prostora jednog procesa od drugih procesa?
Rešenje
- relokatibilnost procesa - kompakcija slobodnog prostora -> kernel realocira sve procese tako da ih slaže jedan iza drugog redom tako da sav slobodan prostor fuzioniše u jedan slobodan fragment.
- zaštita memorijskog prostora - limit registar
7. zadatak
Postavka
Učestanost pogotka u TLB je 90%, a PMT je organizovana u tri nivoa. TLB je 10 puta brža nego operativna memorija. Za koliko procenata je efektivan pristup memoriji sporiji od pristupa fizičkoj memoriji?
Rešenje
Odnos: Рашчлањивање није успело (Conversion error. Server ("cli") reported: "[INVALID]"): {\displaystyle (1.4 - 1) / 1 = 40% }
8. zadatak
Postavka
Navesti osnovne operacije klase znakovno-orijentisanih ulazno/izlaznih uređaja (tokova).
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
9. zadatak
Postavka
Neki fajl sistem pruža sledeće operacije u svom API za tekstualne fajlove:
int size(FHANDLE)
Vraća trenutnu veličinu sadržaja fajla u znakovima.void append(FHANDLE,int)
Proširuje sadržaj fajla za dati broj znakova na kraju.void seek(FHANDLE,int)
Postavlja kurzor datog fajla na datu poziciju (redni broj znaka počev od 0).void write(FHANDLE,char*,int size)
Na poziciju kurzora datog fajla upisuje dati niz znakova zadate dužine, i pomera kurzor iza upisanog niza znakova. Operacije seek i write rade samo u opsegu trenutne veličine sadržaja fajla (ne pomeraju kurzor i ne upisuju iza kraja sadržaja fajla).
Napisati operaciju write(FHANDLE,int position,char*,int size);
koja na zadatu poziciju upisuje zadati niz znakova date veličine, pri čemu se fajl implicitno najpre proširuje na potrebnu veličinu ukoliko bi zadata pozicija ili zadati upis prekoračio trenutnu veličinu sadržaja fajla. Zanemariti sve moguće greške u ulazu/izlazu.
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
10. zadatak
Postavka
Objasniti kako se u fajl sistemu tipa FAT vodi evidencija o slobnom prostoru.
Rešenje
Slobodni blokovi se ulančavaju u listu pokazivača koji se nalaze u svakom bloku. Alokacija jednog bloka je jednostavna. Uzima se prvi blok iz liste. FAT varijanta je inherentna - ulazi za slobodne blokove u FAT su posebno označeni.