Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.4.Wybraneproblemyprogramowaniawspółbieżnego
17
Dwalubwiększaliczbasemaforów,którychsumaskładowychcałkowitychnieprzekra-
czapewnejzadanejwartościN,tworzątzw.semaforrozdzielny(ang.splitsemaphore).
WprzypadkugdyNl1,mamydoczynieniazbinarnymsemaforemrozdzielnym.
Użyciesemaforarozdzielnegojestuważanezajednązmetodsynchronizacji,wktórejse-
maforytworzącesemaforrozdzielnypodnoszoneiopuszczanewróżnychzadaniach.
Koniecznośćtakazachodziwtedy,gdyzadaniamuszączekaćnazdarzeniawystępujące
winnychzadaniach.Inaczejjestnp.wrozwiązaniuproblemuwzajemnegowykluczania
zrys.1.5,wktórymsemaforsjestopuszczanyipodnoszonyprzeztosamozadanie.
1.4.3.Problemucztującychfilozofów
Problemucztującychfilozofówjestklasycznymproblememsynchronizacji,wktórym
zadaniawymagająjednoczesnegodostępudowięcejniżjednegozasobu.Problemten
formułowanyjestnastępująco.Pięciufilozofówsiedzidookołaokrągłegostołu,spę-
dzającczasnawykonywaniudwóchczynności:myśleniaijedzenia.Naśrodkustołu
znajdujesięmisazestaleuzupełnianymspaghettiorazpięćtalerzy,pojednymprzed
każdymzfilozofów.Abyjeść,filozofpotrzebujedwóchwidelcówleżącychnastole
pojegoprawejilewejstronie,przyczymfilozofmożepodnieśćprawybądźlewy
widelec(lubnaodwrót),alenieobanaraz.Widelcówjesttylkopięćikażdyznich
możebyćużywanywdanejchwiliprzezjednegofilozofa.Takwięcjednocześnie
mogąjeśćconajwyżejdwajfilozofowieniesiedzącyprzystoleoboksiebie(rys.1.9).
Filozofówbędziemyrozpatrywaćjakozadania,któredorealizacjiczynnościjedzenia
powinnyuzyskaćdostępdodwóchzasobówwpostaciwidelców.Problempolegana
odpowiedniejsynchronizacjidostępudowidelców,takabykażdyzfilozofówmógł
realizowaćnaprzemiennieczynnościjedzeniaimyślenia.Załóżmy,żefilozofomiwi-
delcomprzypisanonumeryod0do4orazżefilozofimapolewejstroniewideleci,
Rysunek1090Ilustracjaproblemuucztującychfilozofów;
F0...F4filozofowie,W0...W4widelce
W0
F4
W4
F0
W1
F3
W3
F1
W2
F2