ОС1/Јануар 2013 — разлика између измена
(→Rešenje: Додат још један разлог блокирања процеса (трећи), чекање на И/О) |
(→Rešenje: Опис copyOnWrite) |
||
Ред 87: | Ред 87: | ||
Neki sistem sa straničnom organizacijom memorije koristi tehniku ''copy on write''. Jedan proces je tek kreirao drugi proces pozivom <code>fork()</code>. 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. | Neki sistem sa straničnom organizacijom memorije koristi tehniku ''copy on write''. Jedan proces je tek kreirao drugi proces pozivom <code>fork()</code>. 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 === | === Rešenje === | ||
Десиће се "access violeation", јер процес има све странице тренутно учитане, али у њиховим дескрипторима у PMT je записано да се у њих несме уписивати, ОС погледа у описе сегмената и види да је дозвољен упис у ту страницу па је закључак да се она тренутно дели са неким другим процесом, страница ће се копирати и у ту нову копију, чији је власник тренутни процес, ће бити извршен упис. | |||
== 8. zadatak == | == 8. zadatak == |
Верзија на датум 3. октобар 2021. у 14:38
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
- Zbog operacije na sinhronizacionoj primitivi, tj. na semaforu ili događaju
- Prilikom eksplicitnog poziva metode koja čeka da se nit/niti završe (join npr.)
- Pri sinhronoj I/O operaciji, posledica sistemskopg 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 P1;
process P2
begin
loop
flag2 = true; turn := 1;
while flag1 and turn = 1 do null;
<critical>
flag2 := false
<non-critical>
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 stranicomveličine 32KB. Fizički adresni prostor je veličine 2GB. Tabele preslikavanja stranica su organizovaneu dva nivoa, s tim da tabela prvog nivoa ima 2K ulaza. Prikazati logičku strukturu virtuelneadresei označiti širinu svakog polja. Označiti i podelu polja za broj stranice na polja zaindeksiranje 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
Десиће се "access violeation", јер процес има све странице тренутно учитане, али у њиховим дескрипторима у PMT je записано да се у њих несме уписивати, ОС погледа у описе сегмената и види да је дозвољен упис у ту страницу па је закључак да се она тренутно дели са неким другим процесом, страница ће се копирати и у ту нову копију, чији је власник тренутни процес, ће бити извршен упис.
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 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.