mk2_kaja Flashcards
Oletetaan, että säie P käyttää kriittisiä alueita A ja B silloin tällöin. Joskus se käyttää vain A:ta, joskus
vain B:tä. Joskus A:n käytön aikana tarvitaan vähäksi aikaa myös B:tä. Joskus B:n käytön aikana tarvitaan
vähäksi aikaa myös A:tä. Säie Q toimii samalla tavalla. Anna skenaario, jossa P ja Q lukkiutuvat.
P varaa ja saa A:n. Q varaa ja saa B:n. P pitää A:n ja yrittää saada B:n. Q pitää B:n ja yrittää saada A:n ja odottaa sitä. Lukkiutuminen.
Oletetaan, että säie P käyttää kriittisiä alueita A ja B silloin tällöin. Joskus se käyttää vain A:ta, joskus
vain B:tä. Joskus A:n käytön aikana tarvitaan vähäksi aikaa myös B:tä. Joskus B:n käytön aikana tarvitaan
vähäksi aikaa myös A:tä. Säie Q toimii samalla tavalla.
Kuinka lukkiutumisen mahdollisuus voidaan ennakolta estää ohjelmoimalla P ja Q sopivasti?
A täytyy aina varata ensin. Esimjos Q:lla B ja haluu A pitää ensin vapauttaa B ja varata A ja sitten vasta B.
Oletetaan, että säie P käyttää kriittisiä alueita A ja B silloin tällöin. Joskus se käyttää vain A:ta, joskus
vain B:tä. Joskus A:n käytön aikana tarvitaan vähäksi aikaa myös B:tä. Joskus B:n käytön aikana tarvitaan
vähäksi aikaa myös A:tä. Säie Q toimii samalla tavalla.
Pitääkö molempien säikeiden koodia muuttaa kun halutaan estää deadlock? (täytyy varata A ensin) Perustele.
Kuinka voit todistaa, että ratkaisusi toimii?
Täytyy. Molemmat voivat varata nyt B ensin, joten täytyy muuttaa että voi vaan A ensin.
Kun useita resursseja varataan tietyssä järjestyksessä se estää odottavan kierron (???) circular wait mikä on yksi deadlockin neljästä edellytyksistä. Circular wait on nyt mahdoton, koska mikään prosessi jolla on B ei voi odottaa A:ta
Oletetaan, että kaksi säiettä P ja Q käyttävät samaa kriittistä aluetta CS silloin
tällöin. Lisäksi säie P jää aika ajoin odottamaan viestiä Q:lta. Anna skenaario, jossa P ja Q lukkiutuvat.
Kuinka lukkiutumisen voi estää?
P varaa ja saa CS. P odottaa viestiä Q:lta. Q:n pitää käyttää CS ennen kuin se voi lähettää viestin, joten Q odottaa CS. Deadlock
CS pitää jakaa kahtia -> CS1 ja CS2 jotta P voi vapauttaa CS1 kun se odottaa vastausta Q:lta. Tämän jälkeen varaa CS2. Ei samanaikaista CS käyttöä ja odotusta Q
Clock-algoritmi valitsee prosessin käytössä olevista kehyksistä jonkin uusiokäytettäväksi uutta juuri
viitattua sivua varten. Miksi CLOCK on parempi kuin FIFO (First In - First Out)?
Se pitää muistissa sivua joka on koko ajan käytössä vaikka se olisi ollut siellä jo pitkän aikaa
Mitä tietoja Clock-algoritmi käyttää päätöksen teossa? Kuka päivittää nuo tiedot ja milloin?
etsitään viittaamatonta sivua. käyttää use-bittiä (kun viitataan asetetaan 1, kun ohitetaan viitattu sivu asetetaan 0)
Milloin Clock-algoritmi käynnistyy ja milloin se päättyy?
käynnistyy aina kun tarvitaan uusi kehys. Päättyy viimeistään kierroksen jälkeen kun ainakin ensimmäinen viitattu use bitti vaihdettu nollaksi
Mikä ongelma Clock-algoritmissa on ja kuinka algoritmia pitäisi muuttaa sen vuoksi?
se ei ota huomioon onko kehys kirjoitettu vai ei . Algoa voi muokata niin että ensin se katsoo puhtaat kehykset (not modified) joihin ei ole viitattu lähiaikoina
I
PFF (Page Fault Frequency) algoritmi säätää dynaamisesti suoritusaikana prosessin kehysten
lukumäärää. Milloin PFF ajetaan?
It is run with each page fault.
Se ajetaan joka sivupuutoskeskeytyksellä
Mitä tietoja PFF käyttää päätöksenteossa? Kuka päivittää nuo tiedot ja milloin?
Page fault frequency
perustuu aikaan 2 viime sivupuutoskeskeytyksen välillä. Aina kun aktivoidaan säilöö nykyajan. Käyttää viittausbittejä joka kehyksestä jotta osaa päättää mikä postetaan. Laitteisto säätää 1 aina kun kehykseen viitataan ja PFF laittaa sen 0 aina kun se ajetaan
Milloin ja miten PFF muuttaa prosessille allokoitujen kehysten lukumäärää?
Jos aikaväli ?? on pieni PFF allokoi 1 kehyksen ja jos iso kaikki käyttämättömät (R=0) viime sivupuutoskeskeytyksen jälkeen poistetaan
Miksi PFF ei voi toimia Clock-algoritmin kanssa samaan aikaan?
Molemmat käyttävät viittausbittiä joka kehyksessä mutta eri tavalla. PFF tyhjentää viittaukset aina sivupuutoskeskeytyksellä (page fault) kun taas clock ei (ja pitää osan ennallaan)
They both use the reference bit in each frame, but in a different way. PFF clears all reference bits at every
page fault, whereas CLOCK needs to keep some of them intact.
a) [2 p] Selitä täsmälleen, mikä on aterioivien filosofien ongelman varsinainen ongelma.
Filosofit joko ajattelevat tai syövät – tarkemmin ilmaistuna ajattelevat, tulevat nälkäisiksi, syövät ja aloittavat taas ajattelun. Jokaisella filosofilla on edessään lautasellinen spagettia (joka ei koskaan lopu), ja lautasten väliin on asetettu yksi haarukka. Kukin filosofi tarvitsee kaksi haarukkaa syödäkseen, joten rinnakkain istuvat filosofit eivät voi syödä yhtä aikaa.
Ongelmana on se, että ratkaisu voi nälkiintyä (engl. starvation, suomennettu myös ”nääntyminen”) tai lukkiutua (engl. deadlock).
Anna ongelman (tunnetusti virheellinen) perusratkaisu ja siihen lukkiutuva skenaario.
Lukkiutuminen on tilanne, jossa kukaan ei pääse syömään koskaan. Näin voi tapahtua, jos algoritmin mukaan filosofi nostaa ensin oikean haarukan ja sitten vasemman haarukan. Jos kaikki filosofit tulevat nälkäisiksi yhtä aikaa, kukin heistä saa nostettua oikean haarukan käteensä, mutta kukaan ei saa vasenta haarukkaa. Niinpä kukaan ei pääse syömään, ja järjestelmä lukkiutuu.
Anna ongelmaan ei-lukkiutuva ratkaisu ja perustele, miksi se ei koskaan lukkiudu.
Bankers algorithm? numerojärkässä aina ensin pienempi… annetaan FS 5 vuoro ja toisille 0 to 4?