ОС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();
}
Решење
1 + 2^Н - 1 = 2^3 = 8
4. задатак
Поставка
Коришћењем школског језгра написати код класе која апстрахује нит која, уколико се креира са непарним целобројним параметром, креира још једну такву исту нит, само са парним целобројним параметром, а у супротном се само завршава.
Решење
class myThead : public Thread {
public:
myThead(int val) {
this->val = val;
start();
}
protected:
void run() {
if(val & 1) {
new myThead(val + 1);
}
}
private:
int val;
};
5. задатак
Поставка
Када најраније линкер може пријавити грешку типа недефинисаног симбола, а када вишеструко дефинисаног симбола (током првог пролаза, након првог пролаза, током другог пролаза, или након другог пролаза)?
Решење
- Недефинисан симбол - након другог пролаза
- Вишеструко дефинисан симбол - током првог пролаза
6. задатак
Поставка
У неком систему примењује се бест-фит алгоритам континуалне алокације меморије. Иницијално је простор величине 256КБ потпуно слободан за алокацију корисничких процеса. Потом су различити процеси задавали следеће захтеве (словна ознака означава процес који је поставио захтев, бројна ознака означава величину алоцираног простора у КБ, а минус означава гашење процеса и ослобађање његове меморије)
А64, Б16, Ц128, Д32, А-, Е8, Ф32, Б-
Одговорити на следећа питања која се односе на стање меморије након ове секвенце захтева:
- Колико је укупно слободних фрагмената?
- Колика је величина најмањег слободног фрагмента?
- Колика је величина највећег слободног фрагмента?
Решење
1. Остала су два слободна фрагмента
2. Најмањи је величине 8КБ
3. Највечи је величине 48КВ
Скица решења, једна цртица = 8КБ
--------------------------------
AAAAAAAA------------------------
AAAAAAAABB----------------------
AAAAAAAABBCCCCCCCCCCCCCCCC------
AAAAAAAABBCCCCCCCCCCCCCCCCDDDD--
--------BBCCCCCCCCCCCCCCCCDDDD--
--------BBCCCCCCCCCCCCCCCCDDDDE-
FFFF----BBCCCCCCCCCCCCCCCCDDDDE-
FFFF------CCCCCCCCCCCCCCCCDDDDE-
7. задатак
Поставка
Виртуелна меморија организована је странично, а адресибилна јединица је бајт. Виртуелна адреса је 32-битна, страница је величине 4КБ, дескриптор странице је 32-битни, а ПМТ је организована у два нивоа, при чему је поље за страничење првог нивоа величине 8 бита. Колики простор би укупно заузимала ПМТ неког процеса када би:
- Процес користио цео свој виртуелни адресни простор?
- Процес користио само једну страницу?
Решење
- Овај задатак није решен. Помозите СИ Wики тако што ћете га решити.
8. задатак
Поставка
Уместо технике споолинг, приступ упоредних процеса штампачу у неком систему омогућује се међусобним искључењем помоћу операције резервације: сваки процес, пре него што затражи било коју операцију са штампачем, мора да га резервише, а ту резервацију отпушта тек када заврши са целим једним послом штампе. Шта је недостатак ове технике?
Решење
Пошто операције са штампачем трају прилично дуго, применом описане технике резервације, процес може врло дуго да заузима штампач због чега ће се остали процеси суспендовати. Ово је веома лоше јер се губи конкурентност.
9. задатак
Поставка
Неки фајл систем пружа следеће операције у свом АПИ за текстуалне фајлове:
FHANDLE open(char* filename)Отвара фајл са датим именом.void close(FHANDLE)Затвара дати фајл.int size(FHANDLE)Враћа тренутну величину садржаја фајла у знаковима.void append(FHANDLE,int)Проширује садржај фајла за дати број знакова на крају.void seek(FHANDLE,int)Поставља курзор датог фајла на дату позицију (редни број знака почев од 0).void write(FHANDLE,char*)На позицију курзора датог фајла уписује дати низ знакова, не укључујући завршни знак ‘\0’, и помера курзор иза уписаног низа знакова.
Написати програм који на крај постојећег фајла са именом proba.txt уписује све што је унесено преко стандардног улаза, све док се на улазу не унесе знак ’X’. Занемарити све потенцијалне грешке у улазу/излазу.
Решење
- Овај задатак није решен. Помозите СИ Wики тако што ћете га решити.
10. задатак
Поставка
Колико приступа блоковима на диску треба извршити за приступ н-том логичком блоку садржаја фајла ако је алокација фајла:
- ФАТ, при чему је ФАТ увек иницијално учитана у меморију приликом монтирања фајл система
- индексна, при чему је цео индекс фајла у једном блоку?
Решење
- н
- 2