Sulejman
Evo i ja sam rješavao zadatke kroz semestar pa nek se nađe. Rješenja zadataka 1. 2. i 3. poglavlja iz skripte, ostatak ću napisati navečer il sutra ujutro. Moguće da ima grešaka, obavezno ispravite ako nađete koju.
1. poglavlje
1. Kako se iz programa koriste naprave? Zašto baš tako?
Naprave se iz programa koriste kroz sučelja, koja su predstavljena funkcijama (za C,to su funkcije nabrojane u poglavlju 1.1). Prednost ovog pristupa je da OS može komunicirati s bilo kojom napravom bez da mora detaljno poznavati njenu arhitekturu, tj. implementaciju.
2. Kojim sučeljima se mogu koristiti naprave? Koja su osnovna, a koja dodatna?
Vidi poglavlje 1.1.
3. Što su to asinkrone operacije?
Asinkrone operacije ne zahtjevaju komunikaciju između klijenata, dakle, klijent može izvršavati svoj posao neovisno o drugim klijentima. Klijent može biti OS, naprava, dretva, proces, bilo što, ovisi o kontekstu.
4. Navedite nekoliko mogućih podjela naprava ovisno o svojstvima, načinu spajanja, načinu kominkacije, smjeru podataka, ….
Brzina rada, smjer protoka podataka, je li naprava sinkrona ili asinkrona, način slanja podataka (serijski, paralelno) (blokovski, znak po znak) itd.
2. poglavlje
1. Ako zanemarimo način spajanja naprave, koji su osnovni načini upravljanja napravama?
Upravljanje radnim čekanjem, prekidima ili pomoću DMA.
2. Opisati osnovna načela upravljanja radnim čekanjem, prekidima, te korištenjem sklopova s izravnim pristupom spreminku (DMA).
Radno čekanje - program vrti petlju čekalicu koja provjerava status naprave.
Prekidima - program koji čeka da naprava nešto napravi biva blokiran. Kada se pojavi odgovarajući prekid, program se odblokirava i stavlja u red pripravnih dretvi.
DMA - naprava preko DMA zatraži sabirnicu i sama prenosi podatke.
3. U jednostavnom modelu jezgre ulazno-izlazne operacije može se pretpostaviti da naprava obavlja zadane joj naredbe slijedno. Stoga bi procesi koji su tražili takve operacije mogli biti u jednom uređenom redu, čekajući dovršetke svojih operacija. Koji su problemi ovog modela zbog specifičnosti stvarnih sustava? Kako se u stvarnim sustavima rješavaju takvi problemi?
U stvarnosti se operacije ne obavljauju FIFO. Problem se može rješit redovima zahtjeva ili korištenjem jezgrinog konteksta dretve.
4. Kako se rješava problem složenosti ostvarenja operacijskog sustava u stvarnim sustavima, npr. Linuxu?
Problem se rješava podjelom OS-a na podsustave i slojeve.
3. poglavlje
1. Kako se može pristupiti napravama, tj. njihovim upravljačkim sklopovima?
Napravama se pristupa izravno ili preko drugog međusklopa.
2. Zašto su stvarne arhitekture računala hijerarhijski građene, s premosnicama između različitih dijelova (sabirnica)?
Primarno zato da se sporije naprave mogu odvojiti od bržih. U suprotnom bi spore naprave ograničavale brze zbog povećanog čekanja na pravo za sabirnicu.
3. Nekim napravama pristupa se korištenjem adresa. Koji sve problemi zbog toga mogu nastati, tj. što treba “reći procesoru” u tom slučaju?
Ako OS koristi straničenje potrebno je adresu naprave mapirati u tablici prevođenja. Također je potrebno paziti da uvedene optimizacije u kodu ne narušavaju ispravnost rada naprave (npr. izmjena redoslijeda izvođenja operacija, korištenje priručnih spreminka)… Problem se rješava ubacivanjem posebnih instrukcija.
4. Zašto se koriste međuspremnici? Koju funkcionalnost obavljaju?
Međuspremnici se koriste radi povećanja učinkovitosti. Pouspješuju asinkronost između OS-a i naprave. Dodatno, omogućuje se slanje većih blokova podataka, što olakšava manipulaciju nad podacima, poput provjere ispravnosti.
5. Navesti vrste međuspremnika i opisati kako se oni koriste
Međuspremnik za jedan podatak - Jedna strana upiše podatak, pošalje signal da je podatak upisan, druga strana čita podatak, šalje signal da je podatak pročitan, repeat.
Dvostruki međuspremnik - dok naprava čita podatak iz prvog međuspremnika, OS piše u drugi međuspremnik. OS i naprava zatim rade sa suprotnim međuspremnicima itd. Tko piše, a tko čita ovisi o vrsti naprave.
Kružni međuspremnik - princip rada sličan dvostrukom međuspremniku, ali s N međuspremnika. Podaci popunjavaju slijedno međuspremnik po međuspremnik, kada se dođe do kraja vraća se na vrh. Potrebno je pamtiti indekse zadnje upisanog i pročitanog podatka da nebi došlo do pisanja preko nepročitanih podataka.
6. Usporediti međuspremnik (buffer) i priručni spremnik (cache).
Međuspremnik se odnosi na memorijski prostor između koji koriste dvije strane (npr. OS i naprava). Kada netko pročita podatke iz međuspremnika, brišu se. Dakle, nema kopije podataka.
Priručni spremnik koristi jedan “korisnik”, (npr. procesor). Služi za ubrzanje rada. Primjer korištenja -> procesor umjesto dohvata potrebnog podatka dohvaća cijeli blok u kojemu se traženi podatak nalazi i sprema ga u cache. Velika je vjerojatnost da će mu podaci iz tog bloka trebati u budućnosti, pa se tako smanjuje broj potrebnih sabirničkih ciklusa