ОС1/Јануар 2014
1. задатак
Поставка
Шта означава термин мултипрограмирање, а шта термин мултипроцесирање?
Решење
Мултипрограмирање означава извршавање упоредо више процеса на једном процесору. Док један процес чека на извршавање I/О операције, процесор извршава друге послове.
Мултипроцесирање означава извршавање процеса физички паралелно на више процесора.
2. задатак
Поставка
Коришћењем функција setjmp() и longjmp() из стандардне C библиотеке, реализовати операцију yиелд(јмп_буф олд, јмп_буф неw) која чува контекст нити чији је jmp_buf дат као први аргумент, одузима јој процесор и рестаурира контекст нити чији је jmp_buf дат као други аргумент, којој предаје процесор.
Решење
void yield(jump_buf old, jump_buf new) {
if(setjmp(old) == 0) {
longjmp(new, 1);
}
}
3. задатак
Поставка
На програмском језику Јава имплементирати нит (тхреад) која извршава празну петљу све док јој се позивом операције не каже да стане. Написати и код који прави и покреће Н таквих упоредних нити.
Решење
public class Main {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
for (int i = 0; i < n; i++) {
Thread thread = new Thread() {
@Override
public void run() {
try {
while(!Thread.interrupted()) {}
} catch(InterruptedException e) {};
}
}
thread.start();
}
}
}
4. задатак
Поставка
Коришћењем стандардних бројачких семафора написати код за условну синхронизацију два упоредна процеса од којих један испуњава неки логички услов, а други не сме да прође одређену тачку ако тај услов није испуњен.
Решење
var semA : Semaphore := 0;
semB : Semaphore := 0;
flag : boolean := false;
process A:
begin
loop
...
flag = true;
signal(semB);
wait(semA);
end
end
end A;
process B:
begin
loop
wait(semB);
signal(semA);
end
end
end B;
5. задатак
Поставка
Ако током свог првог пролаза линкер у својој табели пронађе претходно дефинисан симбол који је дефинисан у текућем фајлу (извози се), да ли ће пријавити грешку? Образложити.
Решење
Да, јер се већ налази у табели симбола и долази до конфликта имена.
6. задатак
Поставка
Шта је интерна фрагментација код алокације меморије? Да ли је она могућа код континуалне алокације меморије?
Решење
Интерна фрагментација представља неискоришћен део меморије унутар алоцираних блокова због ограничавања дозвољене величине блока. Код континуалне алокације постоји проблем екстерне али не и интерне фрагментације јер процес заузима тачно онолико простора колико му је потребно.
7. задатак
Поставка
У неком систему са страничном организацијом виртуелне меморије виртуелна адреса је 64-битна. Посматрају се два (теоријска) гранична случаја: а) неки процес користи цео свој виртуелни простор; б) неки процес користи само неколико суседних страница свог виртуелног простора. Који приступ организације ПМТ заузима мање меморије за ПМТ за сваки од ова два случаја: ПМТ организована у једном нивоу (линеарно) или ПМТ организована у више нивоа? Кратко образложити
Решење
Мање простора би заузимала ПМТ организована у једном нивоу јер би организовање у два нивоа изазвало алоцирање целе табеле првог и затим одређен број табела 2. нивоа.
8. задатак
Поставка
Којом техником се може блоковски оријентисани улазни уређај користити као знаковно оријентисани улазни ток? Кратко објаснити како.
Решење
Техником баферисања: посебан процес који контролише уређај. Са уређаја се узима блок по блок података и ставља у бафер. Корисник узима знак по знак као знаковно оријентисани улазни ток.
9. задатак
Поставка
Неки процес извршава редом следеће системске позиве. Под претпоставком да корисник у чије име се извршава овај процес има право приступа до оба фајла и на читање и на упис, и да оба позива за отварање фајлова успевају, навести који од преосталих позива ће бити успешан, а који неуспешан (уписати на линији поред позива).
FHANDLE f1 = fopen("x.doc", read);
FHANDLE f2 = fopen("y.doc", read | write);
fread(f1, buffer1, n1);
fwrite(f1, buffer2, n2);
fread(f2, buffer1, n1);
fwrite(f2, buffer2, n2);
Решење
Видети задатак из јунског рока 2011.
10. задатак
Поставка
Предложити и укратко објаснити неки начин вођења евиденције слободних блокова на диску који не користи никакав додатни простор за ту евиденцију (осим тих слободних блокова).
Решење
Први слободан блок садржи број слободних блокова и показивач на следећи.