UL/FRI/UNI-RI/OPO/Izpiti/2005-09-02
Iz E-študij, proste zakladnice študentskega znanja
|
Izpit z dne 02.09.2005
Čas pisanja: 45 minut.
|
Kaj je spooling, kaj omogoča?
Spooling (Simultaneous Peripheral Operation On Line) je način nalaganja poslov. Pojavil se je skupaj z magnetnim diskom, ki služi kot vmesnik za hranjenje poslov (buffer) in za začasno hranjenje rezultatov opravljenih poslov.
Potek:
- Če je vhodna naprava pripravljena, procesor prekine s trenutnim delom in prebere vhodni podatek na disk. Vsak posel ima svoj prostor na disku.
- Ko je posel na vrsti za obdelavo, procesor vse o njem prebere z diska.
- Izhodne podatke posla procesor izpisuje na disk.
- Ko so pripravljeni rezultati posla in izhodna naprava, procesor prekine s trenutnim delom in rezultate prepiše z diska na izhodno napravo.
Prednosti:
- boljša izkoriščenost procesorja.
Slabosti:
- tak procesor je težko maksimalno izkoristiti,
- ni interaktivnosti,
- uporabnik dolgo čaka (velik obračalni čas).
Dobro za lastnike, slabo za uporabnike.
Spooling omogoča multiprogramiranje, saj je na disku lahko shranjenih več poslov naenkrat, pripravljenih za izvajanje. Disk nudi hiter dostop do naslednjega posla.
Kaj vpliva na čas menjave okolja?
Faktorji vpliva:
- število registrov procesorja, ki se shranijo v PCB,
- hitrost pomnilnika,
- obstoj ukazov za sočasno shranjevanje registrov,
- velikost PCB,
- ali OS podpira swaping,
- zapletenost OS-a,
- algoritem za razvrščanje,
- kakšen dodeljevalnik uporabljamo,
- housekeeping (brisanje tmp datotek, sproščanje pomnilnika, ažurira porabljeni čas trenutnemu procesu, detekcija mrtvih zank, ažurira podatke v pomnilni hierarhiji...),
- ...
Kakšne so podobnosti in razlike med nitmi in procesi?
Podobnosti:
- oboji so lahko v istih fazah (nov, pripravljen, teče, čaka, končan),
- oboji lahko ustvarjajo in uničujejo svoje potomce,
- oboji tekmujejo za procesor.
Razlike:
- komunikacija med istorodnimi nitmi je bistveno hitrejša,
- istorodne niti si deliji programsko kodo, globalne spremenljivke,
- niti določa manj podatkov( PC, registri, ID, sklad),
- niti normalno niso zaščitene ena pred drugo (nevarnosti),
- ustvarjanje, končanje niti je hitrejše.
Kaj veš o komunikaciji preko skupnega pomnilnika (opiši kako izgleda v UNIX-u)?
- Komunikacija preko skupnega pomnilnika je hitrejša kot IPC komunikacija, saj kopiranje sporočil od sprejemnika k oddajniku ni potrebno.
- Procesi pri komunikaciji ne potrebujejo pomoči OS. OS potrebujejo le za rezervacijo in priključitev skupenga pomnilnega prostora.
UNIX:
- proces, ki želi komunicirati z drugimi procesi prosi OS naj mu poišče pomnilnik dane velikosti,
- OS mu priključi pomnilnik izven procesovega naslovnega prostora,
- drugi procesi (ki želijo komunicirati z njim) vključijo ta pomnilnik v svoj naslovni prostor z ukaz attach,
- odrežejo ga z ukazom detach.
Prednosti:
- hitreje kot prenašanje sporočil,
- OS je manj obremenjen.
Slabosti:
- OS poskrbi samo za to, da lahko različni procesi naslavljajo isti del pomnilnika,
- za usklajeno komuniciranje mora poskrbeti uporabnik (programer).
Pri komunikaciji se uporablja IPC objekt - shm.
Kaj je problem kritičnih sekcij? Opiši programsko rešitev problema!
Poblem kritičnih sekcij: kako zagotoviti sočasno izvajanje procesov (katerih vsak ima svojo kritično sekcijo), da bodo izpolnjene naslednje zahteve:
- vzajemno izključevanje proceov (sočasno naj se izvaja le ena kritična sekcija),
- omejeno čakanje procesov,
- omejeni vpliv na izbor naslednjega procesa, ki bo izvajal kritično sekcijo,
- neodvisnost rešitve od števila procesov, ki imajo kritično sekcijo in od tehnoloških značilnosti.
Programske (algoritmične) rešitve:
- dovoljenje (spremenljivka, ki pove kateri proces gre lahko v k.s., uporaba pri dveh procesih, izmenično vstopata),
- polje spremenljivk, v katerem ima vsak proces svojo celico, tisti, ki želi vstopiti, postavi celico na 1 in ne vstopi dokler ni celica od drugih na 0,
- proces prepusti dovoljenje drugemu procesu. Dokler mu drugi proces ne da dovoljenja ali dokler ne bo drugi proces zapustil ks, ne bo vstopil v ks:
zahteva[i] = true; dovoljenje = j; while ((zahteva[j]) && (dovoljenje == j)) no_op; k.s. zahteva[i] = false;
- bakery algoritem (za poljubno število procesov)
- Proces najavi, da bo prejel številko.
- Procesu se dodeli naslednja številka po vrsti (ista številka se dodeli lahko obema procesoma).
- Proces najavi, da se mu je dodelila številka.
- Proces poskuša vstopiti v kritično sekcijo. Vstopi lahko če:
- se nobenemu od procesov ne dodeljuje številka,
- imajo vsi procesi, večjo ali enako številko ali enako 0,
- imajo procesi z enako številko večji PID.
- Ko proces izstopi iz kritične sekcije, se postavi številka na 0.
Bakery algoritem rešuje problem kritičnih sekcij, a je časovno potraten. Zato raje uporabljamo programske rešitve v kombinaciji s strojnimi (ukazi s strojno podporo).