Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
18
1.Procesywspółbieżne
apoprawejwidelec(i+1)mod5.Przyjmijmy,żewidelcereprezentowaneprzez
semaforybinarne:
widelec:array(0..4)ofsemafor:=(0..4l>(17));
Próbarozwiązaniaproblemuucztującychfilozofówjestprzedstawionanarys.1.10.
Każdyfilozofreprezentowanyjestprzezjednozadanie.Filozofpodnosinajpierwlewy,
apóźniejprawywidelec(wiersze6–7).Jeśliktóryśzwidelcówjestniedostępny,to
filozofmusiczekać.Poudanympodniesieniuwidelcówfilozofsięposila,anastępnie
odkładawidelce(wiersze9–10).Niestety,rozwiązanietoniejestpoprawnezuwagi
1.taskFilozofi;--dlail0,1,...,4
2.taskbodyFilozofiis
3.begin
4.
loop
5.
MYŚL;
6.
wait(widelec(i));--podnieślewywidelec
7.
wait(widelec((i+1)mod5));--podnieśprawywidelec
8.
JEDZ;
9.
signal(widelec(i));--połóżlewywidelec
10.
signal(widelec((i+1)mod5));--połóżprawywidelec
11.
endloop;
12.endFilozofi;
Rysunek10100Rozwiązanieproblemuucztującychfilozofów,wktórymmożewystąpićzakleszczenie
namożliwośćwystąpieniazakleszczeniapowodującegozagłodzeniefilozofów.Wystąpi
onowtedy,gdykażdemufilozofowiudasiępodnieśćlewywidelec(wiersz6).Wówczas
wszyscyfilozofowiebędąwnieskończonośćczekaćnaprawywidelec12(wiersz7).
Istniejekilkasposobówpoprawytegorozwiązania,takabyuniknąćzakleszczenia
izapewnićżywotnośćfilozofom.Pierwszysposóbpoleganaograniczeniuliczbyjed-
nocześnieucztującychfilozofówdoczterech.Wtedyzawszejedenzfilozofówbędzie
mógłuzyskaćdostępdolewegoiprawegowidelca.Wrozwiązaniuprzedstawionymna
rys.1.11wprowadzonosemaforogólnysą_miejsca(wiersz1)gwarantującyobecność
przystoleconajwyżejczterechfilozofów.Łatwozauważyć,żewrozwiązaniutymżaden
zwidelcówniejestjednocześnieużywanyprzezdwóchfilozofów.Dostępdowidelca
odbywasiębowiemzapośrednictwemsemaforabinarnegozapewniającegoprzydział
widelcatylkojednemufilozofowi.Wrozwiązaniuniemożetakżewystąpićzagłodzenie
filozofa.Abytouzasadnić,załóżmy,żejestprzeciwnie,tj.filozofijestzablokowanyna
zawszeprzezsemaforsą_miejsca.Wtakimprzypadkuprzystolemuszązasiadaćczterej
12Zwróćmyuwagę,żezakleszczenieustąpiłoby,gdybyjedenzfilozofówzrezygnowałzlewego
widelca,odkładającgo.