ОС1/Јул 2022
1. задатак
Поставка
Наведено је неколико функција стандардне библиотеке језика C (либц). За сваку од њих навести да ли у својој имплементацији сигурно садржи системски позив (уписати "Да") или највероватније не садржи системски позив (иако би теоријски и то могло да буде део функционалности језгра оперативног система, за тим нема никакве потребе, па се из практичних разлога не ради; уписати "Не").
Функција | Опис | Садржи сист. позив |
---|---|---|
воид* мемцпy(воид* дест, цонст воид* срц, сизе_т цоунт) |
Копира низ бајтова у меморији са једног места на друго. | |
воид еxит (инт статус) |
Завршава извршавање програма. | |
инт гетцхар(воид) |
Учитава знак са стандардног улаза. | |
цхар* стрцхр(цонст цхар *стр, инт ц) |
Тражи прву појаву знака у датом низу знакова. |
Решење
Одозго на доле: Не, Да, Да, Не.
2. задатак
Поставка
Прецизно објаснити зашто класичан линкер свој посао обавља у два пролаза (а не може само у једном). Образложење илустровати примером.
Решење
Видети исти овај задатак из јула 2017.
3. задатак
Поставка
Укратко објаснити зашто је код сегментне организације виртуелне меморије обавезна провера прекорачења границе сегмента приликом сваког адресирања, а код страничне организације та провера не постоји.
Решење
Видети исти овај задатак из августа 2020.
4. задатак
Поставка
Шта је ДЛЛ и чему служи? Објаснити основни мотив за постојање овог концепта.
Решење
Видети исти овај задатак из јуна 2019.
5. задатак
Поставка
Шта ради процесорска инструкција типа тест-анд-сет и за шта се она тачно користи у оперативним системима?
Решење
Видети исти овај задатак из јула 2017.
6. задатак
Поставка
Прецизно објаснити цео механизам у системима налик систему Униx којим се постиже то да системским позивом килл један процес гаси други процес (шта тачно ради овај системски позив и како доводи до гашења процеса).
Решење
Системским позивом килл позивајући процес другом процесу шаље сигнал. Сигнал је проста информација, идентификација некакве просте поруке, обично целобројна вредност. Оперативни систем преноси ту инфомацију одредишном процесу, а реакција на тај сигнал је позив потпрограма који се извршава у контексту и адресном простору одредишног процеса. За сваки сигнал оперативни систем дефинише подразумевану реакцију, углавном је то само гашење процеса системским позивом еxит. Међутим, одредишни процес за неке сигнале може реакцију да преусмери на своје потпрограме одговрајућим системским позивом.
7. задатак
Поставка
Шта је проблем следеће имплементације критичне секције упосленим чекањем?
shared var flag1 = false, flag2 = false;
process P1
begin
loop
flag1 := true;
while flag2 = true do null end;
<critical section>
flag1 := false;
<non-critical section>
end
end P1;
process P2
begin
loop
flag2 := true;
while flag1 = true do null end;
<critical section>
flag2 := false;
<non-critical section>
end
end P1;
Решење
Проблем је у случају да оба процеса поставе своју заставицу на труе, јер ће онда непрестано упослено чекати (ливелоцк).
8. задатак
Поставка
Прецизно објаснити шта ради следећи фрагмент програма:
int fd = open("./mydoc.txt", O_CREAT | O_TRUNC | O_WRONLY);
if (fd < 0) handle_error("Cannot open data file.");
int pid = fork();
if (pid == 0) {
dup2(fd, 1);
execlp("./myprog.a", NULL);
handle_error("Cannot open exe file.");
}
Решење
Програм отвара mydoc.txt
фајл у тренутном директоријуму за писање, прави нови процес, дуплира дескриптор управо отвореног фајла (чинећи тако да сада процес-дете такође има отворен тај фајл) с тим што новом фајл дескриптору идентификатор поставља на 1, што је фајл дескриптор за стандардни излаз. Затим замењује код процеса-детета са кодом програма myprog.a
и наставља са извршавањем, тако да се излаз тог програма сада чува у фајлу mydoc.txt
.
9. задатак
Поставка
Прецизно објаснити шта ради следећа команда: цхмод г=x, у+рwx, о-wx .././фрд
Решење
Фајлу фрд из родитељског директоријума текућег директоријума правила приступа постају следећа: група може искључиво да извршава фајл, власник може да чита, уписује и извршава фајл, док остали губе право приступа писања и извршавања ако су их до сад имали.
10. задатак
Поставка
Прецизно објаснити шта је и зашто највећи недостатак уланчане организације фајла код произвољног приступа фајлу. Зашто тај проблем не постоји код ФАТ организације?
Решење
Код уланчане алокације фајла, уколико се приступа произвољном блоку, потребно је проћи кроз све претходне блокове да би се дати блок учитао. С обзиром да се у уланчаној организацији показивач на следећи блок чува у самом блоку, неопходно је учитати блок са диска, што је временски захтевна операција. ФАТ је једна врста уланчане организације али се уланчавање не врши у самим блоковима, већ постоји табела на посебном, унапред одређеном месту на волумену која чува информације о уланчавању. Такође, ова табеле је углавном кеширана у РАМ меморији па је сам приступ доста бржи.