ОС1/Јануар 2012
1. задатак
Поставка
Укратко објаснити основни мотив увођења мултипрограмирања у рачунарске системе.
Решење
Мултипрограмирање се уводи како би се извршавало више послова упоредо. Док један процес чека на завршетак I/О операције, процесор може да извршава и опслужује неки други процес.
2. задатак
Поставка
На асемблеру неког замишљеног РИСЦ процесора са ЛОАД/СТОРЕ архитектуром написати програм који врши пренос блока података из меморије на излазни уређај техником програмираног излаза коришћењем прозивања (поллинг). Самостално усвојити потребне детаљне претпоставке.
Решење
LD R1, blockAddr
LD R2, cnt
ST [ctrl], #00..01
wait: LD R0, [status]
AND R0, #1
JZ wait
LD R0, [R1]
ST [data], R0
INC R1
DEC R2
JNZ wait
ST [ctrl], #0
HALT
3. задатак
Поставка
Уколико су сви системски позиви извршени успешно, колико процеса се укупно креира када се над следећим програмом креира један процес (рачунајући и тај један)?
void main () {
for (int i=0; i<3; i++) fork();
}
Решење
Петља има три итерације. У првој итерацији, први креирани процес ће позвати fork()
и од тада постоје два процеса. Оба процеса извршавају своју другу итерацију и од тада постоје четири процеса, а након што та четири процеса изврше своју трећу итерацију постоји 8 процеса.
4. задатак
Поставка
Коришћењем школског језгра написати код класе која апстрахује нит која, уколико се креира са непарним целобројним параметром, креира још једну такву исту нит, само са парним целобројним параметром, а у супротном се само завршава.
Решење
class MyThread : public Thread {
public:
MyThread(int val) : val(val) {
start();
}
protected:
void run() {
if (val & 1) {
new MyThread(val + 1);
}
}
private:
int val;
};
5. задатак
Поставка
Када најраније линкер може пријавити грешку типа недефинисаног симбола, а када вишеструко дефинисаног симбола (током првог пролаза, након првог пролаза, током другог пролаза, или након другог пролаза)?
Решење
- Недефинисан симбол - након другог пролаза, јер тек тад зна који су сви дефинисани и тражени симболи
- Вишеструко дефинисан симбол - током првог пролаза, јер ако је већ раније наишао на дефиницију зна да треба да баци грешку
6. задатак
Поставка
У неком систему примењује се бест-фит алгоритам континуалне алокације меморије. Иницијално је простор величине 256КБ потпуно слободан за алокацију корисничких процеса. Потом су различити процеси задавали следеће захтеве (словна ознака означава процес који је поставио захтев, бројна ознака означава величину алоцираног простора у КБ, а минус означава гашење процеса и ослобађање његове меморије)
А64, Б16, Ц128, Д32, А-, Е8, Ф32, Б-
Одговорити на следећа питања која се односе на стање меморије након ове секвенце захтева:
- Колико је укупно слободних фрагмената?
- Колика је величина најмањег слободног фрагмента?
- Колика је величина највећег слободног фрагмента?
Решење
- Остала су два слободна фрагмента
- Најмањи је величине 8КБ
- Највећи је величине 48КВ
Скица решења, једна цртица = 8КБ
-------------------------------- AAAAAAAA------------------------ AAAAAAAABB---------------------- AAAAAAAABBCCCCCCCCCCCCCCCC------ AAAAAAAABBCCCCCCCCCCCCCCCCDDDD-- --------BBCCCCCCCCCCCCCCCCDDDD-- --------BBCCCCCCCCCCCCCCCCDDDDE- FFFF----BBCCCCCCCCCCCCCCCCDDDDE- FFFF------CCCCCCCCCCCCCCCCDDDDE-
7. задатак
Поставка
Виртуелна меморија организована је странично, а адресибилна јединица је бајт. Виртуелна адреса је 32-битна, страница је величине 4КБ, дескриптор странице је 32-битни, а ПМТ је организована у два нивоа, при чему је поље за страничење првог нивоа величине 8 бита. Колики простор би укупно заузимала ПМТ неког процеса када би:
- Процес користио цео свој виртуелни адресни простор?
- Процес користио само једну страницу?
Решење
Страница од 4КБ нам захтева 12 бита за померај, 8 бита за страницу првог нивоа и остатак битова за страницу другог нивоа: ВА(32): 8, 12, 12
Уколико процес користи све странице, потребна му је страница првог нивоа и све странице другог нивоа, улаз у обе је по 32б, тј. 4Б.
8. задатак
Поставка
Уместо технике споолинг, приступ упоредних процеса штампачу у неком систему омогућује се међусобним искључењем помоћу операције резервације: сваки процес, пре него што затражи било коју операцију са штампачем, мора да га резервише, а ту резервацију отпушта тек када заврши са целим једним послом штампе. Шта је недостатак ове технике?
Решење
Пошто операције са штампачем трају прилично дуго, применом описане технике резервације, процес може врло дуго да заузима штампач због чега ће се остали процеси суспендовати. Ово је веома лоше јер се губи конкурентност.
9. задатак
Поставка
Неки фајл систем пружа следеће операције у свом АПИ за текстуалне фајлове:
ФХАНДЛЕ опен(цхар* филенаме)
Отвара фајл са датим именом.воид цлосе(ФХАНДЛЕ)
Затвара дати фајл.инт сизе(ФХАНДЛЕ)
Враћа тренутну величину садржаја фајла у знаковима.воид аппенд(ФХАНДЛЕ, инт)
Проширује садржај фајла за дати број знакова на крају.воид сеек(ФХАНДЛЕ, инт)
Поставља курзор датог фајла на дату позицију (редни број знака почев од 0).воид wрите(ФХАНДЛЕ, цхар*)
На позицију курзора датог фајла уписује дати низ знакова, не укључујући завршни знак ‘\0’, и помера курзор иза уписаног низа знакова.
Написати програм који на крај постојећег фајла са именом proba.txt
уписује све што је унесено преко стандардног улаза, све док се на улазу не унесе знак ’X’. Занемарити све потенцијалне грешке у улазу/излазу.
Решење
#include <stdio.h>
int main(void) {
FILE f = open("proba.txt");
char a;
int size = size(f);
while (1) {
scanf("%c", &a);
if (a == 'X') {
break;
}
append(f, 2); // proširivanje fajla, 1 za slovo i 1 jer se kurzor pomera na mesto posle upisanog znaka
seek(f, size);
write(f, &a);
size += 2; // ažuriranje trenutne veličine fajla
}
return 0;
}
10. задатак
Поставка
Колико приступа блоковима на диску треба извршити за приступ н-том логичком блоку садржаја фајла ако је алокација фајла:
- ФАТ, при чему је ФАТ увек иницијално учитана у меморију приликом монтирања фајл система
- индексна, при чему је цео индекс фајла у једном блоку?
Решење
- 1
- 2