Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
12
1.Procesywspółbieżne
1.s:semafor:=(17);--semaforbinarny
2.taskZ1;--specyfikacjazadań
3.taskZ2;
4.taskbodyZ1is--treść(ciało)zadaniaZ1
5.begin
6.
loop
7.
wait(s);--protokółwstępny
8.
--sekcjakrytyczna
9.
signal(s);--protokółkońcowy
10.
--resztazadania
11.
endloop;
12.endZ1;
13.taskbodyZ2is--treśćzadaniaZ2
14.begin
15.
loop
16.
wait(s);--protokółwstępny
17.
--sekcjakrytyczna
18.
signal(s);--protokółkońcowy
19.
--resztazadania
20.
endloop;
21.endZ2;
Rysunek1050Rozwiązanieproblemusekcjikrytycznejzapomocąsemafora
występujetakżezakleszczenie.Załóżmy,żeobazadaniaZ1iZ2zostaływstrzymane
przezoperacjęwait(s).Wówczasmusizachodzićs.wl0,cooznacza,żektóreś
zzadańwykonujesekcjękrytyczną.Jesttosprzecznezzałożeniem,żeobazadania
wstrzymane.Wanalizowanymrozwiązaniuniewystępujetakżezagłodzenie.Niech
zadanieZ1czekawkolejce,azadanieZ2wykonujesekcjękrytyczną.Pozrealizowaniu
sekcjikrytycznejzadanieZ2wykonaoperacjęsignal(s),wwynikuczegozostanie
wznowionewykonywaniezadaniaZ1.Niejestwięcmożliwe,żezadanieZ1nadalbędzie
wstrzymane,aZ2ponowniebędziemogłowykonaćswąsekcjękrytyczną.Zpowyż-
szychrozważańwynika,żewarunkibezpieczeństwaiżywotnościspełnione,azatem
rozwiązaniezrys.1.5jestpoprawne.
Rozwiązanietomożnałatwouogólnićnan,n>2,zadańopostaciprzedstawionej
narys.1.6przyniezmienionejspecyfikacjisemafora.Uogólnienietomaidentyczne
własnościcopoprzednierozwiązanie.Własnośćbrakuzagłodzeniarywalizującychze
sobązadańwynikazzastosowaniakolejkiFIFOdlaczekającychzadań.Wnajgorszym
przypadkudowolnezadanieotrzymazasóbposkorzystaniuzniegoprzezn11zadań,
któremogąjepoprzedzaćwkolejce(por.ćw.1.4).
Zauważmy,żerozwiązanieproblemusekcjikrytycznejpokazanenarys.1.5polega
naodpowiedniejsynchronizacjiwykonaniasekcjikrytycznychprzezzadaniaZ1iZ2.