ОС1/Јул 2019
1. Задатак
Поставка
Шта се сматра мултипроцесорским рачунарским системом? Шта је симетричан мултипроцесорски систем?
Решење
Мултипроцесорски систем је систем са више процесора који имају заједничку меморију. Симетричан мултипроцесорски систем значи да су сви процесори опште намене, једнаки и имају исто време приступа оперативној меморији. Асиметрични мултипроцесорски систем има и специјализоване процесоре или процесоре са различитим временом приступа меморији.
2. Задатак
Поставка
Неки процесор приликом обраде прекида пребацује своје извршавање на коришћење посебног показивача стека који се користи у привилегованом режиму рада, и притом чува све регистре на стеку на чији врх указује овај показивач. Оперативни систем на овом процесору користи само један системски стек за извршавање целог кернел кода. Да ли се контекст извршавања процеса (контекст процесора) може чувати на овом стеку?
Решење
3. Задатак
Поставка
Коришћењем нити у школском језгру написати функцију сум која креира нит која ће сабрати све елементе задатог низа задате дужине и резултат уписати на тражено место; у случају грешке ове функције враћају негативну вредност.
int sum (int array[], size_t size, long* result);
Решење
class SumThread{
public:
SumThread(int* arr, size_t _size, long* res): array(arr), size(_size), result(res) {}
void run(){
long res = 0;
for (size_t i = 0;i<size;i++){
res += array[i];
}
*result = res;
}
private:
int* array;
size_t size;
long* result;
};
int sum (int array[], size_t size, long* result){
if (result == nullptr) return -1;
SumThread* st = new SumThread(array,size,result);
st->start();
st->waitToComplete();
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 section>
flag1 := false;
<non-critical section>
end
end P1;
process P2
begin
loop
flag2 := true; turn := 1;
while flag1 and turn = 1 do null;
<critical section>
flag2 := false;
<non-critical section>
end
end P2;
5. Задатак
Поставка
Због чега оперативни систем не ради замену (сwаппинг) процеса његовим избацивањем из меморије приликом сваке промене контекста, када процесу који је изгубио процесор меморија свакако није потребна?
Решење
Зато што је приступ хард диску врло спор те ће таква имплементација знатно утицати на перформансе. Ово се примењивало на Wиндоwс 3.1, било је врло споро. Данас, сwаппинг се користи када нема довољно места у оперативној меморији.
6. Задатак
Поставка
Шта је компакција код континуалне алокације меморије?
Решење
Код континуалне алокације може доћи до екстерне фрагментације, односно да су слободни фрагменти толико мали да ни један процес не може стати на том делу, али збирно их има довољно за неки процос. Компакција решава тај проблем реалокацијом свих заузетих делова и спајањем свих слободних фрагмената у један велики слободан фрагмент. Док се дешава компакција, ни један процес се не може извршавати.
7. Задатак
Поставка
Виртуелни адресни простор је величне 8ГБ, а адресибилна јединица је 16-битна реч. Страница је величине 4КБ, а пресликавање је у два нивоа, с тим да ПМТ првог нивоа има два пута мање улаза него ПМТ другог нивоа. Приказати структуру виртуелне адресе и означити ширину сваког поља.
Решење
ВА(32): 10 (Паге1), 11(Паге2), 11(Оффсет)
8. Задатак
Поставка
Навести типичне услуге оперативног система везане за приступ блоковски оријентисаном улазном уређају са директним приступом и предложити потписе одговарајућих функција за те системске позиве.
Решење
Основне услуге јесу писање и читање.
int readBlock(BlockNo block, void* buffer);
int writeBlock(BlockNo block, void* buffer);
9. Задатак
Поставка
Објаснити концепт АЦЛ (аццесс цонтрол лист).
Решење
Да би се фајлови заштитили, један начин је да се ограниче права приступа корисника. Потребно је дефинисати који корисник(или група) може да извршава коју операцију. Један приступ је сваком фајлу придружити листу ових парова(корисник и операција). Таква листа је листа контроле приступа (АЦЛ).
10. Задатак
Поставка
Фајл систем примењује ФАТ алокацију, с тим да се и слободни блокови уланчавају у листу. У структури ФЦБ поље хеад садржи број првог блока са садржајем фајла, а поље сизе величину садржаја. Глобална променљива фат_фрее_хеад садржи број првог блока (главу листе), а фат_фрее_таил последњег блока (реп листе) у ланцу слободних. ФАТ је у меморију учитана као низ. Написати функцију језгра трунцате која брише садржај фајла на чији ФЦБ указује аргумент.