ОС1/Јул 2013
1. задатак
Поставка
Објаснити појам расподеле времена (тиме схаринг) код мултипроцесних система.
Решење
Оперативни систем додељује процесору време извршавања сваког посла и релативно често преузима процесор. Основна идеја је да посао (енгл. таск) може да изгуби процесор након истека додељеног процесорског времена или када сам затражи промену контекста. Резултат је да сваки корисник има утисак да рачунар ради само за њега са довољно добрим временским одзивом, док рачунар опслужује више корисника.
2. задатак
Поставка
Дата је погрешна имплементација операције yield()
за неки троадресни процесор. Ова операција би требало да изврши преузимање процесора од нити на чији врх стека указује вредност сачувана на локацији на коју указује аргумент cur
, и предају процесора нити на чији врх стека указује вредност сачувана на локацији на коју указује аргумент next
. Објаснити зашто ова имплементација није исправна и кориговати је.
void yield (void* cur, void* next) {
asm {
push r0
push r1
...
push rn
add r0, sp, #cur
mov [r0], sp
add r0, sp, #next
mov sp, [r0]
pop rn
...
pop r1
pop r0
pop pc ; return
}
}
Решење
Уместо адд р0, сп, #цур
треба написати мов р0, #цур[сп]
, тј. у r0
треба уписати адресу sp
па убацити на ту адресу sp
. Уместо адд р0, сп, #неxт
треба написати мов р0, #неxт[сп]
, тј. у r0
треба уписати адресу новог sp
.
3. задатак
Поставка
Коришћењем системског позива fork()
, написати програм који, када се покрене као процес, креира онолико процеса-деце, колико је дато аргументом тог програма. Ни тај процес, ни његова деца не треба да раде ништа више.
Решење
int main(int argc, char* argv[]) {
if (argc < 2) {
return -1;
}
int N = atoi(argv[1]);
for (int i = 0; i < N; i++) {
if (fork() == 0) {
return 0;
}
}
return 0;
}
4. задатак
Поставка
Дата два процеса међусобно се икључују[сиц] при улазу у две критичне секције помоћу семафора чија је иницијална вредност 1. Објаснити шта је проблем ове имплементације.
process P1; process P2:
wait(S1); wait(S2);
wait(S2); wait(S1);
... ...
signal(S2); signal(S1);
signal(S1); signal(S2);
end P1; end P2;
Решење
Проблем је што ће доћи до мртвог блокирања, односно, могуће је да П1 и П2 прођу први wait
јер је иницијална вредност семафора 1 али ће се затим блокирати на другим wait()
позивима.
5. задатак
Поставка
Коју услугу оперативни систем треба да обезбеди процесима да би они користили преклопе (оверлаyс)?
Решење
Преклопи не захтевају подршку оперативног система. Све обавља преводилац и генерисани код. Оперативни систем само обезбеђује услуге за алокацију дела виртуелног адресног простора.
6. задатак
Поставка
Дата је дефиниција структуре FreeSegment
која представља један сегмент слободне меморије. Ове структуре увезане су у двоструко уланчану, неуређену листу чија је глава freeSegHead
. Имплементирати функцију getWorstFit(size_t)
која треба да пронађе и врати (али не мења ни њега ни листу) сегмент слободне меморије у који се може сместити блок дате величине, по wорст фит алгоритму.
struct FreeSegment {
size_t size;
FreeSegment *prev, *next;
};
Решење
FreeSegment* getWorstFit(size_t size) {
FreeSegment* curr = freeSegHead;
FreeSegment* max = NULL;
size_t maxSize = 0;
while (curr) {
if (curr->size >= size && curr->size > maxSize) {
max = curr;
maxSize = curr->size;
}
curr = curr->next;
}
return max;
}
7. задатак
Поставка
Неки рачунар подржава сегментно-страничну организацију виртуелне меморије, при чему је виртуелна адреса 16-битна, физички адресни простор је величине 8ГБ, а адресибилна јединица је 16-битна реч. Страница је величине 512Б. Максималан број сегмената у виртуелном адресном простору је 4. Приказати логичку структуру виртуелне и физичке адресе и навести ширину сваког поља.
Решење
ВА(16):= сег(2):паге(6):оффсет(8) ПА(32):= фраме(24):оффсет(8)
8. задатак
Поставка
Којом техником се физички недељив излазни уређај може учинити логички (виртуелно) дељивим између процеса који га упоредо користе?
Решење
Споолинг.
9. задатак
Поставка
Написати пуну стазу (патх) до фајла resenja.doc
који се налази у директоријуму d:/nastava/os/ispiti/jul2013
на уређају d:
после следеће операције монтирања (први аргумент је фајл систем који монтира, други је одредиште монтаже): моунт д: /етф/рти
Решење
/etf/rti/nastava/os/ispiti/jul2013
10. задатак
Поставка
Неки фајл систем користи индексирану алокацију фајлова на диску са једноструким индексом. Ако се претпоставља да је простор за смештање фајлова (укључујући и њихове индексе) на диску величине 32 ГБ, величина кластера (једине јединице алокације) 2 КБ, и цео простор потпуно испуњен фајловима, где је сваки фајл максималне величине и има само један индексни кластер, колики проценат укупног простора за смештање фајлова на овом диску заузимају индекси?
Решење
Видети задатак из октобарског рока 2012.