ОС1/Јун 2018

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

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

1. задатак

Поставка

Објаснити разлику између појмова процес и нит (енгл. тхреад)

Решење

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

2. задатак

Поставка

Коришћењем стандардних библиотечних операција setjmp и longjmp, имплементирати операцију wait на бинарном семафору који је реализован класом Event попут оне у школском језгру.

3. задатак

Поставка

Коришћењем системских позива fork и exec, написати функцију рун која креира процес над програмом у фајлу са задатом путањом и враћа негативну вредност у случају грешке, а пид креираног процеса у случају успеха при fork. Уколико не успе exec, креирани процес-дете треба угасити.

Решење

int main(int argc, int argv[]){
    if (argc < 2) return -1;
    pid_t pid = fork();
    if (pid < 0){
        return -2;
    }
    if (pid == 0){
        int t = exec(argv[1]);
        if (t < 0){
            exit(-3);
        }
    }
    return 0;
}

4. задатак

Поставка

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

process P1
begin
    loop
        flag1 := true;
        while flag2 = true do null end;
        <critical section>
        flag1 := false;
        <non-critical section>
    end
end P1;

Решење

Ово решење не ваља јер се дешава ливелоцк односно оба процеса се међусобно закључају и ни један ни други се неће даље извршавати. То се деси када процес П1 постави flag1 на труе а затим П2 постави flag2 на труе.

5. задатак

Поставка

За коју од ове две технике, динамичко учитавање (дyнамиц лоадинг) или преклопи (оверлаyс), се може очекивати дуже извршавање истог програма у најгорем случају? Прецизно образложити.

Решење

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

6. задатак

Поставка

У неком систему примењује се wорст-фит алгоритам континуалне алокације меморије. Иницијално је простор величине 256КБ потпуно слободан за алокацију корисничких процеса. Потом су различити процеси задавали следеће захтеве (словна ознака означава процес који је поставио захтев, бројна ознака означава величину алоцираног простора у КБ, а минус означава гашење процеса и ослобађање његове меморије): А64, Б16, Ц128, Д32, А-, Е8, Ф32, Б- Одговорити на следећа питања која се односе на стање меморије након ове секвенце захтева:

  • Колико је укупно слободних фрагмената?
  • Колика је величина најмањег слободног фрагмента?
  • Колика је величина највећег слободног фрагмента?

Решење

  1. А64 -> А(64), Фрее(192)
  2. Б16 -> А(64), Б(16), Фрее(176)
  3. Ц128 -> А(64), Б(16), C(128), Фрее(48)
  4. Д32 -> А(64), Б(16), C(128), D(32), Фрее(16)
  5. А- -> Фрее(64), Б(16), C(128), D(32), Фрее(16)
  6. Е8 -> Е(8), Фрее(56), Б(16), C(128), D(32), Фрее(16)
  7. Ф32 -> Е(8), Ф(32), Фрее(24), Б(16), C(128), D(32), Фрее(16)
  8. Б- -> Е(8), Ф(32), Фрее(42), C(128), D(32), Фрее(16)
  • Колико је укупно слободних фрагмената? 2
  • Колика је величина најмањег слободног фрагмента? 16КБ
  • Колика је величина највећег слободног фрагмента? 42КБ

7. задатак

Поставка

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

Решење

Неће угасити програм јер се заправо ради о техници цопy-он-wрите односно копирања на упис. У овој техници, ММУ види ту меморију као забрањену за упис. Приликом генерисања грешке, ОС проверава да ли је забрањена, и како код њега није, то значи да се ради о техници копирања на упис.

8. задатак

Поставка

Навести три услуге везане за реално време које оперативни систем може да нуди и предложити и кратко објаснити функције – системске позиве за те услуге.

Решење

  1. Информација о текућем реалном времену:
    time_t time (time_t* tloc);
    Враћа број секунди које су протекле од 1. 1. 1970. у 0 часова постоје и библиотечне функције у <тиме.х> које враћају “календарско” време, растављено на датум и сат итд, а ослањају се на овај системски позив: асцтиме, цтиме, гмтиме, лоцалтиме
  2. Суспензија позивајућег процеса (“успављивање”) за задато време
    unsigned int sleep (unsigned int seconds);
  3. Чекање на догађаје, услове или на синхронизационе примитиве, али временски ограничено (тзв. тајмаоут контроле, тимеоут); ако се процес не деблокира у задатом времену, биће деблокиран због истека временске контроле; нпр. за семафоре:
    int sem_timedwait (sem_t *sem, const struct timespec *abs_timeout);


9. задатак

Поставка

Ако је текући директоријум неког процеса /а/б/ц, која је апсолутна путања до фајла који тај процес отвара давањем путање д/../../е/ф.тxт?

Решење

Решење је а/б/е/ф.тxт.

10. задатак

Поставка

Фајл систем примењује уланчану алокацију, с тим да се и слободни блокови уланчавају у листу. У структури ФЦБ поље head садржи број првог блока са садржајем фајла, а поље size величину садржаја. Функција језгра free прима као аргумент број првог блока у ланцу блокова које треба прогласити слободним. Написати функцију језгра truncate која брише садржај фајла на чији FCB указује аргумент.