Po co się to robi?
Podstawowe zasady:
Wada synchronizatorów: „narzut” czyli dodatkowe komunikaty/czas...
narzut komunikatowy M(S) i czasowy T(S) na 1 rundę wirt
oznaczenia: A=alg synch, A'=alg asynch (A'=A+S)
M(A')=Minit(S) + M(A) + T(A) M(S)
T(A') = Tinit(S) + T(A) T(S)
??? co to jest czas alg asynch ???
Pozostaje kwestia obliczania "klastrów" dla synch γ...
pomijamy temat, jako że robi się to sekwencyjnie, po 1 klastrze!
...
ZADANIE 40 impl synch α
Zaimplementuj synchronizator α w symulatorze asynch
oraz zbadaj jaki jest numer rundy/pulsu na dwóch wierz w odl =k,
w czasie działania takiego algorytmu:
set liczRundy 0
while 1 {
incr liczRundy
## wstawka realizująca "koniec rundy" ##
}
Wskazówka: dla ułatwienia użyj komendy "dostarcz" zamiast "wyslij", dzięki czemu
trzeba genereować jedynie zdarzenia obliczeniowe (a nie obliczeniowe i dostarczenia),
czyli nie jest konieczne używanie dostarczKom...
Uwaga 1: w modelu asynch. wszystkie wierzchołki powinny działać w nieskończoność
Uwaga 2: najłatwiej zrobić eksperyment do tego zadania w cyklu...
(ale procedure "koniec rundy" lepiej napisać ogólnie!)
Uwaga 3: jak budować alg asnych w symulatorze? patrz przykład z "zar01" !!
ZADANIE 41 (1.5pkt) impl synch β
podobne zasady jak dla zadania 40
ZADANIE 42 synchronizator/ realne zastosowanie
użyj synchronizatora α lub β dla prostego alg synch,
np: każdy wierz cyklu wysyła w lewo swój ID, które potem krążą w lewo w cyklu;
albo: jeden wierz wysyła liczbę 0 w lewo, pozostałe wierz przekazują ją, zwiększając o 1;
sprawdź czy procedura "koniec rundy" prawidłowo dostarcza komunikaty alg synch...
ZADANIE 43 (1.5pkt) odległość w ścieżce, synchronizator α
W ścieżce są 2 wierz a i b. Wierzchołek a chce odpowiedzieć na pytanie czy "dist(a,b)≤x".
Podaj i przetestuj wersję algorytmu, która działa pod synchronizatorem alfa,
w czasie O(x) wirtualnych rund (niezależnie od dist(a,b)).
Wierz a i b są oznaczone "ręcznie", dodatkowo wierz a ma podaną wartość x.