Programowanie współbieżne i rozproszone zadania∗ 1. Udowodnij
Transkrypt
Programowanie współbieżne i rozproszone zadania∗ 1. Udowodnij
Programowanie współbieżne i rozproszone zadania∗ 1. Udowodnij, że dla flooding algorithm następujący fakt jest prawdziwy: procesor jest osiągalny z pr wtedy i tylko wtedy, gdy kiedykolwiek pod zmienną parent nastąpiło przypisanie. 2. Podaj przykład wykonania, w którym flooding algorithm w modelu asynchronicznym z n węzłami nie konstruuje drzewa BFS (drzewa wszerz). 3. Jak wyeliminować komunikaty < already > z flooding algorithm w modelu synchronicznym, aby algorytm był dalej poprawny. Jaka będzie złożoność komunikacyjna (message complexity) otrzymanego algorytmu. 4. Przeprowadź analizę złożoności komunikacyjnej (message complexity) flooding algorithm w modelu synchronicznym i asynchronicznym. 5. Przeprowadź analizę złożoności czasowej (time complexity) flooding algorithm w modelu synchronicznym i asynchronicznym. 6. Udowodnij, że nie istnieje anonimowy algorytm wyboru lidera w asynchronicznym, pierścieniu. 7. Udowodnij, że nie istnieje anonimowy jednorodny algorytm wyboru lidera w synchroniczny pierścieniu. 8. Rozważmy pierścień, w którym przesyłanie komunikatów odbywa się w jednym kierunku (pierścień skierowany). Czy istnieje anonimowy jednorodny algorytm wyboru lidera w modelu asynchronicznym? Jeżeli nie istnieje, to podaj dowód. 9. Rozważmy synchroniczny pierścień, w którym wszystkie procesory za wyjątkiem jednego mają ten sam identyfikator. Czy istnieje algorytm wyboru lidera. Jeżeli nie istnieje, to podaj dowód. 10. Wymień znane algorytmy wyboru lidera w pieścieniu. Dla każdego z nich podaj złożoność komunikacyjną. Ponadto dla modelu synchronicznego podaj również złożoność czasową. 11. Czy brak zagłodzenia (lockout) implikuje brak blokady (deadlock)? 12. Pokazać, że algorytm wzajamnego wykluczania na rejestrach read-modify-write dla n procesorów (mutual exclusion using spinning) zapewnia wzajemne wykluczanie i brak zagłodzenia (lockout). Część zadań pochodzi z książki Hagit Attiya, Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, John Wiley and Sons, Inc. 2004 ∗ 1 13. Dlaczego zmienna Choosing[i] jest potrzebna w algorytmie piekarnianym. Skonstruuj wykonanie, w którym algorytm piekarniany bez zmniennej Choosing[i] narusza wzajemne wykluczanie. 14. Pokazać, że algorytm dla wzajemnego wykluczania na rejestrach read-write dla dwóch procesorów (bounded mutual exclusion algorithm for two processors) zapewnia brak blokady (deadlock). 15. Podać algorytm rozwiązujący w f + 1 rundach problem konsensusu w przypadku awarii typu crash. Pokazać, że algorytm zapewnia: termination, validity i agreement. Czy można zmniejszyć liczbę rund do f ? Uzasadnij odpowiedź. 16. Podać algorytm rozwiązujący w f rundach problem konsensusu w przypadku awarii typu crash, jeżeli f = n − 1. Pokazać, że algorytm zapewnia: termination, validity i agreement. 17. Podaj algorytm rozwiązujący w jednej rundzie problem konsensusu w przypadku awarii typu clean crash. Procesor ulega awarii typu clean crash, jeżeli w rundzie, w której ulega awarii wysyła wszystkie komunikaty albo nie wysyła ich wcale. Pokazać, że algorytm zapewnia: termination, validity i agreement. 18. Podać przykład wykonania (dla konkretnego n), dla którego algorytm ponadwielomianowy (the exponential message consensus algorithm) dla awarii typu bizantyjskiego narusza warunki problemu konsensusu, jeżeli n = 3f . 19. Niech π będzie wierzchołkiem. Pokazać, że jeżeli π ma wspólną granicę, to π jest wspólny. 20. Jaka jest długość komunikatu i złożoność komunikacyjna algorytmu ponadwielomianowego dla awarii typu bizantyjskiego. 21. Rozważmy wielomianowy algorytm dla problemu konsensusu w przypadku awarii typu bizantyjskiego (polynomial consensus algorithm in the presence of Byzantine failures). Pokazać, że jeżeli wszystkie procesory preferują v na początku fazy k, to preferują one wartość v na końcu fazy k dla 1 ¬ k ¬ f + 1. 22. Rozważmy wielomianowy algorytm dla problemu konsensusu w przypadku awarii typu bizantyjskiego (polynomial consensus algorithm in the presence of Byzantine failures). Niech g będzie fazą, w której król pg jest nieuszkodzony. Pokazać, że wszystkie nieuszkodzone procesory kończą fazę g z tą samą preferowaną wartością. 2 23. Korzystając z zadań 21 i 22, pokazać, że wielomianowy algorytm dla problemu konsensusu w przypadku awarii typu bizantyjskiego zapewnia: termination, validity i agreement. 24. Podać przykład wykonania (dla konkretnego n), dla którego wielomianowy algorytm dla problemu konsensusu w przypadku awarii typu bizantyjskiego narusza warunki problemu konsensusu, jeżeli n = 3f . 25. Jaka jest długość komunikatu i złożoność komunikacyjna algorytmu wielomianowego dla awarii typu bizantyjskiego. 3