ОС1/Јун 2020
1. задатак
Поставка
Ако се над следећим програмом креира један процес, колико ће укупно процеса бити креирано (укључујући и тај један почетни) у функцији Н, под претпоставком да су сви системски позиви успели?
const unsigned N = ...;
void f (unsigned n) {
if (n==0) return;
if (n%2) f(n-1);
else if (!fork()) f(n-1);
}
void main { f(N); }
Решење
Ова функција зове саму себе уколико је аргумент непаран број, а прави нови процес (а тренутни се завршава) ако је паран. Овај процес се наставља све док аргумент не достигне 0, а аргумент се смањује сваког позива за 1. То значи да ће сваког, осим првог, непарног позива бити направљен нови процес, па се укупан број направљених процеса може израчунати као .
2. задатак
Поставка
Шта је проблем следеће имплементације критичне секције упосленим чекањем (обратити пажњу на то да процеси нису сасвим симетрични)?
shared var flag1, flag2 : boolean = false;
process P1
begin
loop
while flag2 = true do null end;
flag1 := true;
<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 P2;
Решење
Може да се деси следећа ситуација:
- П1 уради проверу за
flag2, види да јеfalse, прође проверу и промени се контекст - П2 постави
flag2наtrueочекујући како је закључао секцију од П1, уради проверу заflag1, види да јеfalse, прође проверу, уђе у критичну секцију и промени се контекст док је у критичној секцији - П1 постави
flag1наtrue(али са закашњењем, јер је П2 већ ушао у критичну секцију) и уђе у критичну секцију - Сада су оба процеса у критичној секцији
3. задатак
Поставка
Шта је основна разлика између технике динамичког учитавања и технике преклопа (оверлаyс)?
Решење
Динамичко учитавање нам само каже да неки део учитавамо касније када је потребан, преклопи захтевају да се један исти сегмент меморије користи за више различитих структуре у различитим временима (временско мултиплексирање).
4. задатак
Поставка
Виртуелни адресни простор је величине 1МБ и организован је странично, адресибилна јединица је бајт, а величина странице је 256Б. Неки процес је алоцирао два логичка сегмента, оба су величине по 16 страница, један заузима најниже, а други највише адресе у адресном простуру. Странице се учитавају на захтев, а тренутно није учитана ниједна страница овог процеса. Посматрају се три дате виртуелне адресе независно (свака за себе као да се изврши сама у описаном стрању); хардвер је приликом пресликавања адресе генерисао изузетак због немогућности пресликавања (паге фаулт). Навести како ће оперативни систем обрадити сваки од ових изузетака.
| Виртуелна адреса (хеx) | Начин обраде |
|---|---|
004CA |
|
FF745 |
|
F0745 |
Решење
Виртуелна адреса има 20 бита, од којих је виших 12 за адресирање странице а нижих 8 за оффсет. Заузете странице су онда од 000 до 00F и од FF0 до FFF.
| Виртуелна адреса (хеx) | Начин обраде |
|---|---|
004CA |
Учитаће страницу 004 нижег логичког сегмента.
|
FF745 |
Учитаће страницу FF7 вишег логичког сегмента.
|
F0745 |
Генерисаће грешку у приступу меморији јер страница F07 није алоцирана.
|
5. задатак
Видети исти овај задатак из августа 2020.
6. задатак
Поставка
Дат је резултат команде лс за неки директоријум на неком систему налик систему Униx. Корисник Jane који припада групи staff извршава процес који отвара фајл WideTable.pdf за упис. Да ли ће тај процес моћи да отвори овај фајл?
$ ls -l -rw-r--rw- 1 JohnDoe staff 549387 Jul 8 2019 WideTable.pdf
Решење
Неће, јер група корисника Jane нема приступ фајлу.
7. задатак
Поставка
Навести разлог зашто би неки фајл систем користио кластере на диску различите величине.
Решење
За мањи фајл се употребљава мањи кластер а за већи фајл већи кластер па је мања интерна фрагментација.