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.8.3 KlasyfikacjaIstniejące mechanizmy synchronizacji i komunikacji można podzielić w zależności odarchitektury sprzętu, na którym się je zazwyczaj stosuje, na mechanizmy przeznaczone dlasystemów scentralizowanych i rozproszonych.Przez system scentralizowany rozumiemy taką architekturę systemu komputerowego, wktórej wszystkie procesory mają dostęp do jednej wspólnej pamięci. Oznacza to, że procesymogą komunikować się i synchronizować przekazując sobie potrzebne informacje przezwspólną pamięć. Mechanizmami realizowanymi we wspólnej pamięci są semafory, monitory,potoki, komunikaty unixowe oraz przestrzeń krotek.Przez system rozproszony rozumiemy taką architekturę systemu komputerowego, wktórej każdy procesor ma dostęp tylko do swojej własnej pamięci, natomiast wszystkieprocesory połączone są łączami umożliwiającymi przesyłania między nimi danych. Nie maprzy tym żadnych założeń co do rodzaju, długości i szybkości tych łączy. W tym rozumieniusystemem rozproszonym może być zarówno płyta zawierająca kilka transputerów, lokalna siećzłożona z wielu komputerów osobistych, jak i sieć rozległa obejmująca różnego typukomputery rozmieszczone w różnych miastach i państwach, a nawet kontynentach.Mechanizmami przeznaczonymi do komunikacji i synchronizacji w systemach rozproszonychsą spotkania oraz RPC.Jak już pisaliśmy, programowanie współbieżne z przeznaczeniem dla systemówrozproszonych nazywa się czasem programowaniem rozproszonym, aby podkreślić w tensposób odmienny charakter powiązań między procesami.Przedstawiony podział nie jest jednak ostateczny. Spotkania i RPC można stosować wsystemach scentralizowanych (co prawda są one mniej efektywne niż mechanizmyzaprojektowane specjalnie dla tych systemów). Z drugiej strony, takie mechanizmy jak potoki ikomunikaty unixowe logicznie niczym nie różnią się od mechanizmu zwykłych komunikatówprzesyłanych w systemach rozproszonych. Możliwe jest także zrealizowanie rozproszonejprzestrzeni krotek.Podział na scentralizowane i rozproszone mechanizmy programowania wygląda niecoinaczej z punktu widzenia struktury programu. Jeśli przyjmiemy, że program jestscentralizowany, gdy procesy komunikują się przez zmienne globalne, a rozproszony, gdyprocesy nie mają dostępu do zmiennych globalnych i jedynym sposobem wymiany informacjijest wysłanie komunikatu, to za mechanizmy scentralizowane musimy uznać mechanizmysynchronizacji (semafory, monitory) a za mechanizmy rozproszone — mechanizmykomunikacji (potoki, spotkania, przestrzeń krotek).Z drugiej strony zakładając, że sygnał synchronizujący jest po prostu pustymkomunikatem, możemy uznać, że wszystkie wspomniane tu mechanizmy są mechanizmamikomunikacji. Mechanizmy te można podzielić w zależności od narzucanych przez niepowiązań między procesami w czasie (kto na kogo musi czekać) oraz od powiązań wprzestrzeni (kto z kim się komunikuje).Ze względu na powiązania czasowe mechanizmy komunikacji dzielimy nasynchroniczne i asynchroniczne. Z komunikacją synchroniczną mamy do czynienia wówczas,gdy nadawca komunikatu musi poczekać, aż odbiorca go odbierze. Inaczej mówiąc, nadawca iodbiorca synchronizują się ze sobą w chwili przekazywania komunikatu. Wszelkiego typuspotkania (w tym także RPC) są zatem mechanizmami komunikacji synchronicznej.Z komunikacją asynchroniczną mamy do czynienia wówczas, gdy nadawca możewysłać komunikat w dowolnej chwili bez względu na to, co wtedy robi odbiorca. Nadawaniekomunikatu nie blokuje zatem nadawcy, ale oczywiście odbiór komunikatu jest możliwydopiero po jego nadaniu. Synchronizacja jest więc tu tylko jednostronna — odbiorca musi28

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

Saved successfully!

Ooh no, something went wrong!