Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
Programowanie wspóÅbieżne. Systemy czasu rzeczywistego - Helion
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
258 <strong>Programowanie</strong> wspóbiene. <strong>Systemy</strong> <strong>czasu</strong> <strong>rzeczywistego</strong><br />
Bariery dla wej wykluczaj jednoczesne przebywanie w czytelni pisarzy i czytelników.<br />
Ponadto warunek Zacznij_Zapisywac'Count = 0 dla wejcia Zacznij_Czytac gwarantuje<br />
brak zagodzenia pisarzy, poniewa czytelnik jest zablokowany na wejciu do czytelni<br />
w przypadku, gdy którykolwiek pisarz oczekuje na wywoanie wejcia Zacznij_Zapisywac.<br />
8.3.5. Podsumowanie<br />
Z powyszych prezentowanych rozwiza wynika, e problem pisarzy i czytelników<br />
jest abstrakcj problemów rzeczywistych, w których istnieje prawdopodobiestwo<br />
zagodzenia jednej z grup procesów, w szczególnoci dotyczy to zagodzenia pisarzy.<br />
Dane mechanizmy — m.in. spotka, monitor, obiektu chronionego — pozwalaj<br />
okreli liczb procesów czekajcych na wejcie do czytelni. Ta wasno mechanizmów<br />
w efektywny i w prosty sposób pozwalaa zaimplementowa reguy gwarantujce<br />
ywotno lokaln programu. Brak tej wasnoci w przypadku semafora generowa<br />
natomiast skomplikowany kod rozwizania.<br />
Na podstawie rozwiza trzech klasycznych problemów wspóbienych mona sformuowa<br />
ogólny wniosek, e dany mechanizm synchronizacji jest dedykowany dla konkretnych<br />
klas problemów programowania wspóbienego. Innymi sowy, dany mechanizm<br />
synchronizacji efektywnie i w naturalny sposób rozwizuje pewn klas problemów,<br />
jest natomiast pozbawiony tych cech dla innej klasy problemów wspóbienych. Dobrym<br />
przykadem ilustrujcym t wasno jest mechanizm obiektu chronionego zastosowany<br />
w implementacji bufora w problemie producenta i konsumenta, w implementacji<br />
czytelni dla problemu pisarzy i czytelników oraz w implementacji problemu piciu<br />
filozofów. Dla pierwszych dwóch problemów implementacja bya najefektywniejsza<br />
(w sensie liczby niezbdnych operacji synchronizujcych procesy) oraz najbardziej<br />
elastyczna w sensie atwoci adaptacji w innych aplikacjach w porównaniu z innymi<br />
mechanizmami synchronizacji. W przypadku problemu piciu filozofów natomiast<br />
obiekt chroniony okaza si mechanizmem najmniej efektywnym.<br />
Ponadto przyjte rozwizanie dla danego problemu wspóbienego ma wpyw na wybór<br />
odpowiedniego mechanizmu synchronizacji. W problemie piciu filozofów rozwaalimy<br />
dwa moliwe rozwizania negujce jeden z koniecznych warunków wystpienia<br />
blokady: warunek cyklicznego oczekiwania lub warunek czciowego<br />
przydziau. Zastosowanie semafora ogólnego pozwalao na efektywn implementacj<br />
gwarantujc negacj warunku cyklicznego oczekiwania. Negacja warunku czciowego<br />
przydziau zasobów w oparciu o mechanizm semafora bya natomiast skomplikowana<br />
i mao elastyczna. Z kolei monitor dziki moliwoci zawieszania procesów w kolejkach<br />
zwizanych ze zmiennymi warunkowymi w prosty i przejrzysty sposób pozwala na<br />
implementacj negacji warunku czciowego przydziau zasobów.<br />
8.4. wiczenia i zadania<br />
1. Zaproponuj implementacj automatu komórkowego znanego jako „Gra w ycie”<br />
w oparciu o nastpujce mechanizmy synchronizacji: semafory oraz obiekty<br />
chronione.