ОС1/Јул 2017

Извор: SI Wiki
< ОС1
Датум измене: 7. јул 2021. у 13:10; аутор: Duke (разговор | доприноси) (dodata resenja, valjda dobra)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

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

1. задатак

Поставка

Шта је хард, а шта софт систем за рад у реалном времену (реал-тиме сyстем)?

Решење

Тврди системи за рад у реалном времену су систему у којима одзив мора да стигне у одређеном времену (деадлине). Прекорачење може довести до резличитих катастрофа. Меки системи за рад у реалном времену су системи којима је рок битан али смеју га прекорачити док год перформансе улазе у задате оквире.

2. задатак

Поставка

Објаснити значење машинске инструкције типа test_and_set и њену употребу у језгру оперативног система.

Решење

test_and_set је инструкција која омогућава синхронизацију на хардверском нивоу. Служи за међусобно искључење извршавања на више процесора. Она чита и враћа вредност задате меморијске локације а у ту локацију ставља вредност 1. Користи се у имплементацији лоцк() функције.

3. задатак

Поставка

Коришћењем школског језгра написати програм који у н упоредних нити израчунава квадрат сваког елемента неког целобројног низа (а[и]*=а[и]) величине н*к, тако што свака нит обрађује келеманата(једну партицију низа).

Решење

class ArrThread : Thread{
    public:
        ArrThread(int* a, int s, int f): arr(a), start(s), finish(f) {}
        void run(){
            for (int i=start;i<finish;i++){
                arr[i] *= arr[i];
            }
        }
    private:
        int* arr;
        int start;
        int finish;
};
int main(){
    ArrThread *t[n];
    int start=0;
    for (int i=0;i<n;i++){
        t[i] = new ArrThread(array,start,start+k);
        start += k;
    }
    for (int i=0;i<n;i++){
        t[i]->waitToComplete();
        delete t[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 section>
        flag1 := false;
        <non-critical section>
    end
end P1;
process P2
begin
    loop
        flag2 := true; turn := 1;
        while flag1 and turn = 1 do null;
        <critical section>
        flag2 := false;
        <non-critical section>
    end
end P2;

5. задатак

Поставка

Прецизно објаснити зашто класичан линкер свој посао обавља у два пролаза (а не може само уједном). Образложење илустровати примером.

Решење

Линкеров задатак је спојити све фајлове у један извриш али да би то урадио, линкер мора наћи све симболе који се увозе односно извозе. У првом пролазу анализира улазне фајлове, величину њиховог бинарног садржаја (превода), и прави мапу еxе фајла; осим тога, сакупља инфомације из табела симбола обј фајлова и изграђује своју табелу симбола; у ту табелу симбола уноси извезене симболе из обј фајлова, за које одмах може да израчуна адресу у односу на цео еxе фајл. У другом пролазу генерише бинарни код, и уједно разрешава неразрешена адресна поља машинских инструкција на основу информација о адресама у које се пресликавају симболи из његове табеле симбола Пример: Рецимо да имамо два објектна фајла, а.обј и б.обј. а.обј извози симбол ф и увози симбол ц. Линкер це прво извозни фајл додати у табелу ф. б.обј увози симбол ф и извози симбол ц, па це линкер у својој табели додати симбол ц. У другом пролазу це линкер разресити ц поље у а.обј и поље ф у б.обј.

6. задатак

Поставка

Објаснити услугу коју програм очекује од оперативног система ако користи преклопе(оверлаy).

Решење

Обавеза ОС-а је само да обезбеди услугу (системски позив) који алоцира део (виртуелног) адресног простора процеса, као и услугу којом у дати простор процеса учитава садржај из неког бинарног фајла и садржај из меморије уписује у неки фајл (уобичајене системске услуге за рад са фајловима); ОС не зна за шта се те услуге користе, тј. не зна да се оне употребљавају баш за динамичко учитавање и замену делова процеса

7. задатак

Поставка

Виртуелни адресни простор је величине 1ГБ, организован је сегментно, са максималном величином сегмента од 4КБ, адресибилна јединица је бајт. Сви сегменти неког процеса су стварне величине од по 2КБ и у физичку меморију смештени су одмах један иза другог, при чему сегмент број 0 почиње од физичке адресе Ф000х. Приказати логичку структуру виртуелне адресе и израчунати у коју физичку адресу се пресликава виртуелна адреса 2543х.

Решење

8. задатак

Поставка

Објаснити како се недељиви излазни уређај може учинити (виртуелно) дељивим?

Решење

Један начин да се ово реши је техником резервације уређаја. То је заправо међусобно искључење операција са оваквим уређајем. Проблем је што операције са уређајима могу трајати дуго па ти процеси могу дуго и да чекају. Решење јесте у техници која се назива спулинг. Овде када неки процес захтева коришћење, ОС отвара посебан фајл у коме се преусмеравају све излазне операције са тим уређајем. Када се заврши, процес наставља да извршава свој ток, док се фајл шаље посебној нити оперативног система, спулеру која онда извршава један по један фајл из листе чекања и његов садржај шаље уређају.

9. задатак

Поставка

Навестии објаснити разлог зашто би неки фајл систем користио кластере на диску различите величине.

Решење

Начин да се речи проблем режијске потрошње простора за показиваче је повећавањем блока или алокације више суседних блокова као једна јединица алокације, и то се назива кластер.

10. задатак

Поставка

Неки фајл систем користи индексирани приступ алокацији фајлова са индексима у два нивоа, блоком величине 512КБ и 64-битним адресама физичких блокова. Колика је максимална величина фајла у овом систему?

Решење

2^45 Б, односно 35 ТБ