10.03.2015 Views

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

74 Rozdział 4. Tolerowanie bizantyjskich uszkodzeń<br />

• Potwierdzenie zebrane od f +1 replik wystarcza, by zatwierdzić<br />

zlecenie i wysłać odpowiedź klien<strong>to</strong>wi 11 , jed<strong>na</strong>k dopiero 2f +1potwierdzeń<br />

jest dowodem tego, że stan replik jest spójny i może zostać<br />

zatwierdzony.<br />

• Przetwarzanie odbywa się tak długo, jak w wek<strong>to</strong>rze R g pozostają<br />

zlecenia do wyko<strong>na</strong>nia.<br />

Pro<strong>to</strong>kół opisany w tym paragrafie będzie dalej oz<strong>na</strong>czany symbolem BF2.<br />

Wzajemne wykluczanie. Ponieważ wszystkie repliki w grupie wykonują zlecenia<br />

uporządkowane według kolejności w R g , zatem istnieje potencjal<strong>na</strong> możliwość<br />

łatwego poszerzenia algorytmu o wzajemne wykluczanie. W tym celu<br />

klient c wysyła <strong>na</strong> początku specjalne zlecenie zajęcia usługi (ang. lock) . Repliki<br />

<strong>na</strong>potykając zlecenie lock wwek<strong>to</strong>rzeR g sprawdzają czy wśród reszty<br />

zleceń od tego samego klienta, który zamówił obiekt jest zlecenie zwolnienia<br />

(ang. release). Jeżeli zlecenie release z<strong>na</strong>jduje się w R g <strong>to</strong> repliki nie robią nic.<br />

Jeżeli <strong>na</strong><strong>to</strong>miast zlecenie <strong>to</strong> nie występuje, <strong>to</strong> resztę zleceń ustawiają w kolejce<br />

typu FIFO oz<strong>na</strong>czonej np. Q Rg , wykonują zlecenia klienta c i przechodzą do<br />

<strong>na</strong>stępnej rundy. Zlecenia zebrane w kolejnej rundzie są ustawiane <strong>na</strong> koniec kolejki<br />

Q Rg jeżeli pochodzą od innych klientów, aż do momentu <strong>na</strong>potkania relase<br />

od klienta c. Wtedy w kolejnej rundzie wykonuje się zlecenia zebrane w Q Rg .<br />

Należy zagwaran<strong>to</strong>wać, by podczas wyko<strong>na</strong>nia nie wystąpiło przywłaszczenie<br />

usługi, tzn. że tylko jeden klient ciągle będzie zajmował obiekt. W tym celu<br />

moż<strong>na</strong> użyć <strong>na</strong>stępującego algorytmu:<br />

Załóżmy, że z<strong>na</strong>my identyfika<strong>to</strong>ry wszystkich klientów 12 . Z każdym identyfika<strong>to</strong>rem<br />

kojarzymy licznik początkowo równy zero. Gdy klient otrzyma wyłączny<br />

dostęp do obiektu, <strong>to</strong> jego licznik zostaje pomniejszony o jeden, a liczniki<br />

wszystkich innych klientów zostają powiększone o jeden. War<strong>to</strong>ść wskazania<br />

licznika nie może być mniejsza od zera, czyli gdy licznik osiągnie zero <strong>to</strong> odjęcie<br />

od tej war<strong>to</strong>ści jedności nie zmienia wskazania. W momencie pojawienia się<br />

kolejnego zlecenia zamówienia obiektu dla kilku różnych klientów, sprawdzany<br />

jest stan licznika i ten klient dostanie wyłączny dostęp, dla którego licznik ma<br />

większą war<strong>to</strong>ść. Procedura po przyz<strong>na</strong>niu wyłącznego dostępu odejmuje jeden<br />

od licznika klienta, <strong>na</strong><strong>to</strong>miast pozostałym dodaje jeden. Algorytm jest odporny<br />

<strong>na</strong> zagładzanie, jednocześnie gwarantuje, że jeżeli tylko jeden z klientów będzie<br />

nieustannie żądał dostępu, <strong>to</strong> będzie on mu przyz<strong>na</strong>wany. Ilustrację działania<br />

11 Zalecane jest użycie schematu przyros<strong>to</strong>wych podpisów cyfrowych, który pozwala zapamiętać<br />

szereg podpisów stanu, jako jeden spójny podpis, który moż<strong>na</strong> <strong>na</strong>stępnie łatwo weryfikować.<br />

W innym przypadku odpowiedź <strong>na</strong> zlecenie r s c jest wysyła<strong>na</strong> przez wszystkie repliki.<br />

12 Takie założenie jest bardzo mocne, ale jest wprowadzone tylko dlatego, żeby łatwiej wyjaśnić<br />

sposób działania algorytmu. Warunek ten zostanie później osłabiony.

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

Saved successfully!

Ooh no, something went wrong!