Προηγούµενο Μάθηµα Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Σύγχρονα Κατανεµηµένα Συστήµατα Μοντελοποίηση Συστήµατος Πρόβληµα Εκλογής Αρχηγού Μελέτη κατανεµηµένων αλγόριθµων για ίκτυα ακτυλίου Ιωάννης Χατζηγιαννάκης ευτέρα, Οκτωβρίου, 0 Αίθουσα Β Μοντέλο Σύγχρονου ικτύου Μία συλλογή υπολογιστικών µονάδων ή επεξεργαστές κάθε επεξεργαστής εκτελεί µόνο µία διεργασία Οι µονάδες του συστήµατος είναι συνδεδεµένες µε ένα σύγχρονο δίκτυο Ορίζουµε το σύγχρονο δίκτυο ως ένα κατευθυνόµενο γράφηµα G = (V, E) αποτελείτε από n = V κορυφές και m = E ακµές Υποθέτουµε ότι κάθε κανάλι επικοινωνίας µπορεί να δεχτεί µόνο ένα µήνυµα τη ϕορά τα κανάλια είναι οι ακµές του γραφήµατος Θεωρούµε ότι υπάρχει ένα δεδοµένο αλφάβητο M µηνυµάτων Οι Καταστάσεις των ιεργασιών Κάθε διεργασία u V χαρακτηρίζεται από ένα σύνολο καταστάσεων tate u Ορισµένες τις ονοµάζουµε αρχικές καταστάσεις tart u Ορισµένες τις ονοµάζουµε καταστάσεις τερµατισµού halt u ιαθέτει µια γεννήτρια εξερχόµενων µηνυµάτων mg u : tate u nbru out M {null} δεδοµένης της τρέχουσας κατάστασης δηµιουργεί κάποια µηνύµατα για τις γειτονικές διεργασίες ιαθέτει µία συνάρτηση αλλαγής κατάστασης tran u : tate u (M {null}) nbrin u tate u δεδοµένης της τρέχουσας κατάστασης τα µηνύµατα που παραλήφθηκαν υπολογίζει την επόµενη κατάσταση της διεργασίας
Εναρξη εκτέλεσης, Βήµατα και Γύροι Αρχικά όλες οι διεργασίες ϐρίσκονται σε κάποια αρχική κατάσταση όλα τα κανάλια είναι άδεια Ολες οι διεργασίες, επαναλαµβάνουν συντονισµένα τα ακόλουθα δύο ϐήµατα: o Βήµα. Εφαρµογή της γεννήτριας µηνυµάτων. Παραγωγή µηνυµάτων για τους εξερχόµενους γείτονες. Αποστολή µηνυµάτων µέσω των αντίστοιχων καναλιών o Βήµα. Εφαρµογή της συνάρτησης αλλαγής κατάστασης. ιαγραφή όλων των µηνυµάτων από τα κανάλια. Ο συνδυασµός των δύο ϐηµάτων ονοµάζεται γύρος Μέτρηση πολυπλοκότητας Σχεδιασµός Συστήµατος Ορισµός Ελάχιστων Απαιτήσεων Επιλογή κατάλληλου κατανεµηµένου αλγόριθµου Πως µπορούµε να µετρήσουµε την απόδοση; Χρονική πολυπλοκότητα Το πλήθος των γύρων που απαιτούνται για να παραχθούν όλες οι Ϲητούµενες έξοδοι, ή µέχρι να τερµατιστούν όλες οι διεργασίες (δηλ. να ϐρεθούν σε µια τερµατική κατάσταση). Πολυπλοκότητα επικοινωνίας Ο συνολικός αριθµός µη µηδενικών µηνυµάτων (δηλ. δεν προσµετρούνται τα null µηνύµατα) που αποστέλλονται. Πρόβληµα Εκλογής Αρχηγού Ορισµός Προβλήµατος Αδυναµία αντιµετώπισης του προβλήµατος όταν οι διεργασίες δεν έχουν µοναδικές ταυτότητες ίκτυα ακτυλίου. Αλγόριθµος των LeLann, Chang και Robert Η χρονική πολυπλοκότητα είναι O(n) Η πολυπλοκότητα επικοινωνίας είναι O(n ) Σύνοψη ης ιάλεξης Προηγούµενο Μάθηµα Προηγούµενο Μάθηµα Μοντέλο Σύγχρονων Κατανεµηµένων Συστηµάτων Πρόβληµα Εκλογής Αρχηγού Σύγχρονα Κατανεµηµένα Συστήµατα Εκλογή Αρχηγού σε Γενικά ίκτυα Αναζήτηση κατά Εύρος Ασκήσεις στα ΚΣΙ Σύνοψη Μαθήµατος Σύνοψη Μαθήµατος Επόµενο Μάθηµα η Ασκηση
Ισχυρά Συνεκτικά Γενικά ίκτυα Αλγόριθµος FloodMax Οι διεργασίες διατηρούν µια µεταβλητή αρχηγός η οποία αρχικά είναι fale και µια µεταβλητή µέγιστη_ταυτότητα µε αρχική τιµή την ταυτότητα της διεργασίας. Σε κάθε γύρο, οι διεργασίες εκπέµπουν την µέγιστη_ταυτότητα σε όλους τους γείτονες. Μόλις λάβουν µία ταυτότητα απο κάποιον γείτονα, την συγκρίνουν µε την µέγιστη_ταυτότητα. Αν είναι µεγαλύτερη, ϑέτουν την µεταβλητή στην νέα τιµή. Μετά απο δ γύρους, αν η µεταβλητή ισούται µε την ταυτότητα της διεργασίας, η διεργασία µεταβαίνει στην κατάσταση εκλεγµένη ϑέτοντας την µεταβλητή αρχηγός στην τιµή true. εν γνωρίζουν το πλήθος των διεργασιών (n) Γνωρίζουν την διάµετρο του γραφήµατος δ = diam(g) Βασίζεται σε απλές πράξεις σύγκρισης ταυτοτήτων Το γράφηµα είναι ισχυρά συνεκτικό. Οι διεργασίες έχουν µοναδικές ταυτότητες εν γνωρίζουν την ταυτότητα των υπόλοιπων διεργασιών. Peudo-code for FloodMax Παράδειγµα Εκτέλεσης Αλγόριθµου FloodMax #DEFINE UID = <...>; #DEFINE δ = <...>; void main() { bool leader = fale; int max_id = UID; for (int i = 0 ; i < δ; i++ ) { endmeage(max_id); while (int new_mg = readmeage()) { if (new_mg > max_id) max_id = new_mg; } } if (max_id == UID) leader = true; } Εστω ένα σύγχρονο κατανεµηµένο σύστηµα από n = διεργασίες. Γενικό δίκτυο δ = Οι διεργασίες είναι αριθµηµένες από έως ιεργασίες σε δακτύλιο
Παράδειγµα Εκτέλεσης Αλγόριθµου FloodMax Παράδειγµα Εκτέλεσης Αλγόριθµου FloodMax Εστω ένα σύγχρονο κατανεµηµένο σύστηµα από n = διεργασίες. ιεργασίες σε δακτύλιο Εστω ένα σύγχρονο κατανεµηµένο σύστηµα από n = διεργασίες. ιεργασίες σε δακτύλιο Γενικό δίκτυο δ = Οι διεργασίες είναι αριθµηµένες από έως Γενικό δίκτυο δ = Οι διεργασίες είναι αριθµηµένες από έως Οι διεργασίες έχουν µοναδικές ταυτότητες Οι διεργασίες έχουν µοναδικές ταυτότητες εν γνωρίζουν την ταυτότητα των υπόλοιπων διεργασιών εν γνωρίζουν την ταυτότητα των υπόλοιπων διεργασιών Πρώτος Γύρος αποστολή µηνυµάτων Παράδειγµα Εκτέλεσης Αλγόριθµου FloodMax Παράδειγµα Εκτέλεσης Αλγόριθµου FloodMax Εστω ένα σύγχρονο κατανεµηµένο σύστηµα από n = διεργασίες. ιεργασίες σε δακτύλιο Εστω ένα σύγχρονο κατανεµηµένο σύστηµα από n = διεργασίες. ιεργασίες σε δακτύλιο Γενικό δίκτυο δ = Οι διεργασίες είναι αριθµηµένες από έως Γενικό δίκτυο δ = Οι διεργασίες είναι αριθµηµένες από έως Οι διεργασίες έχουν µοναδικές ταυτότητες Οι διεργασίες έχουν µοναδικές ταυτότητες εν γνωρίζουν την ταυτότητα των υπόλοιπων διεργασιών εν γνωρίζουν την ταυτότητα των υπόλοιπων διεργασιών Πρώτος Γύρος αποστολή µηνυµάτων Πρώτος Γύρος αποστολή µηνυµάτων εύτερος Γύρος εύτερος Γύρος Εκλογή αρχηγού διεργασία
Χαρακτηριστικά του Αλγόριθµου FloodMax Απόδειξη Ορθότητας Εστω n διεργασίες και m κανάλια, όπου η διεργασία µε τη µεγαλύτερη ταυτότητα είναι η i max Η διεργασία i max εκλέγεται αρχηγός στο τέλος του γύρου δ Καµία διεργασία εκτός της i max δεν είναι σε κατάσταση εκλεγµένη Η χρονική πολυπλοκότητα είναι O (diam(g)) Η πολυπλοκότητα επικοινωνίας είναι O (diam(g) m) Θεώρηµα Στον αλγόριθµο FloodMax η διεργασία i max εκλέγεται αρχηγός στο τέλος του γύρου δ Απόδειξη: Αρκεί να δείξουµε ότι µετά απο δ γύρους, η µεταβλιτή αρχηγός imax = true. Παρατηρούµε ότι µετά από r γύρους, η ταυτότητα της i max έχει φτάσει όλες τις διεργασίες που ϐρίσκονται σε απόσταση r από την i max. Εποµένως, στο τέλος του γύρου δ κάθε διεργασία ϑα έχει λάβει την ταυτότητα της i max. Αναζήτηση κατά Εύρος Σε ένα σύγχρονο δίκτυο G, η αναζήτηση κατά εύρος απαιτεί την κατασκευή ενός επικαλυπτικού δέντρου T(G), µε ϱίζα την διεργασία u 0 όπου οι κορυφές που είναι σε απόσταση d από την u 0 στο G, ϐρίσκονται στο επίπεδο d στο δέντρο T(G). Η κατασκευή αυτής της δοµής είναι χρήσιµη σε πολλές περιπτώσεις Γρήγορη µετάδοση πληροφορίας Πρόβληµα Εκλογής Αρχηγού Πρόβληµα Καταµέτρησης Παράδειγµα () Ελεγχος Χώρου Στάθµευσης Αυτοκινήτων Για λόγους αυτόµατου ελέγχου, η εταιρεία τοποθετεί ένα πλήθος από µονάδες εφοδιασµένες µε αισθητήρες έτσι ώστε να καλύπτουν όλο τον χώρο στάθµευσης. Οι µονάδες συνδέονται µέσω ενός ασύρµατου δικτύου (IEEE 0.b). Το σύστηµα υπολογίζει αυτόµατα το σύνολο των σταθµευµένων αυτοκινήτων. Οι µονάδες έχουν ξεχωριστή διεύθυνση στο δίκτυο Οι µονάδες χρησιµοποιούν ϕωτογραφικές µηχανές Ο χειριστής του συστήµατος χρησιµοποιεί έναν τερµατικό σταθµό που είναι συνδεδεµένος στο ασύρµατο δίκτυο
Παράδειγµα () Ο τερµατικός σταθµός δηµιουργεί ένα δέντρο αναζήτησης κατά εύρος Κάθε µονάδα µετράει το πλήθος των αυτοκινήτων που βλέπει και το στέλνει στον γονέα της στο δέντρο Ο γονέας συγκεντρώνει τις τιµές που έλαβε από τα παιδιά της στο δέντρο, τις προσθέτει µε την δικιά της και στέλνει το σύνολο στον δικό της γονέα Το άθροισµα που υπολογίζει η ϱίζα του δέντρου είναι το πλήθος των σταθµευµένων αυτοκινήτων Αλλες Εφαρµογές Πρόβληµα Εκλογής Αρχηγού: Ο αλγόριθµος κατασκευάζει ένα δέντρο αναζήτησης κατά εύρος για κάθε διεργασία Η διεργασία µε την µέγιστη ταυτότητα εκλέγεται αρχηγός και όλες οι υπόλοιπες µεταβαίνουν στην κατάσταση µη-εκλεγµένη εν χρειάζεται να γνωρίζουν το πλήθος n ή την διάµετρο του δικτύου diam(g) Υπολογισµός ιαµέτρου ικτύου: Ο αλγόριθµος κατασκευάζει ένα δέντρο αναζήτησης κατά εύρος για κάθε διεργασία Κάθε διεργασία υπολογίσει το ύψος του δέντρου της Κάθε διεργασία χρησιµοποιεί το δέντρο της για να ανακαλύψει το µέγιστο ύψος, δηλ. την διάµετρο του δικτύου Αλγόριθµος SynchBFS Οι διεργασίες διατηρούν µια µεταβλητή µαρκαρισµένη η οποία αρχικά είναι fale και µια µεταβλητή γονέας µε αρχική τιµή 0. Αρχικά, η διεργασία u 0 ϑέτει την µεταβλητή µαρκαρισµένη ως true, την µεταβλητή γονέας µε την ταυτότητα της, και στέλνει ένα µήνυµα αναζήτησης σε όλους τους γείτονες της. Σε κάθε γύρο, εάν µια διεργασία λάβει ένα µήνυµα αναζήτησης και η τιµή της µεταβλητής µαρκαρισµένη είναι fale, τότε ϑέτει την µεταβλητή σε true, ϑέτει την µεταβλητή γονέας µε την ταυτότητα της διεργασίας από όπου έλαβε το µήνυµα, και στον επόµενο γύρο στέλνει ένα µήνυµα αναζήτησης σε όλους τους γείτονες της. εν γνωρίζουν το πλήθος των διεργασιών (n) Εχουν µοναδικές ταυτότητες Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Αρχικό ίκτυο Το δίκτυο έχει µονάδες, κανάλια Η διεργασία ξεκινά την εκτέλεση του αλγορίθµου. Η διεργασία ϑεωρείται µαρκαρισµένη. Ολες οι άλλες διεργασίες δεν είναι µαρκαρισµένες. Αρχικό ίκτυο
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. oς Γύρος o Βήµα Οι διεργασίες, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα Η διεργασία αγνοεί τα µηνύµατα αναζήτησης που έλαβε. Οι διεργασίες,,,, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο.
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα Οι διεργασίες,,,,,, αγνοούν τα µηνύµατα αναζήτησης που έλαβαν. Η διεργασία µαρκάρεται. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο. oς Γύρος o Βήµα Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. oς Γύρος o Βήµα Οι διεργασίες, αγνοούν τα µηνύµατα αναζήτησης που έλαβαν.
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS Τελικό ίκτυο Χαρακτηριστικά του Αλγόριθµου SynchBFS Ο αλγόριθµος SynchBFS κατασκευάζει ένα δέντρο αναζήτησης κατά εύρος. Η δοµή του δέντρου δεν είναι αποθηκευµένη σε κάποια κεντρική διεργασία Η χρονική πολυπλοκότητα είναι O (diam(g)) Τελικό ίκτυο Το δέντρο αναζήτησης κατά εύρος έχει κατασκευαστεί. Ο αλγόριθµος εκτελέστηκε σε γύρους. Συνολικά µεταδόθηκαν µηνύµατα. Στην πραγµατικότητα είναι η µέγιστη απόσταση από την u 0 Στο παράδειγµα, η διάµετρος είναι η µέγιστη απόσταση από την u 0 είναι Η πολυπλοκότητα επικοινωνίας είναι O (m) Βελτίωση Πολυπλοκότητας Μηνυµάτων Μπορούµε να µειώσουµε τον αριθµό των µηνυµάτων που χρησιµοποιεί ο αλγόριθµος ως εξής Οι διεργασίες µπορούν να αναγνωρίσουν το κανάλι από το οποίο έλαβαν ένα µήνυµα Οι διεργασίες δεν στέλνουν µηνύµατα αναζήτησης στα κανάλια από τα οποία έλαβαν ένα µήνυµα αναζήτησης Στο παράδειγµα εκτέλεσης του SynchBFS τα συνολικά µηνύµατα µειώνονται κατά 0 δηλ. Μετάδοση Μηνύµατος Μπορούµε να χρησιµοποιήσουµε τον αλγόριθµο για την µετάδοση ενός µηνύµατος σε όλο το δίκτυο Η διεργασία u 0 ϑέλει να στείλει το µήνυµα M σε όλες τις διεργασίες του δικτύου Η διεργασία u 0 ξεκινάει την κατασκευή του δέντρου στέλνοντας το µήνυµα αναζήτησης το οποίο περιέχει και το µήνυµα M Οι άλλες διεργασίες επισυνάπτουν και αυτές µε την σειρά τους το µήνυµα M µε τα µηνύµατα αναζήτησης που στέλνουν Εφόσον το δέντρο περιέχει όλες τις διεργασίες, το µήνυµα M τελικά παραλαµβάνετε από όλες τις διεργασίες του δικτύου
Πλήρη Γνώση () Είναι απαραίτητο κάθε διεργασία να γνωρίζει και τα παιδιά της Τροποποιούµε τον αλγόριθµο SynchBFS ως εξής: Κάθε διεργασία που λαµβάνει ένα µήνυµα αναζήτησης επιστρέφει στον αποστολέα ένα µήνυµα γονέας ή µη-γονέας ανάλογα του αν ο αποστολέας είναι ο γονέας της διεργασίας Κατά την ολοκλήρωση της εκτέλεσης του SynchBFS, όλες οι διεργασίες γνωρίζουν τα παιδιά τους Ο αλγόριθµος SynchBFS απαιτεί το πολύ diam(g) + γύρους και χρησιµοποιεί m µηνύµατα Η χρονική πολυπλοκότητα και η πολυπλοκότητα µηνυµάτων παραµένουν σταθερές Πλήρη Γνώση () Μπορούµε να µειώσουµε τον αριθµό των µηνυµάτων που χρησιµοποιεί ο αλγόριθµος Τροποποιούµε τον αλγόριθµο SynchBFS ως εξής: Κάθε διεργασία που λαµβάνει µήνυµα αναζήτησης απαντά στον αποστολέα µε ένα µήνυµα γονέας εφόσον ο αποστολέας είναι ο γονέας της διεργασίας Εάν η διεργασία που έστειλε το µήνυµα αναζήτησης σε µία γειτονική διεργασία, δεν λάβει µήνυµα γονέας στον επόµενο γύρο, ϑεωρεί ότι δεν επιλέχτηκε ως γονέας της γειτονικής διεργασίας Ο αλγόριθµος SynchBFS χρησιµοποιεί m + n µηνύµατα Τερµατισµός () Πως µπορεί η διεργασία u 0 να µάθει πότε ολοκληρώθηκε η κατασκευή του δέντρου; εν είναι γνωστή η διάµετρος του δικτύου και το πλήθος των διεργασιών n Βασιζόµαστε την παραλλαγή SynchBFS όπου οι διεργασίες απαντάνε στον αποστολέα ενός µηνύµατος αναζήτησης µε ένα µήνυµα γονέας ή µη-γονέας ανάλογα του αν ο αποστολέας είναι ο γονέας της διεργασίας. Τερµατισµός () Επεκτείνουµε τον SynchBFS ως εξής: Κάθε διεργασία που λαµβάνει ένα µήνυµα αναζήτησης επιστρέφει στον αποστολέα στον επόµενο γύρο ένα µήνυµα µη-γονέας αν ο αποστολέας δεν είναι ο γονέας της διεργασίας Η διεργασία καθυστερεί την αποστολή του µηνύµατος γονέας έως ότου λάβει κάποιο µήνυµα γονέας ή µη-γονέας από όλες τις διεργασίες στις οποίες έστειλε µηνύµατα αναζήτησης Εφόσον οι διεργασίες µπορούν να αναγνωρίσουν το κανάλι από το οποίο έλαβαν ένα µήνυµα, δεν στέλνουν µηνύµατα αναζήτησης στα κανάλια από τα οποία έλαβαν ένα µήνυµα αναζήτησης
Τερµατισµός () Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Εποµένως τα µηνύµατα γονέας ή µη-γονέας έχουν δύο χρήσεις. Παροχή πλήρους γνώσης κάθε διεργασία γνωρίζει και τα παιδιά της. Ενηµέρωση τερµατισµού κάθε διεργασία γνωρίζει πότε τα υποδέντρα των παιδιών της έχουν κατασκευαστεί Αρχικό ίκτυο Αρχικό ίκτυο Ο αλγόριθµος SyncBFS τ απαιτεί το πολύ diam(g) + γύρους και χρησιµοποιεί m µηνύµατα Το δίκτυο έχει µονάδες, κανάλια Η διεργασία ξεκινά την εκτέλεση του αλγορίθµου. Η διεργασία ϑεωρείται µαρκαρισµένη. Ολες οι άλλες διεργασίες δεν είναι µαρκαρισµένες. Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. oς Γύρος o Βήµα Οι διεργασίες, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο.
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. Οι διεργασίες,,,, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο. Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. Η διεργασία στέλνει µήνυµα µη-γονέας στην oς Γύρος o Βήµα oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. Η διεργασία στέλνει µήνυµα µη-γονέας στην oς Γύρος o Βήµα Οι διεργασίες,,,,,, αγνοούν τα µηνύµατα αναζήτησης που έλαβαν. oς Γύρος o Βήµα Η διεργασία µαρκάρεται. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο.
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα γονέας στην oς Γύρος o Βήµα γ oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα γονέας στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή του υποδέντρου της ολοκληρώθηκε oς Γύρος o Βήµα Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα γονέας στην Οι διεργασίες,, στέλνουν µήνυµα γονέας στην γ oς Γύρος o Βήµα γ γ γ γ oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα γονέας στην Οι διεργασίες,, στέλνουν µήνυµα γονέας στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των, ολοκληρώθηκε Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των,, ολοκληρώθηκε oς Γύρος o Βήµα
Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα γονέας στην γ oς Γύρος o Βήµα γ oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα γονέας στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των, ολοκληρώθηκε Η διεργασία τερµατίζει oς Γύρος o Βήµα Παράδειγµα Εκτέλεσης Αλγόριθµου SyncBFS τ Τελικό ίκτυο Το δέντρο αναζήτησης κατά εύρος έχει κατασκευαστεί. Ο αλγόριθµος εκτελέστηκε σε γύρους. Συνολικά µεταδόθηκαν µηνύµατα. Τελικό ίκτυο Αρχικές Υποθέσεις Οι ερωτήσεις αντιστοιχούν σε προβλήµατα των ΚΣΙ Προσπαθούµε να περιγράψουµε το ΚΣ (όπου εµφανίζεται το πρόβληµα) Η περιγραφή γίνεται µε αφαιρετικό τρόπο οι αρχικές υποθέσεις Ενα πρόβληµα µπορεί να διαφοροποιηθεί αν αλλάξουν οι αρχικές υποθέσεις είτε να γίνει ποιο εύκολο, είτε ποιο δύσκολο ακόµα και τελείως διαφορετικό Προτού αρχίσουµε να εξετάζουµε το πρόβληµα πρέπει να καταγράψουµε όλες τις αρχικές υποθέσεις που γίνονται Πρέπει να κατανοήσουµε ακριβώς γιατί δίνεται µια αρχική υπόθεση
Μεθοδολογία: Καταγραφή Υποθέσεων / Μοντέλου Εντοπισµός αρχικών υποθέσεων Μοντέλο Επικοινωνίας Τοπολογία ικτύου Σφάλµατα Γνώσεις διεργασιών Κατανόηση Προβλήµατος Χαρακτηρισµός Προβλήµατος Μεθοδολογία: Αρχική Προσέγγιση Εχουµε κάποια διαίσθηση για την λύση ; Εχουµε πάρει κάποια πρώτη απόφαση για την λύση που ϑα δώσουµε ; σκεφτείτε το ξανά! µήπως µας έχει ξεφύγει κάτι ; Σκιαγραφήστε την λύση ελέγχουµε αν συµφωνεί µε τις αρχικές υποθέσεις έχουµε χρησιµοποιήσει όλες τις πληροφορίες Είναι η λύση σωστή ; µπορούµε να επιχειρηµατολογήσουµε ; Ποια είναι η πολυπλοκότητα (χρονική, επικοινωνίας) ; Ποια είναι η ανεκτικότητα σε σφάλµατα ; Μήπως υπάρχει καλύτερη λύση ; Μεθοδολογία: Σχεδιασµός Λύσης Χρειάζεται να τρέξουµε κάποιο αλγόριθµο για να αποκτήσουµε κάποια πληροφορία ; εκλογή αρχηγού για να προκύψει µια µοναδική διεργασία (π.χ., u 0 ) καταµέτρηση για να ϐρεθεί το πλήθος των διεργασιών (n) υπολογισµός διαµέτρου Αν το δίκτυο είναι γενικό απαιτείτε κάποια συγκεκριµένη τοπολογία ; χρειαζόµαστε ένα δένδρο / δακτύλιο ; συνήθως κάνει το πρόβληµα πιο εύκολο ή την λύση πιο αποδοτική Αποτύπωση γενικής ιδέας παράγραφος ποια είναι η ϐασική ιδέα ; τι κάνει ο αλγόριθµος ; γιατί είναι σωστός ; Αποτύπωση Λύσης Αναλυτική καταγραφή µεταβλητών σκοπός χρήση τύπος µεταβλητής αρχική τιµή Αναλυτική καταγραφή µηνυµάτων σκοπός χρήση περιεχόµενα µηνυµάτων Αρχικοποίηση συστήµατος δηµιουργία κάποιας συγκεκριµένης εικονικής τοπολογίας εκτέλεση αλγόριθµου (απόκτηση γνώσης) αρχικοποίηση µεταβλητών Βασικός γύρος εκτέλεσης Ειδικές περιπτώσεις Τερµατισµός Αλλες πληροφορίες
Τελική Απάντηση. Σύντοµη Περιγραφή. Περιγραφή ιεργασιών µεταβλητές τύποι µηνυµάτων αρχικοποίηση. Βοηθητικοί Αλγόριθµοι. Βασικός Αλγόριθµος περιγραφή εκτέλεσης απλός / τυπικός γύρος εκτέλεσης ειδικές περιπτώσεις. Ψευδοκώδικα / Κώδικας. Ορθότητα Συζήτηση... Απόδειξη. Χρονική Πολυπλοκότητα Συζήτηση... Απόδειξη. Πολυπλοκότητα Μηνυµάτων Συζήτηση... Απόδειξη Εκφώνηση oυ Βοηθητικού Προβλήµατος Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες συνδεδεµένες µέσω ενός γενικού, µη-κατευθυνόµενου δικτύου µε m κανάλια επικοινωνίας. Κάθε διεργασία έχει µια µοναδική ταυτότητα και δεν γνωρίζει το σύνολο των διεργασιών, ούτε την τοπολογία του δικτύου. Σχεδιάστε έναν κατανεµηµένο αλγόριθµο καταµέτρισης που επιτρέπει στη διεργασία u 0 να υπολογίσει το πλήθος των διεργασιών. Αναλύστε την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους ισχυρισµούς σας. Καταγραφή Υποθέσεων / Μοντέλου Μοντέλο Επικοινωνίας Σύγχρονο κατανεµηµένο σύστηµα Τοπολογία ικτύου Σφάλµατα Γενικό, µη-κατευθυνόµενο δίκτυο n διεργασίες, m κανάλια επικοινωνίας Κανένα Γνώσεις διεργασιών Μοναδική ταυτότητα Υπάρχει µια µοναδική διεργασία u 0 Αποτύπωση Προβλήµατος Αρχικός Σχεδιασµός Απάντησης Κατανόηση Προβλήµατος Η διεργασία u 0 πρέπει να υπολογίσει τη διάµετρο του δικτύου Να µετρίσει τις διεργασίες Χαρακτηρισµός Προβλήµατος Κατασκευή ενός δένδρου αναζήτησης κατά εύρος µε ϱίζα την u 0 Τα ϕύλλα ξεκινούν τους µετριτές. Οι γονείς αθροίζουν τους µετριτές των παιδιών και στέλνουν το αποτέλεσµα στους γονείς τους. Αρχική Προσέγγιση Υπάρχει κάποιος αντίστοιχος αλγόριθµος που µελετήσαµε στο µάθηµα ; Τι τροποποιήσεις πρέπει να κάνουµε ;
Αλγόριθµος SynchBFS µ () Αλγόριθµος SynchBFS µ () Οι διεργασίες διατηρούν µια µεταβλητή µαρκαρισµένη η οποία αρχικά είναι fale και µια µεταβλητή γονέας µε αρχική τιµή 0. Αρχικά, η διεργασία u 0 ϑέτει την µεταβλητή µαρκαρισµένη ως true, την µεταβλητή γονέας µε την ταυτότητα της, και στέλνει ένα µήνυµα αναζήτησης σε όλους τους γείτονες της. Σε κάθε γύρο, εάν µια διεργασία λάβει ένα µήνυµα αναζήτησης και η τιµή της µεταβλητής µαρκαρισµένη είναι fale -- ϑέτει την µεταβλητή µαρκαρισµένη true, ϑέτει την µεταβλητή γονέας µε την ταυτότητα της διεργασίας από όπου έλαβε το µήνυµα, και στον επόµενο γύρο στέλνει ένα µήνυµα αναζήτησης σε όλους τους γείτονες της. true -- στον επόµενο γύρο, επιστρέφει στον αποστολέα ένα µήνυµα µη-γονέας Οταν η διεργασία λάβει ένα µήνυµα µη-γονέας απο όλες τις γειτονικές διεργασίες, ή λάβει µήνυµα αναζήτησης απο την µοναδική γειτονική διεργασία, στον επόµενο γύρο στέλνει το µήνυµα (γονέας,) στον γονέα της. Οταν η διεργασία λάβει ένα µήνυµα µη-γονέας ή (γονέας,c) απο όλες τις γειτονικές διεργασίες, αθροίζει τις µεταβλητές c όλων των µηνυµάτων γονέας που έλαβε, αυξάνει το αποτέλεσµα κατά και στον επόµενο γύρο στέλνει το µήνυµα (γονέας, (c) + ) στον γονέα της. Απόδειξη ορθότητας Ο αλγόριθµος επισκέπτεται όλους τους κόµβους του δικτύου Spanning Tree Ολες οι διεργασίες προσµετρούνται Convergecat Η χρονική πολυπλοκότητα είναι O (diam(g)) Λόγω αρχικού Flooding και µετά διαδικασίας Convergecat Η πολυπλοκότητα επικοινωνίας είναι O (m) Λόγω αρχικού Flooding επισκεπτόµαστε κάθε κανάλι επικοινωνίας Αρχικό ίκτυο Το δίκτυο έχει µονάδες, κανάλια Η διεργασία ξεκινά την εκτέλεση του αλγορίθµου. Η διεργασία ϑεωρείται µαρκαρισµένη. Ολες οι άλλες διεργασίες δεν είναι µαρκαρισµένες. Αρχικό ίκτυο
oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. ς ς Η διεργασία στέλνει µήνυµα αναζήτησης σε όλους του γείτονες της. oς Γύρος o Βήµα Οι διεργασίες, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα ς ς ς ς ς ς oς Γύρος o Βήµα Οι διεργασίες, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. oς Γύρος o Βήµα Οι διεργασίες,,,, µαρκάρονται. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Οι διεργασίες, ϑέτουν την ως γονέα στο δέντρο. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο. oς Γύρος o Βήµα
oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. Η διεργασία στέλνει µήνυµα µη-γονέας στην oς Γύρος o Βήµα ς ς ς ς ς ς ς ς ς ς oς Γύρος o Βήµα Οι διεργασίες,,,, στέλνουν µήνυµα αναζήτησης σε όλους τους γείτονες τους. Η διεργασία στέλνει µήνυµα µη-γονέας στην oς Γύρος o Βήµα Οι διεργασίες,,,,,, αγνοούν τα µηνύµατα αναζήτησης που έλαβαν. Η διεργασία µαρκάρεται. Η διεργασία διαλέγει τυχαία την ως γονέα στο δέντρο. oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα γονέας, στην oς Γύρος o Βήµα γ, oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα µη-γονέας στην Η διεργασία στέλνει µήνυµα γονέας, στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή του υποδέντρου της ολοκληρώθηκε oς Γύρος o Βήµα
oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα γονέας, στην Η διεργασία στέλνει µήνυµα γονέας, στην Οι διεργασίες,, στέλνουν µήνυµα γονέας, στην oς Γύρος o Βήµα γ, γ, γ, γ, γ, Η διεργασία στέλνει µήνυµα γονέας, στην Η διεργασία στέλνει µήνυµα γονέας, στην Οι διεργασίες,, στέλνουν µήνυµα γονέας, στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των, ολοκληρώθηκε Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των,, ολοκληρώθηκε oς Γύρος o Βήµα oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα γονέας, στην Η διεργασία στέλνει µήνυµα γονέας, στην oς Γύρος o Βήµα γ, γ, oς Γύρος o Βήµα Η διεργασία στέλνει µήνυµα γονέας, στην Η διεργασία στέλνει µήνυµα γονέας, στην oς Γύρος o Βήµα Η διεργασία διαπιστώνει ότι η κατασκευή των υποδέντρων των, ολοκληρώθηκε Η διεργασία πλέον γνωρίζει το σύνολο των διεργασιών: Η διεργασία τερµατίζει oς Γύρος o Βήµα
Εκφώνηση oυ Βοηθητικού Προβλήµατος Τελικό ίκτυο Η καταµέτρηση των διεργασιών έχει ολοκληρωθεί. Ο αλγόριθµος εκτελέστηκε σε γύρους. Συνολικά µεταδόθηκαν µηνύµατα. Τελικό ίκτυο Σχεδιάστε έναν αλγόριθµο για σύγχρονα κατανεµηµένα συστήµατα, όπου το δίκτυο επικοινωνίας µπορεί να αναπαρασταθεί από ένα γενικό γράφηµα (µη-κατευθηνόµενο), που επιτρέπει σε µία διεργασία u 0 να εντοπίσει την διεργασία u max που έχει την µεγαλύτερη απόσταση στο γράφηµα (δηλ. να µάθει την ταυτότητά της u max και την απόσταση της). Αναλύστε την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους ισχυρισµούς σας. Εκφώνηση oυ Βοηθητικού Προβλήµατος Σύνοψη ης ιάλεξης Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες συνδεδεµένες µέσω ενός γενικού, µη-κατευθυνόµενου δικτύου µε m κανάλια επικοινωνίας, όπου κάθε διεργασία δεν γνωρίζει το σύνολο των διεργασιών, ούτε την τοπολογία του δικτύου. Κάθε διεργασία u δέχεται ως είσοδο έναν ακέραιο αριθµό i u. Σχεδιάστε έναν κατανεµηµένο αλγόριθµο που επιτρέπει στη διεργασία u 0 να υπολογίσει τον µέγιστο αριθµό από αυτούς που έχουν δοθεί στις διεργασίες. Αναλύστε την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Προηγούµενο Μάθηµα Προηγούµενο Μάθηµα Μοντέλο Σύγχρονων Κατανεµηµένων Συστηµάτων Πρόβληµα Εκλογής Αρχηγού Σύγχρονα Κατανεµηµένα Συστήµατα Εκλογή Αρχηγού σε Γενικά ίκτυα Αναζήτηση κατά Εύρος Ασκήσεις στα ΚΣΙ Σύνοψη Μαθήµατος Σύνοψη Μαθήµατος Επόµενο Μάθηµα η Ασκηση
Σύνοψη Μαθήµατος Σύγχρονα Κατανεµηµένα Συστήµατα Αναζήτηση κατά Εύρος Αλγόριθµος SyncBFS Παραλλαγές Βιβλιογραφία Σηµειώσεις του µαθήµατος Βιβλίο Ditributed Algorithm" (N.Lynch). Κεφάλαιο : Algorithm in General Synchronou Network Βιβλίο Ditributed Computing Fundamental, Simulation, and Advanced Topic" (H.Attiya, J.Welch). Κεφάλαιο : Baic Algorithm in Meage Paing Sytem Βιβλίο Introduction to Ditributed Algorithm" (G.Tel). Κεφάλαιο : Wave and Traveral Algorithm Βιβλίο Ditributed Sytem, Concept and Deign" (G.Coulouri, J.Dollimore, T.Kindberg). Κεφάλαιο : Coordination and Agreement Επόµενο Μάθηµα Σύγχρονα Κατανεµηµένα Συστήµατα Σφάλµατα Επικοινωνίας Σφάλµατα Τερµατισµού Τυπικά Θέµατα Απαντήσεις σε αρχείο τύπου Π Φ Κώδικας σε αρχείο τύπου ΗΤΜΛ Παράδοση Παρασκευή, Νοεµβρίου, 0 Με την χρήση του συστήµατος συβµιτ-δς που είναι εγκατεστηµένο στο διογενις.ςειδ.υπατρας.γρ Ατοµική Ασκηση Συνεισφέρει ϐαθµούς στον τελικό ϐαθµό Αντιγραφή = Μηδενισµός στο µάθηµα
o Ερώτηµα Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες συνδεδεµένες µέσω ενός δικτύου κατευθυνόµενου δακτυλίου, όπου κάθε διεργασία έχει µια µοναδική ταυτότητα αλλά δεν γνωρίζει το σύνολο των διεργασιών, ούτε την τοπολογία του δικτύου. Σχεδιάστε έναν κατανεµηµένο αλγόριθµο εκλογής k αρχηγών. Ορίστε τις ιδιότητες του αλγόριθµου σας και αναλύστε την ορθότητά του, καθώς και την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους ισχυρισµούς σας. Υλοποιείστε τον αλγόριθµο σε γλώσσα javacript. o Ερώτηµα Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες συνδεδεµένες µέσω ενός δικτύου µη-κατευθυνόµενου δακτυλίου, όπου κάθε διεργασία έχει µια µοναδική ταυτότητα αλλά δεν γνωρίζει το σύνολο των διεργασιών, ούτε την τοπολογία του δικτύου. Σχεδιάστε έναν κατανεµηµένο αλγόριθµο εκλογής αρχηγού που επιτυγχάνει πολυπλοκότητα επικοινωνίας το πολύ O (n log n). Ορίστε τις ιδιότητες του αλγόριθµου σας και αναλύστε την ορθότητά του, καθώς και την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους ισχυρισµούς σας. Υλοποιείστε τον αλγόριθµο σε γλώσσα javacript. o Ερώτηµα Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες συνδεδεµένες µέσω ενός γενικού, µη-κατευθυνόµενου δικτύου µε m κανάλια επικοινωνίας, όπου κάθε διεργασία δεν γνωρίζει το σύνολο των διεργασιών, ούτε την τοπολογία του δικτύου. Κάθε διεργασία u δέχεται ως είσοδο έναν ακέραιο αριθµό i u. Σχεδιάστε έναν κατανεµηµένο αλγόριθµο που επιτρέπει στη διεργασία u 0 να εντοπίσει τους k µεγαλύτερους αριθµού εισόδου από αυτούς που έχουν δοθεί στις διεργασίες. Αναλύστε την χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους ισχυρισµούς σας.