swap(x,y)
, joka vaihtaa normaalien
muistipaikkojen x
ja y
arvot
keskenään. Todista ratkaisusi turvallisuus ja lukkiutumattomuus
invarianssia käyttäen. Onko ratkaisusi reilu? Voiko se aiheuttaa
livelockin? (6p)asiakas: parturi: enter_saloon; wait_for_customer; "tukan leikkuu" "leikkaa tukka" exit_saloon; collect_bill;Muodosta monitori, jonka proseduureja ovat:
enter_saloon
,
wait_for_customer
, exit_saloon
,
collect_bill
ja joka pitää huolta siitä, että
jokaista asiakasta kohti on yksi "leikkaa tukka"
-tilassa oleva
parturi ja kääntäen. Monitorin on huolehdittava myös
siitä, että tukan leikkuita voi olla käynnissä kerrallaan
korkeintaan N
kappaletta. Esitä toimiva koodi sekä
monitorin speksi, eli siis monitorin invarianssi I
, odotusehdot
Bi
ja turhan odotuksen poissulkemisen osoittava predikaatti
J
. Onko monitorisi reilu (sen ei tarvitse olla)? (10p)