ОС1/Јануар 2013
1. задатак
Поставка
Шта је то мултипроцесорски систем, а шта дистрибуирани систем? Навести по један пример сваког.
Решење
Видети задатак из јулског рока 2012.
2. задатак
Поставка
Коришћењем функције yиелд(јмп_буф олд, јмп_буф неw)
која чува контекст једне нити и предаје процесор другој нити, реализовати операцију wait
на бројачком семафору у школском језгру.
Решење
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. задатак
Поставка
Навести најмање три случаја (повода) у којима процес губи процесор и прелази у ред суспендованих (блокираних) и назначити да ли се то дешава као последица системског позива тог процеса или спољашњег прекида
Решење
- Због операције на синхронизационој примитиви, тј. на семафору или догађају
- Приликом експлицитног позива методе која чека да се нит/нити заврше (попут
join
) - При синхроној I/О операцији, последица системског позива тог процеса
4. задатак
Поставка
Написати код који реализује Петерсонов алгоритам међусобног искључења два упоредна процеса помоћу упосленог чекања.
Решење
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. задатак
Поставка
У чему је разлика између техника динамичког учитавања (дyнамиц лоадинг) и преклопа (оверлаy)?
Решење
Видети задатак из јулског рока 2012.
6. задатак
Поставка
Виртуелни адресни простор система је 8ГБ, адресибилна јединица је 16-битна реч, а виртуелни адресни простор је организован странично са страницом величине 32КБ. Физички адресни простор је величине 2ГБ. Табеле пресликавања страница су организоване у два нивоа, с тим да табела првог нивоа има 2К улаза. Приказати логичку структуру виртуелне адресе и означити ширину сваког поља. Означити и поделу поља за број странице на поља за индексирање ПМТ првог и другог нивоа.
Решење
- ПА: фраме(16), оффсет(14)
- ВА: ПМТ1(11), ПМТ2(7), оффсет(14)
7. задатак
Поставка
Неки систем са страничном организацијом меморије користи технику цопy он wрите. Један процес је тек креирао други процес позивом fork()
. Ако новокреирани процес одмах по покретању изврши операцију уписа у меморију, који изузетак ће генерисати процесор, паге фаулт или неки други и који? Прецизно објаснити зашто и како.
Решење
Десиће се "аццесс виолатион", јер процес има све странице тренутно учитане, али у њиховим дескрипторима у ПМТ је записано да се у њих не сме уписивати, оперативни систем погледа у описе сегмената и види да је дозвољен упис у ту страницу па је закључак да се она тренутно дели са неким другим процесом, страница ће се копирати и у ту нову копију, чији је власник тренутни процес, ће бити извршен упис.
8. задатак
Поставка
На асемблеру неког замишљеног РИСЦ процесора са ЛОАД/СТОРЕ архитектуром написати програм који преноси блок података задате дужине са задате адресе на излазни уређај коришћењем програмираног улаза/излаза са прозивањем (поллинг).
Решење
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. задатак
Поставка
Шта је основна сврха (мотив) постојања операције отварања фајла?
Решење
Сврха тога јесте да при сваком обраћању фајлу не користимо његово име већ користимо ИД у низу фајл дескриптора који садрже показиваче на дескриптор у табели отворених фајлова која садржи показивач на ФЦБ датог фајла.
10. задатак
Поставка
Навести и објаснити неку технику организације структуре података за руковање слободним простором фајл система на диску, осим бит-вектора.
Решење
Слободни блокови се могу груписати тако да први блок у групи слободних садржи показивач на наредне слободне блокове.