ОС1/Јул 2012
1. zadatak
Postavka
Šta je to multiprocesorski sistem, a šta distribuirani sistem? Navesti po jedan primer svakog.
Rešenje
Multiprocesorski sistem je računarski sistem sa više procesora koji imaju zajedničku (deljenu) operativnu memoriju. Procesori mogu da pristupaju toj deljenoj memoriji tj. da čitaju iz nje i u nju upisuju, npr. preko zajedničke magistrale. Primer bi bio današnji personalni računar.
Distribuirani sistem je sistem sa više procesora koji nemaju zajedničku operativnu memoriju, već svaki procesor ima svoju, ali su povezani komunikacionom mrežom preko koje mogu razmenjivati poruke. Primer: LAN mreža u nekom preduzeću, cloud servisi...
2. zadatak
Postavka
Korišćenjem funkcija setjmp
i longjmp
iz standardne C biblioteke realizovati operaciju wait
na brojačkom semaforu u školskom jezgru
Rešenje
void Semaphore::wait() {
lock();
if (--val < 0) {
if (setjmp(Thread::running->context) == 0) {
blocked.put(Thread::running);
Thread::running = Scheduler::get();
longjmp(Thread::running->context, 1);
}
}
unlock();
}
3. zadatak
Postavka
Navesti najmanje tri slučaja (povoda) u kojima proces gubi procesor i prelazi u red spremnih (ready) i naznačiti da li se to dešava kao posledica sistemskog poziva tog procesa ili spoljašnjeg prekida.
Rešenje
- Dispatch - sistemski poziv
- Zbog isteka dodeljenog vremena - tajmer generiše prekid, asinhrono
- Usled neke havarije skače se na kod kernela a proces se stavlja u raspoređivač - javlja se usled prekida
4. zadatak
Postavka
Ograničeni bafer je implementiran pomoću brojačkih semafora na sledeći način (ostatak klase je definisana na očigledan način, kao na predavanjima). Šta je problem sa ovom implementacijom?
void BoundedBuffer::append (Data* d) {
mutex.wait();
spaceAvailable.wait();
buffer[tail] = d;
tail = (tail+1)%N;
itemAvailable.signal();
mutex.signal();
}
Rešenje
U slučaju da je bafer bio pun a proizvođač pokušava da upiše podatak, zablokiraće se na spaceAvailable
semaforu. Potrošač će se zablokirati na ulazu u kritičnu sekciju i doći će do mrtvog blokiranja.
5. zadatak
Postavka
Po čemu se razlikuje posao linkera kada je njegov proizvod izvršivi program od onoga kada je to biblioteka?
Rešenje
Drugačiji je proizvod. Kod je binaran kod exe, nema zaglavlje i nema nerazrešenih simbola. .lib
može da ima simbole koje uvozi i koji ostaju nerazrešeni i uvek ima zaglavlje sa simbolima koje izvozi.
6. zadatak
Postavka
Virtuelni adresni prostor sistema je 4GB, adresibilna jedinica je bajt, a virtuelni adresni prostor je organizovan stranično sa stranicom veličine 16KB. Fizički adresni prostor je veličine 1GB. 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
Pri pozivanju fork()
, proces dete deli sve stranice sa roditeljem, ne kopiraju se. Sve stranice u svojim deskriptorima će imati prava i upisa i čitanja. Dokle god oba procesa samo čitaju podatke ne pravi se kopija za proces dete. Kada bilo ko zatraži upis generiše se izuzetak i stranica se kopira.
8. zadatak
Postavka
Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program i prekidnu rutinu koja prenosi blok podataka zadate dužine sa zadate adrese na izlazni uređaj korišćenjem programiranog ulaza/izlaza sa prekidom.
Rešenje
main: LD R1, blockAddr
LD R2, cnt
LD R3, #0
ST [ctrl], #0..1
wait: CMP R3, #1
JNZ wait
HALT
intr: LD R0, [R1]
ST [data], R0
INC R1
DEC R2
JNZ ret
LD R3, #1
ST [ctrl], #0
ret: RTI
9. zadatak
Postavka
Šta je po vašem mišljenju osnovna svrha (motiv) postojanja koncepta tekućeg direktorijuma procesa?
Rešenje
Relokatibilnost procesa.
10. zadatak
Postavka
Zašto fajl sistemi po pravilu pokušavaju da alociraju susedne blokove na disku za sadržaj istog fajla, čak i ako to nije neophodno za datu alokaciju (ulančanu ili indeksnu)?
Rešenje
Alociraju se susedni blokovi za isti fajl da bi vreme pristupa bilo što kraće, tj. da bi se glava hard diska što manje pomerala.