ОС1/Септембар 2014
1. задатак
Поставка
Шта је мултипроцесни, а шта мултипроцесорски оперативни систем?
Решење
Мултипроцесни ОС је ОС који подржава извршавање више процеса упоредо (над истим процесором).
Мултипроцесорски систем је рачунарски систем са више процесора који имају дељену меморију. Процесори могу да приступају тој дељеној меморији преко заједничке магистрале на коју су повезани.
2. задатак
Поставка
Коришћењем операције yield(PCB* old, PCB* new) која чува контекст извршавања првог и рестаурира контекст извршавања другог датог процеса, имплементирати операцију wаит на семафору који је реализован класом Semaphore попут оне у школском језгру.
Решење
Semaphore::wait() {
lock();
if(--val < 0) {
PCB* old = Thread::running->myPCB;
blocked.put(Thread::running);
Thread::running = Scheduler::get();
PCB* new = Thread::running->myPCB;
yield(old, new);
}
}
3. задатак
Поставка
На језику C, коришћењем системских позива fork() и execlp() за Униx, написати програм који покреће други програм из фајла чији је назив задат као параметар командне линије првог програма.
Решење
int main(int argc, char* argv[]) {
if(argc < 2)
return -1;
int pid = fork();
if(pid < 0)
return -2;
else if(pid == 0) {
execlp(argv[1]);
return -3;
}
else
wait(0);
return 0;
}
4. задатак
Поставка
Коришћењем стандардних бројачких семафора у школском језгру, на језику C++ написати глобалне декларације и иницијализације, као и код тела две упоредне нити А и Б које циклично раде следеће:
А: уписује вредност у дељене променљиве x и y, а затим чека да процес Б упише збир x и y у променљиву з чију вредност онда исписује на стандардни излаз;
Б: чека да процес А упише вредности у дељене променљиве x и y, затим ове две вредности сабира и збир уписује у дељену променљиву з.
Решење
#include <iostream>
Semaphore semA(0), semB(0);
int x, y, z;
class A : public Thread {
protected:
void run() {
while(1) {
x = ...
y = ...
semB.signal();
semA.wait();
}
}
};
class B : public Thread {
protected:
void run() {
while(1) {
semB.wait();
z = x + y;
semA.signal();
}
}
};
5. задатак
Поставка
Шта је основни разлог за то да линкер обавља задатак у два пролаза? Прецизно објаснити.
Решење
У првом пролазу линкер анализира улазне фајлове, величину њиховог бинарног садржаја и прави маоу извршивог фајла. У табелу симбола уноси све извезене симболе из објектних фајлова за које може да израчуна адресу у односу на цео извршиви фајл. У другом пролазу линкер генерише бинарни код и уједно разрешава неразрешена адресна поља машинских инструкција на основу информација о адресама у које се премештају симболи из табеле симбола.
6. задатак
Поставка
Навести најмање три сличности (нпр. заједнички захтеви, ограничења или проблеми) између континуалне алокације меморије и сегментне алокације меморије процеса.
Решење
- ОС мора да организује и одржава структуру података за евиденцију слободних фрагмената
- ОС мора да спроводи неку од техника динамичке алокације
- проблем екстерне фрагментације
7. задатак
Поставка
Којом техником се недељиви уређај може учинити виртуелно дељивим? Навести класичан пример таквог уређаја за који се најчешће примењује ова техника.
Решење
Споолинг-ом. Класичан пример је штампач.
8. задатак
Поставка
У фајл подсистему неког оперативног система не води се табела отворених фајлова за сваки процес, већ постоји само једна глобална табела отворених фајлова за цео систем. Другим речима, не постоји никаква информација о употреби отвореног фајла локална (приватна) за појединачни процес, већ су све такве информације глобално дељене. Да ли појам показивача тренутне локације (курзора) за читање/упис у фајл има смисла чувати у глобалној табели отворених фајлова и зашто?
Решење
- Овај задатак није решен. Помозите СИ Wики тако што ћете га решити.
9. задатак
Поставка
Дати процену комплексности датих операција са директоријумом у односу на број постојећих фајлова н у директоријуму, за наведене имплементације директоријума, уколико у случају хасх табеле нема ниједне колизије.
Решење
- Овај задатак није решен. Помозите СИ Wики тако што ћете га решити.
10. задатак
Поставка
Неки фајл систем користи индексирани приступ алокацији фајлова са индексима у два нивоа, блоком величине 256КБ и 64-битним адресама физичких блокова. Колика је максимална величина фајла у овом систему?
Решење
Број улаза: 256КБ / 8Б = 2^15
Максимална величина фајла: 2^15 * 2^15 * 2^18 = 2^48