ОС1/Септембар 2012

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

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

1. задатак

Поставка

Код каквих система се најпре појављује тиме схаринг и са каквим мотивом?

Решење

Тиме схаринг се најпре појављује код интерактивних вишекорисничких система. Мотив је да се постигне равномернији одзив на акције више корисника него без тиме схаринг-а.

2. задатак

Поставка

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

Решење

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

3. задатак

Поставка

Коришћењем системских позива fork() и execlp() написати програм П који покреће процес над програмом у фајлу чији је назив задат као аргумент извршавања програма П.

Решење

int main(int argc, char* argv[]) {
    if (argc < 2) {
        return -1;
    }
    pid_t pid = fork();
    if (pid < 0) {
        return -2;
    }
    if (pid == 0) {
        execlp(argv[1]);
        return -3;
    } else {
        wait(0);
    }
    return 0;
}

4. задатак

Поставка

Процес П треба да сачека да сва три процеса X, Y и З испуне неки свој услов, у било ком редоследу. Написати део кода процеса П и било ког од друга три процеса, уз потребне декларације, који обезбеђују ову условну синхронизацију помоћу једног стандардног бројачког семафора.

Решење

Видети задатак из фебруарског рока 2012.

5. задатак

Поставка

Која два податка чине меморијски контекст процеса код континуалне алокације меморије за процес са динамичким пресликавањем адреса?

Решење

  • Сегмент Басе показивач - говори која је почетна адреса од које се пресликава меморија
  • Лимит показивач - садржи или величину сегмента или последњу адресу у њему, зависно од имплементације хардвера

6. задатак

Поставка

Виртуелни адресни простор система је 8ГБ, адресибилна јединица је 16-битна реч, а виртуелни адресни простор је организован странично са страницом величине 32КБ. Физички адресни простор је величине 2ГБ. Табеле пресликавања страница су организоване у два нивоа, с тим да табела другог нивоа има 1К улаза. Ако дескриптори у ПМТ и првог и другог нивоа садрже само број оквира у који се страница пресликава и ништа више (посебна вредност означава да пресликавање није могуће), колико бајтова заузима једна ПМТ првог, а колико другог нивоа?

Решење

ВА(32): Паге(18), Оффсет(14)

ПА(30): Блоцк(16), Оффсет(14)

Пошто имамо (256К) страница,а сваки ПМТ другог нивоа садржи показивач на 1К страница, треба нам 256 ПМТ-а другог нивоа, што значи да ПМТ првог нивоа има 256 улаза. Обратите пажњу да сваки од улаза у себи садржи само број блока тј само 16 бита односно два бајта.

ПМТ Првог Нивоа:

ПМТ Другог Нивоа:

7. задатак

Поставка

Заокружити слово испред оне или оних података који нису неопходни у дескриптору странице у ПМТ који користи хардвер за пресликавање адреса код виртуелне меморије:

  1. Информација да пресликавање није могуће извршити
  2. Адреса блока на диску у коме се налази страница
  3. Информација да је страница дељена са другим процесом техником цопy-он-wрите
  4. Информација да је страница забрањена за избацивање јер се користи као I/О бафер
  5. Да ли је дозвољен упис у страницу
  6. Број оквира у који се страница пресликава.

Решење

Подаци 1 и 5 сигурно нису неопходни, а за само пресликавање није неопходан ни податак 4, мада из питања није баш најјасније да ли је се овде мисли шта је неопходно само за пресликавање.

8. задатак

Поставка

На асемблеру неког замишљеног РИСЦ процесора са ЛОАД/СТОРЕ архитектуром написати програм који преноси блок података задате дужине на задату адресу са улазног уређаја коришћењем програмираног улаза/излаза са прозивањем (поллинг).

Решење

main:   LD R1, blockAddr
        LD R2, cnt
        ST [ctrl], #0..1
wait:   LD R0, [status]
        AND R0, #1..0
        JZ wait
        LD R0, [data]
        INC R1
        DEC R2
        JNZ wait
        ST [ctrl], #0

9. задатак

Поставка

У фајл подсистему неког оперативног система не води се табела отворених фајлова за сваки процес, већ постоји само једна глобална табела отворених фајлова за цео систем. Другим речима, не постоји никаква информација о употреби отвореног фајла локална (приватна) за појединачни процес, већ су све такве информације глобално дељене. Како треба да изгледа АПИ функција за читање блока података дужине len из неког фајла, да би се процесу обезбедила могућност секвенцијалног читања свих података из фајла?

Решење

IOStatus readFile(FHANDLE fh, void* buffer, long len, long offset);

10. задатак

Поставка

Посматра се диск капацитета 80МБ и блоком величине 1КБ. Ако се за евиденцију слободног простора користи бит-вектор са максималном компакцијом (свих 8 бита у бајту су искоришћени итд.), колико целих блокова треба заузети на диску за смештање овог вектора?

Решење

блокова