OS1/Januar 2013

Izvor: SI Wiki
< ОС1
Datum izmene: 18. jul 2022. u 19:16; autor: KockaAdmiralac (razgovor | doprinosi) (Ispravke u formatiranju)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Zadaci na stranici predmeta.

1. zadatak

Postavka

Šta je to multiprocesorski sistem, a šta distribuirani sistem? Navesti po jedan primer svakog.

Rešenje

Videti zadatak iz julskog roka 2012.

2. zadatak

Postavka

Korišćenjem funkcije yield(jmp_buf old, jmp_buf new) koja čuva kontekst jedne niti i predaje procesor drugoj niti, realizovati operaciju wait na brojačkom semaforu u školskom jezgru.

Rešenje

void Semaphore::wait() {
	lock(lck);
	if(--val < 0) {
		jmp_buf old = Thread::running->context;
		blocked.put(Thread::running);
		Thread::running = Scheduler::get();
		jmp_buf new = Thread::running->context;
		yield(old, new);
	}
	unlock(lck);
}

3. zadatak

Postavka

Navesti najmanje tri slučaja (povoda) u kojima proces gubi procesor i prelazi u red suspendovanih (blokiranih) i naznačiti da li se to dešava kao posledica sistemskog poziva tog procesa ili spoljašnjeg prekida

Rešenje

  1. Zbog operacije na sinhronizacionoj primitivi, tj. na semaforu ili događaju
  2. Prilikom eksplicitnog poziva metode koja čeka da se nit/niti završe (poput join)
  3. Pri sinhronoj I/O operaciji, posledica sistemskog poziva tog procesa

4. zadatak

Postavka

Napisati kod koji realizuje Petersonov algoritam međusobnog isključenja dva uporedna procesa pomoću uposlenog čekanja.

Rešenje

shared var turn : integer := 1, flag1, flag2 : boolean := false;
process P1
    begin
        loop
            flag1 = true; turn := 2; 
            while flag2 and turn = 2 do null;
            <critical>
            flag1 := false
            <non-critical>
        end
    end
end P1;

process P2
    begin
        loop
            flag2 = true; turn := 1; 
            while flag1 and turn = 1 do null;
            <critical>
            flag2 := false
            <non-critical>
        end
    end
end P2;

5. zadatak

Postavka

U čemu je razlika između tehnika dinamičkog učitavanja (dynamic loading) i preklopa (overlay)?

Rešenje

Videti zadatak iz julskog roka 2012.

6. zadatak

Postavka

Virtuelni adresni prostor sistema je 8GB, adresibilna jedinica je 16-bitna reč, a virtuelni adresni prostor je organizovan stranično sa stranicom veličine 32KB. Fizički adresni prostor je veličine 2GB. 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

Desiće se "access violation", jer proces ima sve stranice trenutno učitane, ali u njihovim deskriptorima u PMT je zapisano da se u njih ne sme upisivati, operativni sistem pogleda u opise segmenata i vidi da je dozvoljen upis u tu stranicu pa je zaključak da se ona trenutno deli sa nekim drugim procesom, stranica će se kopirati i u tu novu kopiju, čiji je vlasnik trenutni proces, će biti izvršen upis.

8. zadatak

Postavka

Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine sa zadate adrese na izlazni uređaj korišćenjem programiranog ulaza/izlaza sa prozivanjem (polling).

Rešenje

main:   LD R1, blockAddr
        LD R2, cnt
        ST [ctrl], #0..1
wait:   LD R0, [status]
        AND R0, #1..0
        JZ wait
        LD R0, [R1]
        ST [data], R0
        INC R1
        DEC R2
        JNZ wait
        ST [ctrl], #0

9. zadatak

Postavka

Šta je osnovna svrha (motiv) postojanja operacije otvaranja fajla?

Rešenje

Svrha toga jeste da pri svakom obraćanju fajlu ne koristimo njegovo ime već koristimo ID u nizu fajl deskriptora koji sadrže pokazivače na deskriptor u tabeli otvorenih fajlova koja sadrži pokazivač na FCB datog fajla.

10. zadatak

Postavka

Navesti i objasniti neku tehniku organizacije strukture podataka za rukovanje slobodnim prostorom fajl sistema na disku, osim bit-vektora.

Rešenje

Slobodni blokovi se mogu grupisati tako da prvi blok u grupi slobodnih sadrži pokazivač na naredne slobodne blokove.