ОС1/Октобар 2020
1. задатак
Поставка
Коришћењем макроа test_and_set који у својој имплементацији извршава одговарајућу инструкцију процесора типа тест-анд-сет, имплементирати међусобно искључење критичне секције за вишепроцесорски приступ.
Решење
// Globalna
bool lock;
// Ulazak u kritičnu sekciju
while (test_and_set(&lock));
// Kritična sekcija
lock = false;
// ...
2. задатак
Поставка
Коришћењем стандардних бројачких семафора имплементирати класу са две операције, тицк и тоцк, тако да се оне могу извршавати из конкурентних процеса међусобно искључиво и само у следећем поретку: тицк, тицк, тоцк, тицк, тицк, тоцк...
Решење
#include <iostream>
class Clock {
public:
Clock() : tickSem(0), tockSem(2), mutex(1),
allowedTock(false) {}
void tick();
void tock();
bool allowedTock;
private:
Semaphore tickSem;
Semaphore tockSem;
};
void Clock::tick() {
tockSem.wait();
mutex.wait();
std::cout << "tick" << std::endl;
if (allowedTock) {
tickSem.signal();
}
allowedTock = !allowedTock;
mutex.signal();
}
void Clock::tock() {
tickSem.wait();
mutex.wait();
std::cout << "tock" << std::endl;
tockSem.signal();
tockSem.signal();
mutex.signal();
}
3. задатак
Поставка
У дефиницији семантике језика C++ пише да покушај индиректног уписа у објекат константног типа (означен као const), рецимо преко показивача на неконстанту, има „недефинисан ефекат“, што заправо значи да се оставља могућност да различите имплементације преводиоца и различите платформе (хардвер и ОС) овакве ситуације третирају на различите начине. Навести и прецизно објаснити какве тачно ефекте овакав упис може да има и на који начин долази до тих ефеката.
Решење
- Може да се деси да преводилац више константи исте вредности алоцира на истом месту (као што на пример постоји стринг поол у Јави) па се уписом у једну константу мењају и све остале.
- Може да се деси да се те константе чувају на страници која није дозвољена за упис (страница са кодом) па се приликом тог уписа генерише грешка у приступу страници и оперативни систем угаси процес.
4. задатак
Поставка
У неком систему са страничном организацијом виртуелне меморије виртуелна и физичка адреса су 30-битне, адресибилна јединица је бајт, а страница је величине 64 КБ. ПМТ је организована у два нивоа и један улаз у ПМТ оба нивоа заузима по једну 32-битну реч. ПМТ оба нивоа су исте величине. Колико укупно заузимају ПМТ за процес који је алоцирао првих 256 и последњих 256 страница?
Решење
- ВА(30): Паге1(7) Паге2(7) Оффсет(16)
- ПА(30): Фраме(14) Оффсет(16)
Пошто се из једног ПМТ може адресирати укупно улаза у ПМТ, и сваки улаз заузима , то значи да један ПМТ укупно заузима . За адресирање 256 страница потребно је два ПМТ другог нивоа, тако да се укупно ствара 5 ПМТ, и укупна заузета величина је .
5. задатак
Поставка
Да ли је драјвер уређаја (девице дривер) софтверска или хардверска компонента рачунара? Ако је софтверска, да ли је компонента оперативног система или корисничког програма? Ако је хардверска, да ли је компонента везана за функционисање оперативне меморије или улазно/излазног уређаја?
Решење
Драјвер је софтверска компонента која може али не мора бити део оперативног система (нпр. микрокернелски оперативни системи) и служи за стандардизовану комуникацију са улазним и излазним уређајима. Драјвере обично производе произвођачи уређаја за који су ти драјвери прављени и обично се покрећу у привилегованом режиму (али то не мора бити случај).
6. задатак
Поставка
Укратко објаснити концепт „тврде везе“ (хард линк) у фајл систему који подржава структуре директоријума типа усмереног ацикличког графа (ДАГ).
Решење
Тврда веза је веза на датотеку која служи томе да одржава датотеку у фајл систему, јер док год постоје тврде везе на неку датотеку она и даље постоји, и кад се све тврде везе обришу она престаје да постоји.
7. задатак
Поставка
Како се код ФАТ фајл система имплементира евиденција слободних блокова?
Решење
Код ФАТ фајл система се у ФАТ табели могу уланчавати слободни блокови, или једноставно бити означени посебним нулл вредностима.