to allow a data transfer to take place. A longer buffer is beneficial
in cases where the execution rates of the producer and consumer vary:
larger variability => longer buffer. If either one is continuosly
faster then using a longer buffer becomes counterproductive (why?).
Miten monitorin signal-operaatiolle määritellyt
toimintatavat "Signal and Wait" ja "Signal and Continue" eroavat toisistaan?
Miksi tällaisia täsmennyksiä on tarpeen määritellä?
(5p)
Monitorissa voi olla aktiivisena vain yksi prosessi kerrallaan. Kun signaloiva prosessi herättää odottavan prosessin, niin on kaksi aktiivista prosessia, joista vain toinen voi olla aktiivisena monitorissa. Pitää sopia siitä, kumpi.
"Signal and Wait": herätetty prosessi jää aktiiviseksi monitoriin ja sen herättänyt poistuu monitorista. Signal_all(cv) aiheuttaa ongelmia, mikä herätetyistä prosesseista saa monitorin?
"Signal and Continue": herätyssignaalin antanut prosessi jatkaa aktiivisena monitorissa ja herätetty siirtyy monitorin 'jonoon' odottamaan monitoriin pääsyä (monitorin lukkoa).( => Koska herätetty ei välttämättä pääse heti seuraavaksi monitoriin, herätetyn on tarkastettava mahdollinen ehto uudestaan ja se voi joutua takaisin odotustilaan, jos ehto ei olekaan enää voimassa. Tai sitten on käytetävä "contition passing"-tekniikkaa.)
"Signal and Continue" on yleisempi tapa.
(Anrewsin kirja s 208-209)
Mitä tarkoitetaan lukkiutumisella (deadlock), elolukkiutumisella (livelock) ja nälkiintymisellä (starvation)? (3 p)
Mihin ns. pankkiirin algoritmia käytetään? Mikä on pankkiirin algoritmin perusidea? Mitä tapahtuu asiakkaalle, jos pankkiiri ei suostu asiakkaan pyyntöön? Mitä tapahtuu, jos resurssimanageri antaa resurssiyksikön, vaikka pankkiirin algoritmin mukaan ei pitäisi? (5 p)
Pankiirin algoritmi
varmistaa ettei resurssin luovuttamien aiheuta lukkiintumista, vaan
kaikki prosessit pystytään suorittamaan loppuun, vaikka
kukin prosessi tarvitsisi maksimaalisen määrän
resursseja (pahin tapaus) eli löytyy jokin suoritusjärjetys,
jossa prosessit jossakin järjestyksessä pystytään
suorittamaan. Resurssi luovutetaan vasta kun on todettu, ettei se
aiheuta minkään prosessien lukkiutumista.
Asiakas
joutuu odottamaan, jos pankkiiri ei suostu asiakkaan pyyntöön.
Jos resurssimanageri antaa resurssiyksikön, vaikka pankkiirin algoritmin mukaan ei pitäisi, niin tilanne saattaa jossain tapauksessa johtaa lukkiutumiseen, mutta välttämättä näin ei käy. Prosessit eivät välttämättä tarvitse kaikki samanaikaisesti maksimimäärää resursseja.