ОС1/Јул 2012
1. задатак
Поставка
Шта је то мултипроцесорски систем, а шта дистрибуирани систем? Навести по један пример сваког.
Решење
Мултипроцесорски систем је рачунарски систем са више процесора који имају заједничку (дељену) оперативну меморију. Процесори могу да приступају тој дељеној меморији тј. да читају из ње и у њу уписују, нпр. преко заједничке магистрале. Пример би био данашњи персонални рачунар.
Дистрибуирани систем је систем са више процесора који немају заједничку оперативну меморију, већ сваки процесор има своју, али су повезани комуникационом мрежом преко које могу размењивати поруке. Пример: ЛАН мрежа у неком предузећу, цлоуд сервиси...
2. задатак
Поставка
Коришћењем функција setjmp и longjmp из стандардне C библиотеке реализовати операцију wait на бројачком семафору у школском језгру
Решење
void Semaphore::wait() {
lock();
if (--val < 0) {
if (setjmp(Thread::running->context) == 0) {
blocked.put(Thread::running);
Thread::running = Scheduler::get();
longjmp(Thread::running->context, 1);
}
}
unlock();
}
3. задатак
Поставка
Навести најмање три случаја (повода) у којима процес губи процесор и прелази у ред спремних (реадy) и назначити да ли се то дешава као последица системског позива тог процеса или спољашњег прекида.
Решење
- Диспатцх - системски позив
- Због истека додељеног времена - тајмер генерише прекид, асинхроно
- Услед неке хаварије скаче се на код кернела а процес се ставља у распоређивач - јавља се услед прекида
4. задатак
Поставка
Ограничени бафер је имплементиран помоћу бројачких семафора на следећи начин (остатак класе је дефинисана на очигледан начин, као на предавањима). Шта је проблем са овом имплементацијом?
void BoundedBuffer::append (Data* d) {
mutex.wait();
spaceAvailable.wait();
buffer[tail] = d;
tail = (tail+1)%N;
itemAvailable.signal();
mutex.signal();
}
Решење
У случају да је бафер био пун а произвођач покушава да упише податак, заблокираће се на spaceAvailable семафору. Потрошач ће се заблокирати на улазу у критичну секцију и доћи ће до мртвог блокирања.
5. задатак
Поставка
По чему се разликује посао линкера када је његов производ извршиви програм од онога када је то библиотека?
Решење
Другачији је производ. Код је бинаран код еxе, нема заглавље и нема неразрешених симбола. .lib може да има симболе које увози и који остају неразрешени и увек има заглавље са симболима које извози.
6. задатак
Поставка
Виртуелни адресни простор система је 4ГБ, адресибилна јединица је бајт, а виртуелни адресни простор је организован странично са страницом величине 16КБ. Физички адресни простор је величине 1ГБ. Табеле пресликавања страница су организоване у два нивоа, с тим да табела првог нивоа има 2К улаза. Приказати логичку структуру виртуелне адресе и означити ширину сваког поља. Означити и поделу поља за број странице на поља за индексирање ПМТ првог и другог нивоа.
Решење
- ПА: фраме(16), оффсет(14)
- ВА: ПМТ1(11), ПМТ2(7), оффсет(14)
7. задатак
Поставка
Неки систем са страничном организацијом меморије користи технику цопy он wрите. Један процес је тек креирао други процес позивом fork(). Ако новокреирани процес одмах по покретању изврши операцију уписа у меморију, који изузетак ће генерисати процесор, паге фаулт или неки други и који? Прецизно објаснити зашто и како.
Решење
При позивању fork(), процес дете дели све странице са родитељем, не копирају се. Све странице у својим дескрипторима ће имати права и уписа и читања. Докле год оба процеса само читају податке не прави се копија за процес дете. Када било ко затражи упис генерише се изузетак и страница се копира.
8. задатак
Поставка
На асемблеру неког замишљеног РИСЦ процесора са ЛОАД/СТОРЕ архитектуром написати програм и прекидну рутину која преноси блок података задате дужине са задате адресе на излазни уређај коришћењем програмираног улаза/излаза са прекидом.
Решење
main: LD R1, blockAddr
LD R2, cnt
LD R3, #0
ST [ctrl], #0..1
wait: CMP R3, #1
JNZ wait
HALT
intr: LD R0, [R1]
ST [data], R0
INC R1
DEC R2
JNZ ret
LD R3, #1
ST [ctrl], #0
ret: RTI
9. задатак
Поставка
Шта је по вашем мишљењу основна сврха (мотив) постојања концепта текућег директоријума процеса?
Решење
Релокатибилност процеса.
10. задатак
Поставка
Зашто фајл системи по правилу покушавају да алоцирају суседне блокове на диску за садржај истог фајла, чак и ако то није неопходно за дату алокацију (уланчану или индексну)?
Решење
Алоцирају се суседни блокови за исти фајл да би време приступа било што краће, тј. да би се глава хард диска што мање померала.