ОС1/Јул 2017

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

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

1. задатак

Поставка

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

Решење

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

2. задатак

Поставка

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

Решење

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

3. задатак

Поставка

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

Решење

class ArrThread : Thread {
    public:
        ArrThread(int* a, int s, int f): arr(a), start(s), finish(f) {}
    protected:
        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++) {
        delete t[i];
    }
    return 0;
}

4. задатак

Видети задатак из јулског рока 2019.

5. задатак

Поставка

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

Решење

Линкеров задатак је да споји све фајлове у један извршни, али да би то урадио, линкер мора наћи све симболе који се увозе односно извозе.

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

Пример: Рецимо да имамо два објектна фајла, a.obj и b.obj. a.obj извози симбол f и увози симбол c. Линкер ће из првог објектног фајла додати у табелу симбол f. b.obj увози симбол f и извози симбол c, па ће линкер у своју табелу додати симбол c. У другом пролазу ће линкер разрешити c поље у a.obj и поље f у b.obj.

6. задатак

Поставка

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

Решење

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

7. задатак

Поставка

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

Решење

ВА(30) : сег(18) оффсет(12)

Виртуелна адреса 2543х тј. 0010 | 0101 0100 0011б припада 2. сегменту који почиње од физичке адресе 10000х и завршава на 10800х.

Физичка адреса се добија сабирањем базне адресе у физичком адресном простору и оффсетног дела виртуелне адресе: ПА = 10000х + 543х = 10543х.

8. задатак

Видети задатак из јунског рока 2021. године.

9. задатак

Видети задатак из јунског рока 2020. године.

10. задатак

Поставка

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

Решење

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