Sr-10-wyk-1.0-Slajd34

From Studia Informatyczne

Protokół VcSG

Protokół VcSG


Protokół VcSG korzysta z wektorów wersji opartych na klientach. Podobnie jak w przypadku protokołu VoSG przetwarzanie wektorów wersji wymaga pewnych modyfikacji. Przeanalizujmy jednak najpierw przykład z rysunku po lewej stronie. Klient C1 dokonuje dwóch zapisów do różnych zmiennych x i y , na różnych serwerach. Serwery, podczas wykonywania zapisów, dokonują aktualizacji swoich wektorów wersji na odpowiednich pozycjach reprezentujących zgłaszającego się klienta, niech to będzie pozycja pierwsza w przypadku klienta C1 . Klient C2 realizuje odczyty zmiennej x : najpierw z serwera S1 , a później z serwera S2 . Po pierwszym odczycie aktualizowany jest jego wektor RC2 do wartości [1 0], którą przekazuje do serwera S2 wykonując drugi odczyt. Niestety pomimo wymagania gwarancji MR serwer S2 nie wykonał jeszcze zapisów, które miały wpływ na wynik zaobserwowanej wcześniej wartości zmiennej x , pomimo, że wektor wersji serwera dominuje nad wektorem wersji przekazanym przez klienta. Podobnie jak w przypadku protokołu VoSG problemem jest w tym przypadku nieunikalność wartości wektorów wersji wykorzystywanych do etykietowania zapisów. Unikalność taką można osiągnąć wymuszając globalne porządkowanie operacji zapisu zlecanych przez poszczególnych klientów. Działanie takie będzie równoważne wymuszeniu gwarancji MW dla każdego klienta. Rysunek po prawej przedstawia tą samą sytuację, ale po uporządkowaniu zapisów pochodzących od klientów. Dzięki temu realizacja drugiego zapisu klienta C1 musi być poprzedzona aktualizacją serwera S2 ,, co umożliwi poprawne zrealizowanie operacji odczytu przez klienta C2 .


<< Poprzedni slajd | Spis treści | Następny slajd >>