12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.6 Klasyczne problemy współbieżności2.6.1 Problem producenta i konsumentaProblem producenta i konsumenta polega na zsynchronizowaniu dwóch procesów:producenta, który cyklicznie produkuje jedną porcję informacji a następnie przekazuje ją doskonsumowania, i konsumenta, który cyklicznie pobiera porcję i konsumuje ją. Jeśli w danejchwili producent nie może pozbyć się wyprodukowanej porcji, musi czekać. Podobnie, jeślikonsument nie może pobrać porcji, także musi czekać. Porcje powinny być konsumowane wkolejności wyprodukowania.Rozważa się kilka wariantów tego problemu. W najprostszym producent przekazujeporcję bezpośrednio konsumentowi. Najbardziej popularny jest natomiast wariant, w którymzakłada się, że pomiędzy producentem a konsumentem znajduje się An- elementowy bufor (N> 0). Producent wstawia porcję do niepełnego bufora, a konsument pobiera ją z niepustegobufora. W wariancie trzecim (teoretycznym) zakłada się, że bufor jest nieskończony. Procesyproducenta i konsumenta muszą tak się synchronizować, aby operacje wstawiania i pobieraniaz tego samego elementu bufora wzajemnie się wykluczały.Problem, jak duży powinien być bufor, jest problemem efektywności przyjętegorozwiązania, a jego rozstrzygnięcie zależy od rozkładów czasu produkcji i konsumpcji. Jeśliśredni czas konsumpcji jest krótszy od średniego czasu produkcji, bufor może okazać sięniepotrzebny. Jeśli jest odwrotnie, dowolnej wielkości bufor okaże się po pewnym czasie zamały. Gdy średnie czasy produkcji i konsumpcji są równe, wielkość bufora dobiera się wzależności od wariancji tych czasów. Warto zaznaczyć, że problem producenta i konsumentajest abstrakcja wielu rzeczywistych problemów pojawiających się nie tylko w informatyce, aletakże w innych dziedzinach takich jak telekomunikacja, transport czy handel.W niniejszej książce będziemy rozważać także pewne modyfikacje problemuproducenta i konsumenta. Uwzględnimy wielu producentów i konsumentów (por. 3.2.2, 4.3.3,4.3.4), nie będziemy przestrzegać kolejności pobierania porcji (zad. 4.3.4), dopuścimywstawianie i pobieranie wielu porcji naraz (zad. 4.3.4).2.6.2 Problem czytelników i pisarzyProblem czytelników i pisarzy polega na zsynchronizowaniu dwóch grup cyklicznychprocesów konkurujących o dostęp do wspólnej czytelni. Proces czytelnik co jakiś czasodczytuje informację zgromadzoną w czytelni i może to robić razem z innymi czytelnikami.Proces pisarz co jakiś czas zapisuje nową informację i musi wówczas przebywać sam wczytelni. Zakłada się, że operacje czytania i pisania nie trwają nieskończenie długo.Problem ten jest abstrakcją problemu synchronizacji procesów korzystających zewspólnej bazy danych. Wiele procesów naraz może odczytywać informację zawartą w bazie,ale tylko jeden może ją modyfikować. Zazwyczaj rozważa się trzy rozwiązania tego problemu,z których dwa dopuszczają zagłodzenie czytelników bądź pisarzy.A. Rozwiązanie z możliwością zagłodzenia pisarzyZgodnie z warunkami zadania czytelnik, który zapragnie wejść do czytelni powinienmóc to zrobić, jeśli jest ona pusta lub, jeśli są w niej już inni czytelnicy. W przeciwnym razie(tzn. gdy w czytelni jest pisarz) powinien być wstrzymany do czasu, gdy zajdą warunki20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!