Αποτίµησηκαθολικού κατηγορήµατος Εισαγωγή Ιδιότητες καθολικών κατηγορηµάτων Αδιέξοδα Ανίχνευση αδιεξόδων Συγκεντρωτική ανίχνευση Ιεραρχική ανίχνευση Κατανεµηµένη ανίχνευση Επανόρθωση αδιεξόδων Κατανεµηµένος τερµατισµός Κατανεµηµένα Συστήµατα 05-1
Εισαγωγή Καθολικό κατηγόρηµα Συνάρτηση που εφαρµόζεται στις συνεπείς καθ. Καταστάσεις Παράγει true ή false Πολλά προβλήµατα ανάγονται σε αυτό Ανίχνευση αδιεξόδων και τερµατισµού Απώλεια σκυτάλης Καθορισµός σηµείου ελέγχου και επανεκκίνηση Παρακολούθηση και εκσφαλµάτωση Στάθµιση φόρτου Αποτίµηση καθολικού κατηγορήµατος Η καθολική κατάσταση ικανοποιεί το κατηγόρηµα Φ; Για παράδειγµα, έχει συµβεί αδιέξοδο; Βασίζεται στην κατασκευή της καθολικής κατάστασης Κατανεµηµένα Συστήµατα 05-2
Ιδιότητεςκαθολικών κατηγορηµάτων Σταθερά κατηγορήµατα Όταν γίνουν αληθή, παραµένουν αληθή ΈστωηακολουθίακαθολικώνκαταστάσεωνΣ a Σ s Σ f Για ένα σταθερό κατηγόρηµα έχουµε Φ(Σ s ) = true Φ(Σ f ) = true Επιπλέον έχουµε Φ(Σ s ) = false Φ(Σ a ) = false Παραδείγµατα σταθερών κατηγορηµάτων Αδιέξοδο Τερµατισµός Απώλεια σκυτάλης Συλλογή απορριµάτων Κατανεµηµένα Συστήµατα 05-3
Ιδιότητεςκαθολικών κατηγορηµάτων Ασταθή κατηγορήµατα Παράδειγµα: ισότητα µήκους δύο δυναµικών ουρών ύο βασικά προβλήµατα Το Φµπορεί να γίνει αληθές αλλά να µην το ανιχνεύσουµε Μπορεί να µην είναι αληθές αρκετή ώρα Αλλά να µην ισχύει µόνιµα Το Φµπορεί να βρεθεί αληθές αλλά να µην ίσχυε Μπορεί να είναι αληθές σε ένα στιγµιότυπο Το στιγµιότυπο όµως µπορεί να µην συνέβη ποτέ Επέκταση σε ολόκληρο τον υπολογισµό Possibly(Φ): R : Σ l R τέτοιο ώστε Φ(Σ l ) = TRUE Definitely(Φ): R : Σ l R τέτοιο ώστε Φ(Σ l ) = TRUE Κατανεµηµένα Συστήµατα 05-4
Ιδιότητεςκαθολικών κατηγορηµάτων Σ 00 Σ 10 Σ 01 Σ 11 Σ 02 Σ 21 Σ 12 Σ 03 Παράδειγµα Possibly(y-x=2) Υπάρχει µία εκτέλεση στην οποία θα ισχύσει Definitely(x=y) Ισχύει οπωσδήποτε σε όλες τις εκτελέσεις Παρατηρούµε ότι ~Possibly(Φ) Definitely(~Φ) (y-x)=2 x=y Σ 41 Σ 31 Σ 22 Σ 32 Σ 23 Σ 42 Σ 33 Σ 43 Σ 53 Σ 44 Σ 63 Σ 54 Σ 55 Σ 64 Σ 65 Σ 45 Σ 13 Κατανεµηµένα Συστήµατα 05-5
Ιδιότητεςκαθολικών κατηγορηµάτων Αποτίµηση Possibly(Φ) Αναζήτηση σε όλες τις συνεπείς καθολικές καταστάσεις Αν δεν είναι πουθενά αληθές το Φ, τότε δεν ισχύει states={σ 0 0 };L=0; while (Φ(S)==false, S states) { if(states=={τελική καθολική κατάσταση}) } return false; L=L+1; states={όλες οι προσπελάσιµες από τις καταστάσεις του states καταστάσεις του επιπέδου L}; return true; Κατανεµηµένα Συστήµατα 05-6
Ιδιότητεςκαθολικών κατηγορηµάτων Αποτίµηση Definitely(Φ) Αναζήτηση σε όλες τις συνεπείς καθολικές καταστάσεις Πρέπει να είναι αληθές σε όλα τα µονοπάτια if (Φ(Σ 0 0 )) states={}; else states ={Σ 0 0 }; L=0; while {states <> {}) { L=L+1; reachable={όλες οι προσπελάσιµες από τις καταστάσεις του states καταστάσεις του επιπέδου L}; states={s reachable:φ(s)=false}; if(states=={τελική καθολική κατάσταση}) return false; } return true; Κατανεµηµένα Συστήµατα 05-7
Αδιέξοδα Ίδιος ορισµός µε συγκεντρωτικά συστήµατα Εµποδισµός διεργασιών λόγω αναµονής για πόρους Μόνιµος εµποδισµός συνόλου εργασιών Εµφανίζεται όταν ισχύουν οι συνθήκες του Coffman Απλά οι πόροι είναι κατανεµηµένοι σε κόµβους Γράφος καταχώρισης πόρων είχνει καταχώριση πόρων και ζήτηση πόρων Κατανεµηµένα Συστήµατα 05-8
Αδιέξοδα Γράφος αναµονής Απλούστερη µορφή του γράφου καταχώρισης πόρων Παραλείπει τους πόρους Ισχύει όταν έχουµε µία µονάδα κάθε πόρου Αν έχει κύκλο, έχουµε αδιέξοδο Πολλές µονάδες ανά πόρο Θα πρέπει να έχουµε κόµπο στο γράφο καταχώρισης πόρων Κόµπος είναι ένα µη κενό σύνολο κόµβων Κ Όπου όλοι οι προσπελάσιµοι κόµβοι από το Κ είναι και αυτοί µέλη του Κ Κατανεµηµένα Συστήµατα 05-9
Αδιέξοδα Χειρισµός αδιεξόδων Έγκριση Μόνο σε επίπεδο λειτουργικού συστήµατος Μόνο σε συγκεκριµένες εφαρµογές Αποφυγή ύσκολη στην εφαρµογή Απαιτεί γνώση απαιτήσεων εκ των προτέρων Πρόληψη Συνήθως αποφεύγουµε τη συνθήκη κυκλικής αναµονής Οι υπόλοιπες είναι δύσκολο να αποφευχθούν Ανίχνευση και επανόρθωση αδιεξόδων Η πιο συνηθισµένη στρατηγική στα κατανεµηµένα συστήµατα Κατανεµηµένα Συστήµατα 05-10
Ανίχνευσηαδιεξόδων Κατασκευή καθολικού γράφου αναµονής Κατασκευάζεται από τους τοπικούς Τρεις τρόποι κατασκευής Συγκεντρωτικός Ένας κόµβος συντονιστής Ιεραρχικός Ιεραρχία συντονιστών Κατανεµηµένος Συµµετέχουν όλοι Επιθυµητές ιδιότητες Πρόοδος Ανίχνευση σε πεπερασµένο χρόνο Ασφάλεια Ανίχνευση πραγµατικών αδιεξόδων Κατανεµηµένα Συστήµατα 05-11
Συγκεντρωτικήανίχνευση Τοπικοί συντονιστές Κατασκευή τοπικών γράφων αναµονής Μπορεί να εντοπίσει τοπικό αδιέξοδο Κεντρικός συντονιστής Κατασκευή καθολικού γράφου αναµονής Μπορεί να εντοπίσει καθολικό αδιέξοδο Τα τοπικά αντιµετωπίζονται από τον τοπικό συντονιστή Πότε συλλέγονται πληροφορίες; Συνεχής µετάδοση: σε κάθε αλλαγή Περιοδική µετάδοση: µετά από κάποιοι πλήθος αλλαγών Μετάδοση κατ απαίτηση: όταν το ζητήσει ο συντονιστής Πάντα στέλνονται µόνο οι αλλαγές Κατανεµηµένα Συστήµατα 05-12
Ιεραρχικήανίχνευση Συνήθως οι κύκλοι είναι µικροί Το 90% εµπλέκουν δύο διεργασίες εν έχει νόηµα η κατασκευή καθολικού γράφου Είναι καλύτερα το πρόβληµα να αντιµετωπίζεται τοπικά Ιεραρχική προσέγγιση Λογικό δένδρο από ελεγκτές Κάθε ελεγκτής έχει κάποια εµβέλεια Τα φύλλα ελέγχουν τον τοπικό τους γράφο Οι εσωτερικοί κόµβοι ελέγχουν την ένωση των παιδιών τους Αντιµετώπιση αδιεξόδων Από τον κατώτερο ιεραρχικά κόµβο που τα εντοπίζει Όσο πιο τοπικά γίνεται Μόνο οι γράφοι που δεν έχουν κύκλους πηγαίνουν παραπάνω Κατανεµηµένα Συστήµατα 05-13
Ιεραρχικήανίχνευση p 1 p 2 p 4 p 7 p 3 p 5 p 6 Ελεγκτής Η p 1 p 2 p 4 p 7 p 5 p 6 p 7 p 3 p 5 Ελεγκτής Ζ Ελεγκτής Ε p 1 p 3 p 1 R 3 p 3 p 5 p 6 R 1 R 2 p 4 R 4 p 5 R 6 R 7 p 2 R 5 p 7 p 6 p 7 Κόµβος Κ 1 Κόµβος Κ 2 Ελεγκτής Α Ελεγκτής Β Κόµβος Κ 3 Ελεγκτής Γ Κόµβος Κ 4 Ελεγκτής Κατανεµηµένα Συστήµατα 05-14
Κατανεµηµένηανίχνευση Οι κόµβοι διατηρούν τροποποιηµένους γράφους Σε κάθε τοπικό γράφο αναµονής προστίθενται Η ακµή (p i,p ex )ότανη εσωτερική p i περιµένει εξωτερικό πόρο Η ακµή (p ex,p i ) όταν η εξωτερική p i περιµένει τοπικό πόρο Παράδειγµα: έστω οι κόµβοι K 1 και K 2 Ο K 1 έχει τις διεργασίες p 1, p 2 και p 4 Ο K 2 έχει τις διεργασίες p 3 και p 5 Οι κόµβοι γνωρίζουν τις άµεσες εξωτερικές αιτήσεις Ο K 1 γνωρίζει την αίτηση του p 3 Ο K 2 γνωρίζει την αίτηση του p 1 Ο αλγόριθµος προσθέτει τον p ex και στους δύο κόµβους ηµιουργία δύο κύκλων Οι κύκλοι περιέχουν τον p ex Κατανεµηµένα Συστήµατα 05-15
Κατανεµηµένηανίχνευση Τικάνουµε αν υπάρχει αδιέξοδο µε τον p ex ; Πρέπει να συµβουλευτούµε και άλλους κόµβους Κατανεµηµένα Συστήµατα 05-16
Κατανεµηµένηανίχνευση Αλγόριθµος εντοπισµού κύκλου (path pushing) Έστω ότι ο p i έχει βρει τον κύκλο (p ex,p i,p j,,p k,p ex ) ΟK i στέλνει στον K j τον κύκλο Ο K j είναι ο κόµβος που περιέχει τον p k ΟK j ενηµερώνει τον γράφο του µε τις ακµές που έλαβε Αν ο νέος γράφος δεν περιέχει κύκλο εν υπάρχει αδιέξοδο, τερµατισµός Αν ο ενηµερωµένος γράφος περιέχει κύκλο χωρίς τον p ex Εντοπίστηκε κύκλος µε τις εµπλεκόµενες διεργασίες Αν ο ενηµερωµένος γράφος περιέχει κύκλο µε τον p ex ΟK j στέλνει τον νέο κύκλο στον κόµβο K k Η διαδικασία επαναλαµβάνεται µε K i = K j και K j = K k Κατανεµηµένα Συστήµατα 05-17
Κατανεµηµένηανίχνευση p ex p 1 p 5 p 3 p 2 Παράδειγµα Χρησιµοποιούµε το προηγούµενο παράδειγµα Ο K 1 εντοπίζει κύκλο που περιλαµβάνει τον p ex (p ex,p 3,p 2,p 1,p ex ) Ο κύκλος στέλνεται στον Κ 2 που ενηµερώνει τον γράφο Ο K 2 εντοπίζει κύκλο που δεν περιλαµβάνει τον p ex (p 3,p 2,p 1 ) Ξεκινά η διαδικασία αντιµετώπισης αδιεξόδου Κατανεµηµένα Συστήµατα 05-18
Κατανεµηµένηανίχνευση Αν ξεκινήσουν ταυτόχρονα δύο κόµβοι; Θα εντοπίσουν και οι δύο τον κύκλο Σπατάλη µηνυµάτων Πιθανόν περιττοί τερµατισµοί διεργασιών Χρήση µοναδικού αναγνωριστικού ανά διεργασία Όταν εντοπίζεται κύκλος της µορφής (p ex,p i,p j,,p k,p ex ) Αν ID(p k ) < ID(p i )τότε ο κόµβος εκτελεί τον αλγόριθµο Αλλιώς αφήνει την εκτέλεση σε άλλους Παράδειγµα Ο Κ 1 εντοπίζει τον κύκλο (p ex,p 3,p 2,p 1,p ex ) Ο Κ 1 έχει τον κόµβο p 1 και (έστω) ID(p 1 )<ID(p 3 ) Άρα ο Κ 1 ξεκινά τον αλγόριθµο ανίχνευσης Κατανεµηµένα Συστήµατα 05-19
Κατανεµηµένηανίχνευση Αλγόριθµος εντοπισµού κύκλου (edge chasing) Κάθε διεργασία p i έχει ένα µοναδικό ID Ανη αίτηση της p i προς την p j καθυστερεί πολύ Η p i στέλνει ένα µήνυµα διερεύνησηςστην p j Τρία πεδία: εµποδισµένος, αποστολέας, παραλήπτης Αν ο παραλήπτης p j δεν είναι εµποδισµένος εν υπάρχει αδιέξοδο, τέλος προώθησης Αν ο παραλήπτης p j είναι εµποδισµένος προωθεί το µήνυµα Σε όλους τους κόµβους p k τους οποίους περιµένει Στο δεύτερο πεδίο βάζει το δικό της αναγνωριστικό (p j ) Στο τρίτο πεδίο βάζει το αναγνωριστικό του παραλήπτη (p k ) Αν ο παραλήπτης δει το δικό του αναγνωριστικό στο πρώτο πεδίο Έχει συµβεί αδιέξοδο Κατανεµηµένα Συστήµατα 05-20
Κατανεµηµένηανίχνευση Παράδειγµα Το ίδιο παράδειγµα µε πριν Η p 1 µπλοκάρεται περιµένοντας την p 3 Στέλνει µήνυµα p 1,p 1,p 3 στην p 3 Η p 3 στέλνει το µήνυµα στις p 2 και p 5 Στην p 5 το µήνυµα σταµατάει Στην p 2 το µήνυµα προωθείται σε p 1 και p 4 Στην p 1 εντοπίζεται το αδιέξοδο Κατανεµηµένα Συστήµατα 05-21
Κατανεµηµένηανίχνευση Ποιος αλγόριθµος είναι καλύτερος; Συνήθως χρησιµοποιείται ο δεύτερος Εύκολη υλοποίηση Μηνύµατα σταθερού µεγέθους Το πολύ ένα µήνυµα ανά ακµή εν χρειάζεται καθολικούς γράφους εν ανιχνεύει ανύπαρκτα αδιέξοδα εν απαιτεί διάταξη των διεργασιών Όλα αυτά δεν ισχύουν στον πρώτο αλγόριθµο! Κατανεµηµένα Συστήµατα 05-22
Επανόρθωσηαδιεξόδων Τι κάνουµε όταν εντοπίσουµε ένα αδιέξοδο; Επέµβαση χειριστή Ποιος είναι αρµόδιος; Αν ξεκινήσουν όλοι την αντιµετώπιση; Αν ένας κόµβος ευνοεί τις δικές του διεργασίες; Τερµατισµός διεργασιών Επιλέγει τις «καλύτερες» διεργασίες Υψηλό κόστος λόγω σπατάλης πόρων Οπισθοδρόµηση διεργασιών Στο προηγούµενο σηµείο ελέγχου Θα πρέπει όµως να διατηρούµε σηµεία ελέγχου Συµφέρει η οπισθοδρόµηση ή ο τερµατισµός; Κατανεµηµένα Συστήµατα 05-23
Κατανεµηµένοςτερµατισµός Πότε τερµατίζει ένα παράλληλο πρόγραµµα; Όλες οι διεργασίες περιµένουν εθελοντικά µηνύµατα από άλλες Έτσι καλύπτουµε και τις άπειρες ανακυκλώσεις Όταν η αναµονή δεν είναι εθελοντική, έχουµε αδιέξοδο Πώς όµως µπορούµε να το διαπιστώσουµε; Ανίχνευση κατανεµηµένου τερµατισµού Υποθέτουµε αξιόπιστα κανάλια επικοινωνίας Τα µηνύµατα φτάνουν µία φορά και σωστά Αλγόριθµος του Dijkstra Έστω n κόµβοι σε ενεργή ή παθητική κατάσταση Μόνο οι ενεργοί κόµβοι στέλνουν µηνύµατα Ένας παθητικός γίνεται ενεργός όταν λάβει µήνυµα Ένας ενεργός γίνεται παθητικός όταν δεν περιµένει κάτι Κατανεµηµένα Συστήµατα 05-24
Κατανεµηµένοςτερµατισµός Κατάσταση τερµατισµού Όλοι οι κόµβοι είναι παθητικοί εν υπάρχει κανένα µήνυµα καθοδόν οµή αλγορίθµου Οι κόµβοι διατάσσονται λογικά σε δακτύλιο Κάθε κόµβος i διατηρεί έναν µετρητή c i Αρχικά c i =0 Ο c i αυξάνεται σε κάθε αποστολήµηνύµατος Ο c i µειώνεται σε κάθε λήψη µηνύµατος Το Σc i δείχνει πόσα µηνύµατα εκκρεµούν Όλοι οι κόµβοι και η σκυτάλη έχουν χρώµα Αρχικά όλα είναι λευκά Ένας κόµβος γίνεται µαύρος όταν λάβει µήνυµα (όχι τη σκυτάλη) Ένας κόµβος γίνεται λευκός όταν προωθεί τη σκυτάλη Αν η σκυτάλη βρει µαύρο κόµβο, γίνεται µαύρη Κατανεµηµένα Συστήµατα 05-25
Κατανεµηµένοςτερµατισµός Αλγόριθµος Ο κόµβος i=0 στέλνει τη σκυτάλη µε τιµή 0 στον n-1 Όταν ένας κόµβος i<>0 λάβει τη σκυτάλη Κρατάει τη σκυτάλη µέχρι να γίνει παθητικός Προωθεί τη σκυτάλη στον i-1 αυξάνοντας τηντιµή της κατά c i Αν ο κόµβος είναι µαύρος Η σκυτάλη γίνεται µαύρη Ο κόµβος γίνεται λευκός Όταν ένας κόµβος λάβει ένα µήνυµα (όχι τη σκυτάλη) Γίνεται µαύρος Όταν ο κόµβος 0 λάβει τη σκυτάλη Αν είναι παθητικός και λευκόςκαι η σκυτάλη είναι λευκή και το άθροισµα της τιµής της σκυτάλης και του c είναι 0 Έχει συµβεί τερµατισµός Κατανεµηµένα Συστήµατα 05-26
Κατανεµηµένοςτερµατισµός Αλγόριθµος ανάκτησης πίστωσης Μία εργασία j αποτελείται από καθήκοντα Κάθε καθήκον εκτελείται σε έναν µόνο κόµβο Αρχικά κάθε εργασία περιέχει ένα µόνο καθήκον Το καθήκον µπορεί να δηµιουργήσει νέα σε άλλους κόµβους Άρα µπορούµε να έχουµε καθήκοντα καθοδόν Όταν τα καθήκοντα ολοκληρωθούν, έχουµε terminated(j)=true Ο τερµατισµός είναι σταθερό καθολικό κατηγόρηµα Αν ο κόµβος Sδεν έχει ενεργά καθήκοντα, έχουµε idle S (j)=true Η αδράνεια είναι ασταθές τοπικό κατηγόρηµα Μπορεί να φτάσουν σε λίγο κι άλλα καθήκοντα Η αδράνεια όλων των κόµβων δεν υπονοεί τερµατισµό Μπορεί να έχουµε καθήκοντα καθοδόν Κατανεµηµένα Συστήµατα 05-27
Κατανεµηµένοςτερµατισµός οµή αλγορίθµου Κάθε έργο έχει µία συγκεκριµένη πίστωση Κάθε καθήκον παίρνει µέρος της πίστωσης του έργου Όταν τερµατίσει το καθήκον η πίστωση επιστρέφεται Έχουµε τερµατισµό όταν ανακτηθεί η πίστωση όλου του έργου Για κάθε καθήκον tέχουµε job(t) είναι το έργο που ανήκει credit(t)είναι η πίστωσή του, της µορφής 2 -i Για κάθε έργο j έχουµε home(j) είναι ο κόµβος που ξεκίνησε recovered(j) είναι η ανακτηθείσα πίστωση Για κάθε κόµβο S έχουµε done S (j)είναι το άθροισµα πιστώσεων Κατανεµηµένα Συστήµατα 05-28
Κατανεµηµένοςτερµατισµός Αλγόριθµος ηµιουργία νέου έργου j µε ένα καθήκον t στον κόµβο H home(j)=h, job(t)=j, credit(t)=1, recovered(j)=0, done H (j)=0 ηµιουργία από το t ενός νέου καθήκοντος t credit(t)=credit(t )=credit(t)/2 Ολοκλήρωση του t στον κόµβο S done S (j)=done S (j)+credit(t) Ολοκλήρωση όλων των καθηκόντων στον S Ο Sστέλνει το done S (j)στον home(j) O Ηθέτει recovered(j)=recovered(j)+done S (j) Αν recovered(j)=1, έχουµε τερµατισµό Ιδιότητες αλγορίθµου Βέλτιστος: ένα µήνυµα ανά κατάσταση αδράνειας Βασίζεται σε αυθαίρετης ακρίβειας δυαδικούς αριθµούς Κατανεµηµένα Συστήµατα 05-29
Κατανεµηµένοςτερµατισµός Αλγόριθµος των Dijkstra και Scholten Οι κόµβοι είναι ενεργοί ή παθητικοί Όπως στον αλγόριθµο του Dijkstra Αρχικά όλοι οι κόµβοι είναι παθητικοί Ο συντονιστής S είναι ενεργητικός Οι υπολογισµοί ξεκινούν από τον S Κατασκευή ενός αντεστραµµένου δένδρου Ρίζα ο συντονιστής S Κάθε κλαδί δείχνει έναν εκκρεµή υπολογισµό Κάθε κόµβος p δείχνει στον πατέρα του (parent(p)) Ένας κόµβος χωρίς πατέρα είναι ελεύθερος Κάθε κόµβος p µετράει τα παιδιά του (children(p)) Ένας κόµβος χωρίς παιδιά είναι φύλλο Κατανεµηµένα Συστήµατα 05-30
Κατανεµηµένοςτερµατισµός Αλγόριθµος Όταν o p<>s λάβει µήνυµα από τον p Αν parent(p)=null Εισάγεται στο δένδρο η ακµή (p,p ) Ο p ενηµερώνει τον p children(p )++ Αν ένα φύλλο p είναι παθητικό και children(p)=0 Για κάθε κόµβο p στον οποίο δείχνει ο p Ο p ενηµερώνει τον p children(p ) Αφαιρούνται όλες οι εξερχόµενες ακµές του p Αν ο S είναι παθητικό φύλλο έχουµε τερµατισµό εν υπάρχουν άλλοι εκκρεµείς υπολογισµοί Κατανεµηµένα Συστήµατα 05-31
Κατανεµηµένοςτερµατισµός Ανίχνευση τερµατισµού µε στιγµιότυπα Έστω ότι η p λαµβάνει µήνυµα στιγµιοτύπου από την p Τότε η p είναι ο προκάτοχος της p Αλγόριθµος Όταν η διεργασία p ολοκληρώσει τη δουλειά της Αν η p έχει λάβει <done> από όλους τουςδιαδόχους της και δεν έχει λάβει κανένα µήνυµα κατάτο χρονικό διάστηµα που κατέγραφε την κατάσταση των καναλιών της Στέλνει <done> στον προκάτοχό της ιαφορετικά Στέλνει <continue> στον προκάτοχό της Αν ο συντονιστής λάβει <done> από όλους τους προκατόχους Ο υπολογισµός έχει τελειώσει Κατανεµηµένα Συστήµατα 05-32