ОС1/Јул 2012

Извор: SI Wiki
< ОС1
Датум измене: 10. јун 2023. у 17:05; аутор: Andrej Šolaja (разговор | доприноси) (→‎Rešenje)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Zadaci na stranici predmeta.

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

  1. Dispatch - sistemski poziv
  2. Zbog isteka dodeljenog vremena - tajmer generiše prekid, asinhrono
  3. 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.