ОС1/Јануар 2013

Извор: SI Wiki
< ОС1
Датум измене: 18. јул 2022. у 19:16; аутор: KockaAdmiralac (разговор | доприноси) (Ispravke u formatiranju)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Задаци на страници предмета.

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. задатак

Поставка

Навести најмање три случаја (повода) у којима процес губи процесор и прелази у ред суспендованих (блокираних) и назначити да ли се то дешава као последица системског позива тог процеса или спољашњег прекида

Решење

  1. Због операције на синхронизационој примитиви, тј. на семафору или догађају
  2. Приликом експлицитног позива методе која чека да се нит/нити заврше (попут join)
  3. При синхроној 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. задатак

Поставка

Навести и објаснити неку технику организације структуре података за руковање слободним простором фајл система на диску, осим бит-вектора.

Решење

Слободни блокови се могу груписати тако да први блок у групи слободних садржи показивач на наредне слободне блокове.