Ασύγχρονα Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Ι 6η Διάλεξη 24 Νοεμβρίου 2016 Παναγιώτα Παναγοπούλου Κατανεμημένα Συστήματα Ι 6η Διάλεξη 1
Ασύγχρονα Κατανεμημένα Συστήματα Περίληψη 1 Ασύγχρονα Κατανεμημένα Συστήματα Μοντέλο ασύγχρονων συστημάτων 2 Κατανεμημένα Συστήματα Ι 6η Διάλεξη 2
Ασύγχρονα συστήματα Μοντέλο ασύγχρονων συστημάτων Ασύγχρονο μοντέλο: οι συνιστώσες του συστήματος εκτελούν βήματα με αυθαίρετες ταχύτητες Είναι δυσκολότερο να προγραμματιστεί λόγω της επιπλέον αβεβαιότητας στη διάταξη των γεγονότων Υποθέτει λιγότερα για τον χρόνο απ ό,τι εγγυώνται συνήθως τα πραγματικά συστήματα: οι αλγόριθμοι είναι γενικοί και portable, μπορούν να τρέξουν σωστά σε δίκτυα με αυθαίρετη χρονική συμπεριφορά Κατανεμημένα Συστήματα Ι 6η Διάλεξη 3
Μοντέλο ασύγχρονων συστημάτων Μοντέλο ασύγχρονου συστήματος Μοντέλο αυτομάτου εισόδου/εξόδου (I/O automaton) Πολύ γενικό: μπορεί να περιγράψει σχεδόν οποιοδήποτε ασύγχρονο σύστημα, υποθέτει λίγη δομή Παρέχει έναν ακριβή τρόπο για την περιγραφή συνιστωσών του συστήματος που αλληλεπιδρούν μεταξύ τους και λειτουργούν σε αυθαίρετα σχετικές ταχύτητες Κατανεμημένα Συστήματα Ι 6η Διάλεξη 4
Αυτόματο Εισόδου/Εξόδου Μοντέλο ασύγχρονων συστημάτων Μηχανή κατάστασης στην οποία οι μεταβάσεις σχετίζονται με ενέργειες: ενέργειες εισόδου ενέργειες εξόδου εσωτερικές ενέργειες τιµή εισόδου v init i (v) decide i (v) τιµή εξόδου v P αυτόµατο διεργασίας send i,j (m) αποστολή µηνύµατος m στη διεργασία P j receive j,i (m) λήψη µηνύµατος m από τη διεργασία P j Όταν το αυτόματο εκτελεί οποιαδήποτε από αυτές τις ενέργειες μπορεί να αλλάζει και κατάσταση Κατανεμημένα Συστήματα Ι 6η Διάλεξη 5
Αυτόματο Εισόδου/Εξόδου Μοντέλο ασύγχρονων συστημάτων P i send i,j (m) C i,j receive i,j (m) P j αυτόµατο καναλιού FIFO κανάλι μηνυμάτων Κατανεμημένο σύστημα: σύνθεση αυτομάτων διεργασιών και καναλιών Η send i,j (m) έξοδος της P i ταιριάζεται με την send i,j (m) είσοδο του C i,j Σημαντική παρατήρηση: Οι διάφορες ενέργειες πραγματοποιούνται μία τη φορά με απρόβλεπτη σειρά Κατανεμημένα Συστήματα Ι 6η Διάλεξη 6
Αυτόματο Εισόδου/Εξόδου Υπογραφή Μοντέλο ασύγχρονων συστημάτων Το πρώτο που πρέπει να οριστεί για ένα αυτόματο εισόδου/εξόδου είναι η υπογραφή του: Είναι απλά μια περιγραφή των ενεργειών του Συμβολίζεται ως S = (in(s), out(s), int(s)) και αποτελείται από in(s): ενέργειες εισόδου out(s): ενέργειες εξόδου int(s): εσωτερικές ενέργειες Ορισμοί/συμβολισμοί: ext(s) = in(s) out(s): εξωτερικές ενέργειες local(s) = out(s) int(s): τοπικά ελεγχόμενες ενέργειες acts(s): όλες οι ενέργειες της S Κατανεμημένα Συστήματα Ι 6η Διάλεξη 7
Αυτόματο Εισόδου/Εξόδου Ορισμός Μοντέλο ασύγχρονων συστημάτων Ένα αυτόματο εισόδου/εξόδου A ορίζεται από: 1 sig(a): μια υπογραφή 2 states(a): σύνολο καταστάσεων (όχι απαραιτήτως πεπερασμένο) 3 start(a) states(a): αρχικές καταστάσεις 4 trans(a) states(a) acts(sig(a)) states(a) κατάσταση s, ενέργεια εισόδου π, μετάβαση (s, π, s ) trans(a) 5 tasks(a): σχέση ισοδυναμίας (δηλ par oning) στο local(sig(a)) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 8
Συστήματα αποστολής/λήψης Κατευθυνόμενο γράφημα G = (V, E), n κόμβων Τώρα δεν έχουμε πια σύγχρονους γύρους επικοινωνίας: Επιτρέπουμε έλλειψη συγχρονισμού και στα βήματα των διεργασιών και στην επικοινωνία Μοντελοποιούμε τις διεργασίες και τα κανάλια σαν Ι/Ο αυτόματα Κατανεμημένα Συστήματα Ι 6η Διάλεξη 9
Δικαιοσύνη Ασύγχρονα Κατανεμημένα Συστήματα Μας ενδιαφέρουν μόνο οι εκτελέσεις στις οποίες κάθε συνιστώσα έχει δίκαιες ευκαιρίες να εκτελέσει βήματα Κάθε task είναι ένα σύνολο από τοπικά ελεγχόμενες ενέργειες του αυτομάτου Η έννοια της δικαιοσύνης λέει ότι κάθε task έχει άπειρες ευκαιρίες να πραγματοποιήσει μία από τις ενέργειες του Τυπικά, ένα κομμάτι εκτέλεσης α ενός Ι/Ο αυτομάτου λέγεται δίκαιο εάν οι ακόλουθες συνθήκες ισχύουν για κάθε κλάση C στην tasks(a): 1 Αν το α είναι πεπερασμένο τότε η C (δηλ καμμία ενέργεια της C) δεν μπορεί να πραγματοποιηθεί στην τελική κατάσταση του α 2 Αν το α είναι άπειρο, τότε το α είτε περιέχει άπειρα γεγονότα από τη C είτε άπειρες εμφανίσεις καταστάσεων στις οποίες η C δεν μπορεί να πραγματοποιηθεί Κατανεμημένα Συστήματα Ι 6η Διάλεξη 10
Δικαιοσύνη Ασύγχρονα Κατανεμημένα Συστήματα Στην ουσία λέει ότι άπειρες φορές κάθε task C έχει την ευκαιρία να εκτελεστεί Όταν αυτό συμβαίνει, είτε πραγματοποιείται κάποια ενέργεια από το C, είτε καμμία δεν μπορεί να πραγματοποιηθεί Δηλαδή αν περιμένουμε κάποιο task να επιλεγεί για να κάνει πρόοδο ο αλγόριθμός μας, τότε αυτό θα συμβεί σε πεπερασμένο χρόνο Κατανεμημένα Συστήματα Ι 6η Διάλεξη 11
Παράδειγμα (Clock αυτόματο) Υπογραφή: Εισόδου: request Εξόδου: clock(t), t N Εσωτερικές: tick Καταστάσεις: counter N, αρχικά 0 και flag, boolean, αρχικά false Μεταβάσεις: tick Προϋποθέσεις: true Επίδραση/Αποτέλεσμα: counter counter + 1 request Επίδραση: flag true Κατανεμημένα Συστήματα Ι 6η Διάλεξη 12
clock(t) Προυποθέσεις: flag = true counter = t Επίδραση: flag false Tasks: {tick} {clock(t) : t N} Το clock αυτόματο απλώς κάνει τικ για πάντα, αυξάνοντας έναν μετρητή Αυτό το κάνει πραγματοποιώντας την εσωτερική ενέργεια ck η οποία δεν έχει καμμία προυπόθεση και έχει ως αποτέλεσμα την αύξηση του counter κατά 1 Κατανεμημένα Συστήματα Ι 6η Διάλεξη 13
Επιπλέον, αν φτάσει request (μέσω εισερχόμενης ενέργειας που δεν ελέγχεται από το ίδιο το αυτόματο) τότε ένα flag γίνεται true και το αυτόματο απαντά με ξεχωριστή εσωτερική ενέργεια με την τρέχουσα τιμή του counter, ως εξής: αν ο counter είναι t και flag = true, τότε μπορεί να πραγματοποιηθεί η ενέργεια εξόδου clock(t) που κοινοποιεί ότι η τιμή του counter είναι t Μια δίκαιη εκτέλεση: tick, tick, tick, Άλλη μια δίκαιη: tick, tick, request, tick, tick, clock(4), tick, tick, λόγω του ότι αφού το αυτόματο απάντησε στο request η τοπική clock ενέργεια έπαψε πια να μπορεί να πραγματοποιηθεί (εκτός και αν ερχόταν άλλο request ) Άλλη μια όχι δίκαιη: tick, tick, request, tick, tick, το clock task πλέον μετά το request γεγονός είναι ενεργό αλλά δεν συμβαίνει ποτέ Κατανεμημένα Συστήματα Ι 6η Διάλεξη 14
Εκλογή Αρχηγού σε Δακτύλιο ασύγχρονη εκδοχή οι διεργασίες αριθμημένες 1, 2,, n δεξιόστροφα P 1 C n,1 C 1,2 P n P 2 C 2,3 P 3 C 3,4 P 5 C 4,5 P 4 Κατανεμημένα Συστήματα Ι 6η Διάλεξη 15
δεν γνωρίζουν τους δείκτες τους, ούτε των γειτόνων τους, χρησιμοποιούν τοπικά ονόματα ωστόσο έχουν UIDs αυτόματο διεργασίας P i ενέργειες send και receive ενέργεια εξόδου leader i αξιόπιστα FIFO κανάλια αποστολής/λήψης εγγυάται παράδοση των μηνυμάτων με τη σειρά που μπήκαν στο κανάλι Κατανεμημένα Συστήματα Ι 6η Διάλεξη 16
Ο Ασύγχρονος LCR Ασύγχρονα Κατανεμημένα Συστήματα (Σύγχρονος) LCR: Κάθε διεργασία στέλνει δεξιόστροφα το id της Όταν μία διεργασία λάβει εισερχόμενο id (i) αν είναι μεγαλύτερο από το δικό της, το προωθεί (ii) αν είναι μικρότερο, το πετάει (iii) αν είναι ίσο εκλέγει τον εαυτό της αρχηγό Η ίδια ιδέα δουλεύει σε ασύγχρονο δίκτυο Η διαφορά είναι ότι ο buffer αποστολής κάθε διεργασίας πρέπει να μπορεί να κρατήσει οποιονδήποτε αριθμό (μέχρι n) μηνυμάτων αντί για ένα μόνο ο λόγος είναι ότι η έλλειψη συγχρονισμού μπορεί αν οδηγήσει σε συσσώρευση ids στους κόμβους Κατανεμημένα Συστήματα Ι 6η Διάλεξη 17
AsynchLCR i αυτόματο Υπογραφή: Εισόδου: receive i 1,i (v), v ένα UID Εξόδου: send i,i+1 (v), v ένα UID leader i Καταστάσεις: u, ένα UID, αρχικά του i send, μια FIFO queue με UIDs, αρχικά περιέχει του i status με τιμές {unknown, chosen, reported}, αρχικά unknown Μεταβάσεις: send i,i+1 (v) Προϋπόθεση : το v είναι πρώτο στη send Επίδραση: αφαίρεσε το πρώτο στοιχείο της send Κατανεμημένα Συστήματα Ι 6η Διάλεξη 18
receive i 1,i (v) Επίδραση: case v > u : πρόσθεσε το v στη send v = u : status chosen v < u : μην κάνεις τίποτα end case leader i Προϋπόθεση: status = chosen Επίδραση status reported Tasks: {send i,i+1 (v) : v ένα UID} {leader i } Κατανεμημένα Συστήματα Ι 6η Διάλεξη 19
Ορθότητα του αλγορίθμου Τα κανάλια είναι FIFO (αξιόπιστα) Η κατάσταση κάθε C i,i+1 αποτελείται από μία συνιστώσα queue i,i+1 Safety Καμμία άλλη διεργασία εκτός της i max δεν δίνει ποτέ leader έξοδο Liveness Η i max τελικά δίνει έξοδο leader Κατανεμημένα Συστήματα Ι 6η Διάλεξη 20
Απόδειξη Ασύγχρονα Κατανεμημένα Συστήματα Λήμμα 1 ( Safety ) Καμμία διεργασία εκτός της i max δεν δίνει leader έξοδο Όπως και στη σύγχρονη περίπτωση, διαισθητικά αρκεί να δείξουμε ότι κανένα UID v δεν μπορεί να προσπεράσει την i max και να βρεθεί στο τμήμα [i max, i), όπου i η διεργασία με UID v το v δεν µπορεί να ϐρεθεί εδώ i max i id = v Κατανεμημένα Συστήματα Ι 6η Διάλεξη 21
Απόδειξη Ασύγχρονα Κατανεμημένα Συστήματα Τώρα θα το διατυπώσουμε τυπικά Τα ακόλουθα ισχύουν για κάθε προσβάσιμη κατάσταση 1 Αν i i max και j [i max, i), τότε το u i δεν εμφανίζεται στην send j 2 Αν i i max και j [i max, i), τότε το u i δεν εμφανίζεται στην queue j,j+1 Κατανεμημένα Συστήματα Ι 6η Διάλεξη 22
Για το (1), για να βρεθεί το u i στη send imax, θα πρέπει συμβεί το γεγονός receive imax 1,i max (u i ) Όμως, u i < u max και η i max δεν βάζει το u i στη send imax (το πετάει) (Το ίδιο ισχύει και για το (2)) Το ακόλουθο ισχύει για κάθε προσβάσιμη κατάσταση: Αν i i max τότε status i = unknown Για να αλλάξει status η i θα πρέπει να λάβει το UID της από αριστερά (μετά από πλήρη περιστροφή) Για να γίνει αυτό, θα πρέπει να περάσει από το διάστημα [i max, i) το οποίο δό είναι αδύνατον Άρα καμία i i max δεν δίνει ποτέ έξοδο leader i αφού η προϋπόθεση αυτής της ενέργειας (δηλ status = chosen) δεν ικανοποιείται ποτέ Κατανεμημένα Συστήματα Ι 6η Διάλεξη 23
Λήμμα 2 ( Liveness ) Σε κάθε δίκαιη εκτέλεση, η διεργασία i max τελικά δίνει έξοδο leader Απόδειξη Αρχικά send imax = (u max ) Εφαρμόζεται η ενέργεια send imax,i max +1(u max ) και το u max τοποθετείται στο κανάλι C imax,i max +1, και τελικά παραλαμβάνεται από την i max + 1 με receive imax,i max +1(u max ) Επειδή u max > u, η i max + 1 βάζει το u max στην send της Επαγωγικά, τελικά η i max θα παραλάβει το u max από αριστερά και θα πραγματοποιήσει έξοδο leader Κατανεμημένα Συστήματα Ι 6η Διάλεξη 24
Για να δούμε ότι ισχύουν τα παραπάνω, ας θεωρήσουμε μια κατάσταση s σε μια δίκαιη εκτέλεση a στην οποία οποιοδήποτε UID v εμφανίζεται στην κορυφή του send i buffer Θέλουμε να δο τελικά η send i (v) συμβαίνει Αν όχι, τότε το v παραμένει για πάντα στην κορυφή του send i Δηλ το send i task είναι ενεργό για πάντα επομένως, λόγω δικαιοσύνης, κάποιο send i γεγονός θα πρέπει να συμβεί Όμως αφού το v είναι στην κορυφή, σημαίνει ότι το send i (v) θα πρέπει τελικά να συμβεί Κατανεμημένα Συστήματα Ι 6η Διάλεξη 25
Έστω τώρα ότι το v εμφανίζεται στη θέση k του send i buffer Λόγω αυτού που δείξαμε παραπάνω, η κορυφή του send i τελικά θα αφαιρεθεί και το v θα μεταβεί στη θέση k 1 Επαγωγικά θα φτάσει τελικά στη κορυφή και λόγω του παραπάνω τελικά θα συμβεί η send i (v) Παρόμοια πράγματα μπορούν να δειχθούν και για τα UIDs στα κανάλια Τα παραπάνω συνοψίζονται στο: Θεώρημα Ο AsynchLCR λύνει το πρόβλημα εκλογής αρχηγού Κατανεμημένα Συστήματα Ι 6η Διάλεξη 26
Πολυπλοκότητα Ασύγχρονα Κατανεμημένα Συστήματα Πολυπλοκότητα Επικοινωνίας O(n 2 ) μηνύματα, ίδια με του LCR (εξαρτάται μόνο απ τη διάταξη των ids στον δακτύλιο και επομένως απ το πόσο θα προχωρήσει κάθε id ) Χρονική πολυπλοκότητα Ο LCR έκανε n γύρους Για τη χρονική ανάλυση του AsynchLCR υποθέτουμε l: άνω φράγμα στον χρόνο επόμενης εκτέλεσης/επιλογής του κάθε task d: άνω φράγμα στον χρόνο παράδοσης του παλιότερου μηνύματος της κάθε ουράς καναλιού Κατανεμημένα Συστήματα Ι 6η Διάλεξη 27
Πολυπλοκότητα Ασύγχρονα Κατανεμημένα Συστήματα Απλοϊκή ανάλυση Κάθε send buffer και κάθε ουρά καναλιού έχει μέγεθος το πολύ n Επομένως, ένα UID χρειάζεται χρόνο το πολύ nl για να φύγει από έναν send buffer και να περάσει στο διπλανό κανάλι και έπειτα το πολύ nd χρόνο για να βγει από την ουρά του καναλιού και να παραληφθεί από την επόμενη διεργασία Δηλ n(l + d) χρόνο για να μετακινηθεί μια θέση δεξιά και άρα O(n 2 (l + d)) για μια πλήρη περιστροφή Πιο προσεκτική ανάλυση Δείχνει ότι στην πραγματικότητα ο χρόνος είναι O(n(l + d)) Παρότι κάποιοι buffers και ουρές μπορούν να φτάσουν μέγεθος n, αυτό δεν μπορεί να συμβεί παντού Κατανεμημένα Συστήματα Ι 6η Διάλεξη 28
Πολυπλοκότητα Ασύγχρονα Κατανεμημένα Συστήματα Διαισθητικά: Αρχικά τα UIDs έχουν πλήρη διασπορά και δεν υπάρχει καμμία συσσώρευση Μετά από χρόνο l + d όλα τα UIDs (που δεν έχουν διαγραφεί) πρέπει να έχουν προχωρήσει μία θέση προς τα δεξιά Παρατηρούμε ότι ο μόνος τρόπος να υπάρξει συσσώρευση είναι να τρέξουν κάποια UIDs πιο γρήγορα από άλλα UIDs στα δεξιά τους και να τα προφτάσουν σε κάποια διεργασία Επομένως, η συσσώρευση που θα πρέπει να πληρώσουν τότε αυτά τα UIDs δεν είναι χαμένος χρόνος αλλά ισοφάριση του χρόνου που ήδη έχει κερδηθεί Κατανεμημένα Συστήματα Ι 6η Διάλεξη 29
Πολυπλοκότητα Ασύγχρονα Κατανεμημένα Συστήματα Λήμμα Σε κάθε δίκαιη εκτέλεση, για κάθε r, 0 r n 1 και για κάθε i V 1 Τη στιγμή r(l + d), το UID u i είτε έχει φτάσει τον send i+r buffer είτε έχει διαγραφεί 2 Τη στιγμή r(l + d) + l, το UID u i είτε έχει φτάσει την queue i+r,i+r+1 είτε έχει διαγραφεί Κατανεμημένα Συστήματα Ι 6η Διάλεξη 30
Απόδειξη Ασύγχρονα Κατανεμημένα Συστήματα Με επαγωγή στο r Βάση, r = 0: Το (1) ισχύει τετριμμένα Για το (2) παρατηρούμε ότι το u i είναι αρχικά το μοναδικό στοιχείο του send i και σε χρόνο l (δηλ μέχρι τη στιγμή l) έχει μπει στην queue i,i+1 Άρα και το (2) ικανοποιείται Υπόθεση, r 1: Έστω ότι ισχύει για r 1 Βήμα: Θα δο ισχύει και για r Παίρνουμε οποιαδήποτε i V Θα δείξουμε το (1) (το (2) είναι παρόμοιο) Αν το u i διαγραφεί μέχρι τη στιγμή (r(l + d)) είμαστε εντάξει Έστω επομένως ότι δεν διαγράφεται Από την επαγωγική υπόθεση έχουμε ότι μέχρι τη χρονική στιγμή t = (r 1)(l + d) + l το u i έχει φτάσει στην queue i+r 1,i+r Κατανεμημένα Συστήματα Ι 6η Διάλεξη 31
Απόδειξη Ασύγχρονα Κατανεμημένα Συστήματα Θα δο Αν το u i δεν έχει παραδοθεί στη διεργασία i + r μέχρι τη χρονική στιγμή t, τότε έχει φτάσει στη κορυφή της queue i+r 1,i+r την t Έστω ότι τίποτα από τα δύο δεν ισχύει Άρα u j που βρίσκεται μπροστά από το u i την χρονική στιγμή t Αυτή είνα μια συσσώρευση στην οποία το u i έχει προφτάσει το u j Κατανεμημένα Συστήματα Ι 6η Διάλεξη 32
Όμως το u i δεν έχει ακόμα ταξιδέψει απόσταση r στον δακτύλιο, άρα το u j δεν μπορεί να έχει ταξιδέψει απόσταση r 1 Όμως, από επαγωγική υπόθεση το u j είτε φτάνει τον send j+r 1 (δηλ ταξιδεύει απόσταση r 1 τουλαχ) είτε διαγράφεται μέχρι τη στιγμή (r 1)(l + d) < t Αυτό συνεπάγεται ότι το u j δεν μπορεί ακόμα να βρίσκεται στην queue i+r 1,i+r την χρονική στιγμή t, άρα άτοπο Επομένως, το u i είτε παραδίδεται στην i + r μέχρι τη στιγμή t είτε φτάνει στην κορυφή της queue i+r 1,i+r μέχρι την t Στην τελευταία περίπτωση σε επιπλέον χρόνο το πολύ d, παραδίδεται στην i + r Άρα σε κάθε περίπτωση, το πολύ μέχρι την στιγμή t + d = r(l + d) το u i παραδίδεται στην διεργασία i + r και τοποθετείται στον send i+r buffer Κατανεμημένα Συστήματα Ι 6η Διάλεξη 33
Βάσει του παραπάνω, το u max, αφού ποτέ δεν διαγράφεται, σε χρόνο n(l + d) φτάνει στην i max μετά από μια πλήρη περιστροφή και η i max θέτει status chosen Σε επιπλέον χρόνο l επιλέγεται το leader imax task και η i max εκλέγεται αρχηγός Άρα, συνολικός χρόνος n(l + d) + l ή O(n(l + d)) Θεώρημα Σε κάθε δίκαιη εκτέλεση του AsynchLCR, ο χρόνος μέχρι να συμβεί το leader γεγονός είναι το πολύ n(l + d) + l ή O(n(l + d)) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 34
Κατασκευή Επικαλυπτικού Δέντρου G = (V, E) συνεκτικό, μη κατευθυνόμενο Source node i 0 (αρχηγός) Οι διεργασίες δεν γνωρίζουν ούτε το μέγεθος ούτε τη διάμετρο του δικτύου και δεν υπάρχουν UIDs ασύγχρονο σύστημα Πρόβλημα (BFS) : Θέλουμε τελικά κάθε διεργασία να αναφέρει μέσω μιας parent ενέργειας εξόδου, το (τοπικό) όνομα του πατέρα της σε ένα επικαλυπτικό δέντρο του G Ο SynchBFS κατασκεύαζε ένα BFS επικαλύπτικό δέντρο με ρίζα την i 0 Για να το κάνει αυτό, έψαχνε το γράφημα σύγχρονα ξεκινώντας από την i 0 Κάθε άλλη διεργασία έθετε ως γονιό τη διεργασία απ την οποία πρωτοάκουσε την ύπαρξη της i 0 Μπορούμε να εφαρμόσουμε τον SynchBFS στην ασύγχρονη περίπτωση και να εγγυηθούμε την κατασκεύη επικαλυπτικού δέντρου (αλλά αυτή την φορά όχι BFS δέντρου) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 35
AsynchSpanningTree i αυτόματο Υπογραφή Εισόδου : receive j,i ( search ), j nbrs Εξόδου : send i,j ( search ), j nbrs parent i (j), j nbrs Καταστάσεις parent nbrs {null}, αρχικά null reported, Boolean αρχικά false j nbrs : send(j) {search, null} αρχικά search αν i = i 0, αλλιώς null Κατανεμημένα Συστήματα Ι 6η Διάλεξη 36
Μεταβάσεις send i,j ( search ) Προϋπόθεση: send(j) = search Επίδραση : send(j) null receive j,i ( search ) Επίδραση : if i i 0 και parent = null then parent j for all k nbrs\{j} do send(k) search parent i (j) Προϋπόθεση: parent = j reported = false Επίδραση: reported true Κατανεμημένα Συστήματα Ι 6η Διάλεξη 37
Ασύγχρονα Κατανεμημένα Συστήματα Tasks {parent i (j) : j nbrs} {send i,j (search) : for j nbrs} Κατανεμημένα Συστήματα Ι 6η Διάλεξη 38
Ισχυρισμός 1 Σε κάθε προσβάσιμη κατάσταση, οι ακμές που ορίζονται από τις parent μεταβλητές σχηματίζουν ένα επικαλυπτικό δέντρο ενός υπογραφήματος του G που περιλαμβάνει τον i 0 Επιπλέον, αν υπάρχει κάποιο μήνυμα σε οποιοδήποτε κανάλι C i,j, τότε ο i ανήκει στο παραπάνω επικαλυπτικό δέντρο Κατανεμημένα Συστήματα Ι 6η Διάλεξη 39
Ισχυρισμός 2 Σε κάθε προσβάσιμη κατάσταση, αν i = i 0 ή parent i null και αν j nbrs i \{i 0 }, τότε είτε parent j null ή το C i,j περιέχει ένα search μήνυμα ή η send i (j) περιέχει ένα search μήνυμα Λόγω του 2, i i 0 έχουμε parent i null σε χρόνο distance(i 0, i) (l + d), δηλ το πολύ σε τόσο χρόνο ο i μπαίνει στο επικαλυπτικό δέντρο Όλα αυτά μαζί δίνουν : Θεώρημα Ο AsynchSpanningTree αλγόριθμος κατασκευάζει ένα επικαλυπτικό δέντρο Κατανεμημένα Συστήματα Ι 6η Διάλεξη 40
Επικαλυπτικό Δέντρο (2η Εκδοχή) Προσπαθούμε τώρα να απλοποιήσουμε τον προγραμματισμό ασύγχρονων συστημάτων και την ανάλυση (δίνουμε υψηλότερου επιπέδου ορισμούς και κώδικα) Κάθε κατάσταση κάθε διεργασίας i έχει 2 nbrs i συνιστώσες outbuf i [j] και inbuf i [j], 1 j nbrs i outbuf i [j]: κρατάει τα μηνύματα που η i έχει στείλει στον γείτονα j αλλά δεν έχουν παραδοθεί ακόμα inbuf i [j]: κρατάει τα μηνύματα που έχουν παραδοθεί στην i από τον γείτονα j αλλά η i δεν τα έχει ακόμα επεξεργαστεί Μία μετάβαση της i παίρνει ως είσοδο την κατάσταση της i και τους inbuf i [j], αδειάζει τους inbuf i [j], παράγει το πολύ ένα μήνυμα για κάθε outbuf i [j] και ανανεώνει την τοπική κατάσταση Κατανεμημένα Συστήματα Ι 6η Διάλεξη 41
Επικαλυπτικό Δέντρο (2η Εκδοχή) Γεγονότα: 1 Γεγονός υπολογισμού comp(i): εφαρμογή συνάρτησης μετάβασης σε κάποια i 2 Γεγονός παράδοσης del(i, j, m): παράδοση μηνύματος m από την i στην j Κατανεμημένα Συστήματα Ι 6η Διάλεξη 42
Εκτέλεση: C 0, ϕ 1, C 1, ϕ 2, C 2, ϕ 3, C k : φάση ϕ k : γεγονός Αν η εκτέλεση είναι πεπερασμένη, πρέπει να τελειώνει σε φάση Αν ϕ k = del(i, j, m), τότε m outbuf i [l] στην C k 1 και l το τoπικό όνομα που έχει η i για το κανάλι {i, j} Το m αφαιρείται από τον outbuf i [l] και προστίθεται στον inbuf j [h], όπου h είναι το τoπικό όνομα που έχει η j για το κανάλι {i, j} Αν ϕ k = comp(i) τότε η i εφαρμόζει την συνάρτηση μεταβάσεων στην κατάσταση που έχει στην C k 1 (δηλ αδειάζει τους inbufs, ανανεώνει κατάσταση και τοποθετεί μηνύματα στους outbufs Λέμε ότι τα μηνύματα αυτά στέλνονται σε αυτό το γεγονός) Schedule: ακολουθία από γεγονότα που καθορίζουν την εκτέλεση ϕ 0, ϕ 1, ϕ 2, Αν τα τοπικά προγράμματα είναι αιτιοκρατικά, τότε η εκτέλεση καθορίζεται πλήρως από την αρχική φάση C 0 και το schedule σ και συμβολίζεται exec(c 0, σ) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 43
Δικαιοσύνη: Κάθε διεργασία έχει άπειρο αριθμό υπολογιστικών γεγονότων (στην εκτέλεση) και κάθε μήνυμα που στέλνεται τελικά παραδίδεται Με άλλα λόγια, κάθε διεργασία (ξανα)παίζει σε πεπερασμένο αριθμό βημάτων και κάθε απεσταλμένο μήνυμα παραδίδεται σε πεπερασμένο αριθμό βημάτων Κατανεμημένα Συστήματα Ι 6η Διάλεξη 44
Χρονική Πολυπλοκότητα Μπορούμε να υποθέσουμε ότι η μέγιστη καθυστέρηση ενός μηνύματος σε κάθε εκτέλεση είναι μια χρονική μονάδα Μία χρονική εκτέλεση έχει επιπλέον έναν μη αρνητικό πραγματικό αριθμό για κάθε γεγονός εκφράζει τον χρόνο στον οποίο προκύπτει το γεγονός Οι χρόνοι ξεκινάνε με το 0 είναι μη φθίνοντες είναι αυστηρά αύξοντες για κάθε ξεχωριστή διεργασία (το comp(i) συμβαίνει στην i ενώ το del(i, j, m) και στην i και στην j) και πρέπει να μην είναι φραγμένοι αν η εκτέλεση είναι άπειρη (δηλ μόνο πεπερασμένο αριθμός γεγονότων εντός οποιουδήποτε πεπερασμένου χρόνου) Καθυστέρηση μηνύματος: Χρόνος που περνάει από το υπολογ γεγονός που στέλνει το μήνυμα μέχρι το υπολογ γεγονός που επεξεργάζεται το μήνυμα Δηλ χρόνος που περιμένει στον outbuf του αποστολέα + χρόνος που περιμένει στον inbuf του παραλήπτη Κατανεμημένα Συστήματα Ι 6η Διάλεξη 45
Η χρονική πολυπλοκότητα ενός ασύγχρονου αλγορίθμου μπορεί να οριστεί ως ο μέγιστος χρόνος μέχρι τον τερματισμό μεταξύ όλων των χρονικών δίκαιων εκτελέσεων στις οποίες κάθε καθυστέρηση μηνύματος είναι το πολύ μία χρονική μονάδα Είναι απλώς μια κανονικοποίηση Συνεχίζει να επιτρέπει αυθαίρετους τρόπους διάταξης γεγονότων Παρατήρηση: Λαμβάνει υπ όψιν και τον χρόνο που το μήνυμα θα περιμένει στο κανάλι (μέχρι το del(i, j, m) γεγονός να το περάσει στην άλλη μεριά) και τον χρόνο που θα περιμένει στον inbuf του j (μέχρι το comp(j) γεγονός να το επεξεργαστεί) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 46
Συμβάσεις για κώδικα Η περιγραφή με μεταβάσεις καταστάσεων είναι μη φυσική και σε ορισμένες περιπτώσεις δυσνόητη (αλλά τυπικά ορθή) Μπορούμε να περιγράφουμε ασύγχρονους αλγορίθμους με διακοπές ( interrupts) Στο παραπάνω μοντέλο, κάθε comp(i) επεξεργάζεται όλα τα μηνύματα με μιας: μπορούμε όμως για σαφήνεια να τα παρουσιάζουμε ξεχωριστά αυτό είναι ισοδύναμο με την επεξεργασία των μηνυμάτων το ένα μετά το άλλο με αυθαίρετη σειρά αν αυτή η διαδικασία παράξει περισσότερα του ενός μηνύματα για το ίδιο outbuf τότε μπορούμε να θεωρήσουμε ότι αυτά συγχωνεύονται σε ένα μεγάλο μήνυμα επίσης μία διεργασία μπορεί να εκτελέσει μία ενέργεια ακόμα και αν δεν παραληφθεί κάποιο μήνυμα Κατανεμημένα Συστήματα Ι 6η Διάλεξη 47
AsynchSpanningTree (2η εκδοχή) κώδικας για διεργασία i {1, 2,, n} Αρχικά parent =, children =, other = με τη λήψη κανενός μηνύματος: if i = i 0 and parent = then send (M) σε όλους τους γείτονες parent i με τη λήψη (M) από γείτονα j if parent = then parent j send (parent) στη j send (M) σε όλους τους γείτονες εκτός της j else send (already) στη j Κατανεμημένα Συστήματα Ι 6η Διάλεξη 48
με τη λήψη (parent) από γείτονα j children children {j} if children other = nbrs\parent then terminate με τη λήψη (already) από γείτονα j other other {j} if children other = nbrs\parent then terminate Κατανεμημένα Συστήματα Ι 6η Διάλεξη 49
i 0 M 1 M 5 M M 2 4 M 3 Παράδειγμα που δείχνει ότι το δέντρο που φτιάχνει ο αλγόριθμος δεν είναι απαραιτήτως BFS Τα (M) μηνύματα προωθούνται γρήγορα στην κατεύθυνση 1,2,3,4,5 ενώ τα υπόλοιπα (M) μηνύματα (πχ από την i 0 σε όλους πλην της 1) είναι πολύ αργά Το επικαλυπτικό δέντρο που προκύπτει δεν είναι BFS (το BFS φαίνεται με κόκκινο στο σχήμα) Το BFS έχει βάθος 1 ενώ αυτό που παράγεται τελικά έχει βάθος 5 (στη γενική περίπτωση έχει n 1) Κατανεμημένα Συστήματα Ι 6η Διάλεξη 50
Βιβλιογραφία Ασύγχρονα Κατανεμημένα Συστήματα Βιβλίο Distributed Algorithms (NLynch) 1 Κεφάλαιο 8: Asynchronous System Model 2 Κεφάλαιο 14: Asynchronous Network Model 3 Κεφάλαιο 15: Basic Asynchronous Network Algorithms 151: Leader Elec on in a Ring 153: Spanning Tree Construc on Κατανεμημένα Συστήματα Ι 6η Διάλεξη 51