ОС1/Јануар 2012

Извор: SI Wiki
< ОС1
Датум измене: 3. октобар 2021. у 15:29; аутор: IvnSvc (разговор | доприноси) (→‎Rešenje: Ово би било добро проверити)
Пређи на навигацију Пређи на претрагу

Задаци на страници предмета.

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. задатак

Поставка

Када најраније линкер може пријавити грешку типа недефинисаног симбола, а када вишеструко дефинисаног симбола (током првог пролаза, након првог пролаза, током другог пролаза, или након другог пролаза)?

Решење

  1. Недефинисан симбол - након другог пролаза
  2. Вишеструко дефинисан симбол - током првог пролаза

6. задатак

Поставка

У неком систему примењује се бест-фит алгоритам континуалне алокације меморије. Иницијално је простор величине 256КБ потпуно слободан за алокацију корисничких процеса. Потом су различити процеси задавали следеће захтеве (словна ознака означава процес који је поставио захтев, бројна ознака означава величину алоцираног простора у КБ, а минус означава гашење процеса и ослобађање његове меморије)

А64, Б16, Ц128, Д32, А-, Е8, Ф32, Б-

Одговорити на следећа питања која се односе на стање меморије након ове секвенце захтева:

  1. Колико је укупно слободних фрагмената?
  2. Колика је величина најмањег слободног фрагмента?
  3. Колика је величина највећег слободног фрагмента?

Решење

1. Остала су два слободна фрагмента
2. Најмањи је величине 8КБ
3. Највећи је величине 48КВ

Скица решења, једна цртица = 8КБ

--------------------------------
AAAAAAAA------------------------
AAAAAAAABB----------------------
AAAAAAAABBCCCCCCCCCCCCCCCC------
AAAAAAAABBCCCCCCCCCCCCCCCCDDDD--
--------BBCCCCCCCCCCCCCCCCDDDD--
--------BBCCCCCCCCCCCCCCCCDDDDE-
FFFF----BBCCCCCCCCCCCCCCCCDDDDE-
FFFF------CCCCCCCCCCCCCCCCDDDDE-

7. задатак

Поставка

Виртуелна меморија организована је странично, а адресибилна јединица је бајт. Виртуелна адреса је 32-битна, страница је величине 4КБ, дескриптор странице је 32-битни, а ПМТ је организована у два нивоа, при чему је поље за страничење првог нивоа величине 8 бита. Колики простор би укупно заузимала ПМТ неког процеса када би:

  1. Процес користио цео свој виртуелни адресни простор?
  2. Процес користио само једну страницу?

Решење

Страница од 4КБ нам захтева 12 бита за померај, 8 бита за страницу првог нивоа и остатак битова за страницу другог нивоа
ВА(32):8,12,12

Уколико процес користи све странице, потребна му је страница првог нивоа и све странице другог нивоа, улаз у обе је по 32б,тј 4В

1.

2.

8. задатак

Поставка

Уместо технике споолинг, приступ упоредних процеса штампачу у неком систему омогућује се међусобним искључењем помоћу операције резервације: сваки процес, пре него што затражи било коју операцију са штампачем, мора да га резервише, а ту резервацију отпушта тек када заврши са целим једним послом штампе. Шта је недостатак ове технике?

Решење

Пошто операције са штампачем трају прилично дуго, применом описане технике резервације, процес може врло дуго да заузима штампач због чега ће се остали процеси суспендовати. Ово је веома лоше јер се губи конкурентност.

9. задатак

Поставка

Неки фајл систем пружа следеће операције у свом АПИ за текстуалне фајлове:

  1. FHANDLE open(char* filename) Отвара фајл са датим именом.
  2. void close(FHANDLE) Затвара дати фајл.
  3. int size(FHANDLE) Враћа тренутну величину садржаја фајла у знаковима.
  4. void append(FHANDLE,int) Проширује садржај фајла за дати број знакова на крају.
  5. void seek(FHANDLE,int) Поставља курзор датог фајла на дату позицију (редни број знака почев од 0).
  6. void write(FHANDLE,char*) На позицију курзора датог фајла уписује дати низ знакова, не укључујући завршни знак ‘\0’, и помера курзор иза уписаног низа знакова.

Написати програм који на крај постојећег фајла са именом proba.txt уписује све што је унесено преко стандардног улаза, све док се на улазу не унесе знак ’X’. Занемарити све потенцијалне грешке у улазу/излазу.

Решење

#include <stdio.h>

// Исписује "Hello world!".
int main(void) {
    FILE f = open("proba.txt");
    char a;
    int size = size(f);
    while(1){
        cin >> a;
        if(a=='X')break;
        
        append(f,2);                  //проширивање фајла, 1 за слово и 1 јер се курзор помера на место после уписаног знака
        seek(f,size);           
        write(f,&a);
        
        size+=2;                      //ажурирање тренутне величине фајла
    }
    return 0;
}

10. задатак

Поставка

Колико приступа блоковима на диску треба извршити за приступ н-том логичком блоку садржаја фајла ако је алокација фајла:

  1. ФАТ, при чему је ФАТ увек иницијално учитана у меморију приликом монтирања фајл система
  2. индексна, при чему је цео индекс фајла у једном блоку?

Решење

  1. н
  2. 2