ОС1/Јул 2021

Извор: SI Wiki
< ОС1
Датум измене: 11. јул 2021. у 15:09; аутор: KockaAdmiralac (разговор | доприноси) ({{delimično rešeno}})
Пређи на навигацију Пређи на претрагу

Задаци на страници предмета. Сви задаци вреде 3 поена.

1. задатак

Поставка

Шта је преотимање процесора (енгл. преемптион) и који хардверски механизам га омогућује? Шта се постиже увођењем ове технике у рачунарске системе?

Решење

Преотимање процесора је прекидање извршавања једног процеса на процесу да би се извршио кернел код или неки други процес. Механизам прекида омогућује преотимање процесора - процесор добија сигнал да прекине тренутни процес и пређе на код кернела. Преотимањем се постиже мултипроцесирање са бољом расподелом времена и временом одзива.

2. задатак

Поставка

Дат је потпис једног системског позива на системима налик систему Униx. Кратко, али презино објаснити шта ради овај системски позив и значење сваког параметра и резултата.

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

Решење

mmap је системски позив који мапира фајл или уређај у меморију. Значења параметара:

  • void *addr је (жељена) почетна адреса мапирања. Уколико је NULL, оперативни систем сам бира почетну адресу.
  • size_t length је дужина мапиране меморије
  • int prot је флег који означава довзољене начине приступа мапираној меморији (да ли сме да се чита, уписује, извршава) и мора се слагати са начином приступа фајла.
  • int flags је флег који означава да ли је мапирана меморија видљива осталим процесима који мапирају исти фајл, да ли се промене у меморији уписују у фајл итд.
  • int fd је ручка фајла
  • off_t offset је померај од почетка фајла од којег се врши мапирање

Уколико је позив успешан, враћа се воид показивач на меморију која је мапирана.

3. задатак

Поставка

Шта се постиже техником “копирања при упису” код управљања меморијом? Кратко, али прецизно објаснити начин рада ове технике.

Решење

Техником цопy-он-wрите постиже се уштеда меморије, тако што се меморија која се користи у више процеса не копира док је један процес не промени. Имплементира се тако што се у дескриптор логичког сегемтна која се дели између процеса означи као дозвољен за упис, али у улазу ПМТ-а као забрањен за упис. У ситуацију када се деси упис, хардвер генерише изузетак који се обрађује од стране ОС-а. ОС закључује да се ради о копирању при упису из дескриптора логичког сегмента и врши копирање, усмеравање ПМТ-а другог процеса на копију и у дескрипторима страница обе копије дозвољава упис.

4. задатак

Поставка

Ако се над следећим програмом креира један процес, колико ће укупно бити елемената са вредношћу различитом од 0 у низовима pid свих креираних процеса (укључујући и тај један почетни) када сви ти процеси изађу из петље, под претпоставком да су сви системски позиви успели?

const int N=2; int pid[N]; 
void main () {
    for (int i=0; i<N; i++) pid[i] = fork();
}

Решење

fork() у контексту родитеља враћа прави pid детета, а у контексту детета враћа 0. Одговор је 4: child1 и child3 у парент, child2 у цхилд1 и child1 у цхилд3.

Објашњење

5. задатак

Овај задатак није решен. Помозите СИ Wики тако што ћете га решити.

Поставка

Доказати да Петерсонов алгоритам за међусобно искључење критичних секција два упоредна процеса упосленим чекањем заиста обезбеђује међусобно искључење, односно не поседује проблем утркивања (енгл. раце цондитион). (Дати код само једног процеса са међусобним искључењем помоћу овог алгоритма.)

Решење

6. задатак

Поставка

Шта је симболичка веза (сyмболиц линк, софт линк) у фајл систему? Како се она имплементира?

Решење

Симболичка веза је веза до неког фајла у фајл систему која се не ажурира аутоматски. Имплементира се као фајл са посебним третманом од стране оперативног система и у себи садржи апсолутну и релативну путању до неког фајла у фајл систему. Разликује се од тврде везе тако што не показује директно до ФЦБ-а и може да постане прекинута тј. ландарава.

7. задатак

Поставка

Неки фајл систем користи бит вектор за евиденцију слободних блокова на диску. Колика је величина овог вектора у бајтовима, за диск величине 16 ТБ са блоком величине 512Б.

Решење

16 ТБ = 24 * 240 Б = 244 Б.

244 Б / 512 Б = 244 Б / 29 = 235 блокова.

235 / 8 бита у Б = 232 = 22 * 230 = 4 ГБ.