ОС1/Јануар 2015
1. задатак
Поставка
Укратко објаснити основни мотив настанка концепта расподеле времена (тиме схаринг).
Решење
Сваки корисник треба да има утисак да рачунар ради само за њега са довољно добрим и уједначеним временима одзива док тај исти рачунар заправо опслужује више корисника истовремено.
2. задатак
Поставка
Објаснити семантику машинске инструкције тест & сет и начин њене употребе за међусобно искључење критичних секција код милтипроцесорских система.
Решење
Инструкција тест & сет атомично чита и враћа вредност садржаја задате променљиве и у њу уписује 1. Ова атомичност се обезбеђује хардверски закључавањем магистрале. Свакој критичној секцији, тј. дељеној структури података којој приступа код критичних секција се придружи једна глобална дељена променљива L у дељеној оперативној меморији мултипроцесора.
lock(L):
while test_and_set(L) do null;
unlock(L):
L := 0;
3. задатак
Поставка
На језику C, коришћењем системских позива fork()
и execlp()
за Униx, написати програм који покреће други програм из фајла чији је назив задат као параметар командне линије првог програма.
Решење
int main (int argc, const char *argv[]) {
if (argc < 2) {
return -1;
}
pid_t pid = fork();
if (pid == 0) {
int s = execlp(argv[1], NULL);
if (s < 0) {
return -2;
}
}
return 0;
}
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>
flag1 := false;
<non-critical>
end
end P1;
process P2
begin
loop
flag2 := true; turn := 1;
while flag1 and turn = 1 do null;
<critical>
flag2 := false;
<non-critical>
end
end P2;
5. задатак
Поставка
Зашто преклопи (оверлаyс) не могу да се користе ако програм има више нити које обезбеђује оперативни систем? Прецизно објаснити.
Решење
Видети задатак из септембарског рока 2011.
6. задатак
Поставка
Потребно је у некој структури података водити евиденцију о слободним фрагментима меморије код континуалне алокације са бест фит алгоритмом. Која структура података је ефикаснија за имплементацију операције деалокације сегмента меморије коју је заузимао угашени процес: а) двоструко уланчана листа слободних фрагмената уређених по величини или б) двоструко уланчана листа слободних фрагмената уређених по позицији у меморији? Кратко образложити.
Решење
Двоструко уланчана листа слободних фрагмената уређених по позицији у меморији, јер је потребно уланчати са слободним фрагментом изнад и испод тог сегмента меморије који деалоцирамо уз евентуално спајање.
7. задатак
Поставка
У неком систему са страничном организацијом виртуелне меморије виртуелна и физичка адреса су 32-битне, адресибилна јединица је бајт, а страница је величине 64 КБ. ПМТ је организована у два нивоа и један улаз у ПМТ оба нивоа заузима по једну 32-битну реч. ПМТ оба нивоа су исте величине. Колико укупно заузимају ПМТ за процес који је алоцирао само своју прву и последњу страницу?
Решење
- ВА(32): паге1(8) паге2(8) оффсет(16)
8. задатак
Поставка
Којом техником се недељиви уређај може учинити виртуелно дељивим?
Решење
споолинг
9. задатак
Поставка
У фајл подсистему неког оперативног система нема концепта курзора (показивача) тренутне локације за читање и упис садржаја у фајл. Чиме се може надоместити овај недостатак у системским позивима за читање и упис у фајл? Прецизно објаснити и илустровати потписом функција за ове позиве.
Решење
Потребно је додати и позицију одакле се жели читати/уписивати.
void write(FHANDLE fh, int position, char* buffer, int size);
void read(FHANDLE fh, int position, char* buffer, int size);
10. задатак
Поставка
Неки фајл систем користи индексирани приступ алокацији фајлова са индексима у два нивоа, блоком величине 512Б и 32-битним адресама физичких блокова. Колика је максимална величина садржаја фајла у овом систему?
Решење
улаза у индексу
Максимална величина фајла: