Συνεπής παρατήρηση εκτέλεσης & συνεπείς καθολικές καταστάσεις Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr
Λογικά συνεπείς τομές Τμήμα τοπικής ιστορίας: h i.k {e i.1,e i.2,e i.k } τμήμα της τοπικής εκτέλεσης στην διεργασία P i που συμπεριλαμβάνει μέχρι και το k-οστό γεγονός Τομή: C h 1.k1 h 2.k2 h N.kN ένωση τμημάτων ιστορίας όλων των διεργασιών Λογικά συνεπής τομή: e C, e' e e' C μια συνεπής τομή δεν περιέχει ένα γεγονός χωρίς να περιέχει όλα τα λογικά προηγούμενο του Η έννοια της συνεπούς τομής είναι η «κατανεμημένη επέκταση» της έννοιας του τμήματος τοπικής ιστορίας Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr
P1 e 1.1 e 1.2 e 1.3 e 1.4 P2 e 2.3 m2 e 2.1 e 2.2 m3 P3 e 3.1 e 3.2 e C 3.3 C' τομή C είναι συνεπής τομή C' δεν είναι συνεπής Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr
Συνεπείς τομές και καθολικές καταστάσεις Κάθε τομή C ορίζει / αντιστοιχεί σε μια καθολική κατάσταση S=state(C) του συστήματος η S αποτελείται από τις τοπικές καταστάσεις των διεργασιών μετά από εκτέλεση των γεγονότων που ανήκουν στην τομή C Κάθε συνεπής τομή αντιστοιχεί σε μια συνεπή καθολική κατάσταση: C συνεπής state(c) συνεπής Μια συνεπής κατάσταση αντιστοιχεί σε μια πιθανή πραγματική κατάσταση του συστήματος μπορούμε να υποθέσουμε ότι η κατάσταση όντως ισχύει, χωρίς να αντιφάσκουμε με την λογική σχέση των γεγονότων Αντίστροφα, μια μη-συνεπής κατάσταση σίγουρα δεν υπήρξε αληθής στην πραγματική εκτέλεση αντιφάσκει με την λογική σχέση των γεγονότων Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr
Λογικά συνεπείς εκτελέσεις Εκτέλεση: μια «συνεχής» ακολουθία τομών C 0, C 1, C 2,, όπου C k+1 C k e Κάθε εκτέλεση C 0, C 1, C 2, αντιστοιχεί σε μια ακολουθία S 0, S 1, S 2,, όπου S k =state(c k ) Συνεπής εκτέλεση: μια εκτέλεση C 0, C 1, C 2,, όπου κάθε C k (συνεπώς κάθε S k ) είναι συνεπής Για κάθε κατανεμημένη εκτέλεση υπάρχουν συνήθως πολλές λογικά συνεπείς εκτελέσεις αλλά μόνο μια αντιστοιχεί στην πραγματική εκτέλεση Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
Πλέγμα καθολικών συνεπών καταστάσεων Οι συνεπείς καταστάσεις μιας κατανεμημένης εκτέλεσης μπορεί να διαταχθούν σε ένα πλέγμα (γράφο) Η κατάσταση S=state(C) είναι στο επίπεδο level(s)=l αν η αντίστοιχη τομή C συμπεριλαμβάνει L γεγονότα Οι S=state(C) και S'=state(C'), με level(s)=level(s')+1, συνδέονται μεταξύ τους μέσω μιας ακμής αν C' C e Κάθε συνεπής εκτέλεση C 0, C 1, C 2, αντιστοιχεί σε μια διαδρομή κατά μήκος των ακμών του πλέγματος των συνεπών καθολικών καταστάσεων αρχίζοντας από το επίπεδο 0 και περνώντας μέσα από (μόνο) μια κατάσταση για κάθε επόμενο επίπεδο Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
P1 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 P2 e 2.1 e 2.2 e 2.3 Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 Level 6 Level 7 S32 S43 S33 S23 Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
Παθητική κατασκευή συνεπών εκτελέσεων μέσω ειδοποιήσεων Βλέπε φυσικά/λογικά ρολόγια Κάθε γεγονός λαμβάνει μια χρονοσφραγίδα, και στέλνεται αντίστοιχη ειδοποίηση στον παρατηρητή Ο παρατηρητής λαμβάνει υπόψη του κάθε γεγονός για να σχηματίσει την «επόμενη» καθολική κατάσταση Αν ο παρατηρητής ακολουθήσει τους σωστούς κανόνες (με βάση τις χρονοσφραγίδες) τότε οι καταστάσεις που θα κατασκευάσει είναι εγγυημένα συνεπείς Η εκτέλεση που θα κατασκευάσει θα είναι συνεπής Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
Διανυσματικά ρολόγια P1 P2 1,0 2,0 3,0 4,3 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 e 2.1 e 2.2 e 2.3 2,1 2,2 2,3 S00 S10 S20,S30 S31 S32,S33 S43 στιγμές κατασκευής Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη εκτέλεση Level 6 S33 t Level 7 S43 Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr
Ρολόγια Lamport (υποθέτουμε FIFO) P1 P2 1 2 3 6 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 e 2.1 e 2.2 e 2.3 3 4 5 S00 S10 S20,S30,S31 S32 S33,S43 στιγμές κατασκευής Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr
Level 0 S00 Level 1 Level 2 Level 3 S10 S20 S30 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη εκτέλεση Level 6 S33 Level 7 S43 Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr
Φυσικά ρολόγια (με T max = 5, συγχρονισμένο ρολόι και για τον εξωτερικό παρατηρητή) P1 P2 3 10 15 25 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 11 19 21 e 2.1 e 2.2 e 2.3 S00 S10 S20 S21 S31 S32 S33 S43 στιγμές κατασκευής Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη εκτέλεση Level 6 S33 Level 7 S43 Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr
Ενεργητική κατασκευή στιγμιότυπων Οι διεργασίες εκτελούνται χωρίς να ενημερώνουν τον παρατηρητή για τα τοπικά τους γεγονότα Ο ίδιος ο παρατηρητής αποφασίζει να κατασκευάσει μια κατάσταση/στιγμιότυπο της εκτέλεσης Ζητά τις διεργασίες να στείλουν την κατάσταση τους Συνθέτει τις καταστάσεις σε μια καθολική κατάσταση Απαιτείται ένα πρωτόκολλο που εγγυάται ότι η κατάσταση που θα κατασκευαστεί είναι συνεπής Υποθέτουμε επικοινωνία FIFO Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr
Απλοϊκή προσπάθεια Ο παρατηρητής στέλνει μήνυμα record σε όλες τις διεργασίες, και περιμένει απάντηση Όταν μια διεργασία λαμβάνει το μήνυμα record, καταγράφει άμεσα την τοπική της κατάσταση, και την στέλνει πίσω στον παρατηρητή Ο παρατηρητής περιμένει να λάβει απάντηση από κάθε διεργασία, και κατασκευάζει μια καθολική κατάσταση με βάση τις τοπικές καταστάσεις που έλαβε Πρόβλημα: η κατάσταση που κατασκευάζεται δεν αντιστοιχεί απαραίτητα σε μια συνεπή τομή, άρα δεν είναι εγγυημένα συνεπής Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr
locally recorded state C P1 P2 e 1.1 e 1.2 e 1.3 e 1.4 m1 e 2.1 e 2.2 e 2.3 m2 rec S11 Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S11 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη κατάσταση Level 6 S33 t Level 7 S43 Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr
Ανασταλτικός αλγόριθμος δύο φάσεων Ο παρατηρητής στέλνει μήνυμα record σε όλες τις διεργασίες, και περιμένει απάντηση Όταν μια διεργασία λάβει το μήνυμα record, σταματά να στέλνει μηνύματα, καταγράφει την κατάσταση της, και την στέλνει στον παρατηρητή Όταν ο παρατηρητής λάβει τις καταγεγραμμένες καταστάσεις από όλες τις διεργασίες, στέλνει ένα μήνυμα continue σε όλες τις διεργασίες Όταν μια διεργασία λάβει το μήνυμα continue, συνεχίζει την αποστολή μηνυμάτων Μειονέκτημα: μπλοκάρισμα της επικοινωνίας (και πιθανώς της εκτέλεσης) των διεργασιών, μέχρι να ολοκληρωθεί η διαδικασία συλλογής Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr
Ορθότητα Έστω πως η κατάσταση S i που κατέγραψε η P i δεν περιέχει το γεγονός send(m), ενώ η κατάσταση S j που κατέγραψε η P j περιέχει το γεγονός recv(m) Αφού η S i δεν περιέχει το send(m), τότε η P i έστειλε το m στην P j αφού κατέγραψε την κατάσταση της Για να συνεχίσει η P i την εκτέλεση της, και να στείλει το m, πρέπει προηγουμένως να έλαβε το continue Για να στείλει ο παρατηρητής continue πρέπει να έχει λάβει τις τοπικές καταστάσεις από όλες τις διεργασίες Τότε, η κατάσταση έλαβε ο παρατηρητής από την P j δεν μπορεί να περιέχει το γεγονός recv(m) Άτοπο! Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr
Init: recording = false; On received(<rec>): if (!recording) { recording = true; S = recordstate(); send(observer,<state,myid,s>); } On received(<cont>): if (recording) { recording = false; } app-send(p,msg): while (recording) {} /* block */ send(p,msg); Init(procs): grp = procs; Sglob; record(): Sglob = {}; for-each p in grp { send(p,<rec>); } for-each p in grp { recv(<state,p,sloc>); Sglob = Sglob + Sloc; } for-each p in grp { send(p,<cont>); } Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr
Κατασκευή με φυσικά ρολόγια Οι διεργασίες διαθέτουν συγχρονισμένα ρολόγια και υπάρχει άνω όριο μετάδοσης ενός μηνύματος Tmax Ο παρατηρητής στέλνει μήνυμα record<t> σε όλες τις διεργασίες, το αργότερο τη στιγμή t Tmax Την χρονική στιγμή t, κάθε διεργασία καταγράφει την τοπική της κατάσταση και τη στέλνει στον παρατηρητή Ο παρατηρητής κατασκευάζει την καθολική κατάσταση με βάση τις τοπικές καταστάσεις που λαμβάνει Η καθολική κατάσταση είναι εγγυημένα συνεπής Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr
t P1 P2 e 1.1 e 1.2 e 1.3 e 1.4 m1 e 2.1 e 2.2 e 2.3 m2 rec<t> C S20 Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη κατάσταση Level 6 S33 t Level 7 S43 Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr
Παρατήρηση Η προηγούμενη μέθοδος υποθέτει ότι τα ρολόγια είναι κατάλληλα συγχρονισμένα (με «αρκετή» ακρίβεια) Διαφορετικά: Η P j μπορεί να καταγράψει στην κατάσταση της S j την παραλαβή ενός μηνύματος m που έστειλε η P i αφού κατέγραψε τη δική της κατάσταση S i Η καθολική κατάσταση που θα κατασκευαστεί είναι ασυνεπής Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr
t P1 P2 e 1.1 e 1.2 e 1.3 e 1.4 m1 t m2 e e 2.2 e 2.3 2.1 rec<t> C S11 Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S11 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη κατάσταση Level 6 S33 t Level 7 S43 Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr
Ανοχή για μεγάλη διαφορά συγχρονισμού Ο παρατηρητής στέλνει μήνυμα record<t> Την στιγμή t, κάθε διεργασία καταγράφει την τοπική της κατάσταση, και την στέλνει στον παρατηρητή Επιπλέον: Αφού μια διεργασία καταγράψει την κατάσταση της, στέλνει μήνυμα record σε όλες τις διεργασίες Όταν μια διεργασία λάβει το πρώτο μήνυμα record, (α) αν έχει ήδη καταγράψει την κατάσταση της απλά το αγνοεί, (β) διαφορετικά (άσχετα με την τιμή του ρολογιού της), καταγράφει την κατάσταση της, την στέλνει στον παρατηρητή, και με την σειρά της στέλνει μήνυμα record σε όλες τις διεργασίες Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr
t P1 e 1.1 e 1.2 e 1.3 e 1.4 m1 t m2 P2 rec rec e 2.2 e 2.3 e 2.1 rec<t> C S10 Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr
Level 0 S00 Level 1 S10 Level 2 Level 3 S30 S20 S21 πραγματική εκτέλεση Level 4 S31 S22 Level 5 S32 S23 καταγεγραμμένη κατάσταση Level 6 S33 t Level 7 S43 Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr
Ορθότητα: συνέπεια Έστω ότι η κατάσταση S=state(C) που καταγράφεται είναι ασυνεπής, δηλαδή η τομή C είναι ασυνεπής $ e,e': e' C e e' e C Αφού τα τοπικά γεγονότα καταγράφονται με συνέπεια, η μόνη περίπτωση ασυνέπειας είναι να ισχύει $ e i.x =send(m),e j.y =recv(m): e j.y C e i.x C Για να μην έχει καταγραφεί το e i.x, η P i έστειλε το μήνυμα record στην P j προτού στείλει το m Τότε, λόγω FIFO, το μήνυμα record θα είχε φτάσει στην P j πριν το m, άρα η P j δεν θα είχε καταγράψει στη τοπική της κατάσταση το γεγονός e j.y : άτοπο! Κατανεμημένα Συστήματα 32 lalis@inf.uth.gr
Ορθότητα: τερματισμός Κάθε διεργασία θα λάβει κάποια στιγμή για πρώτη φορά το μήνυμα record (ίσως όχι από τον παρατηρητή) Τελικά, κάθε διεργασία θα καταγράψει την τοπική της κατάσταση, και θα στείλει μήνυμα record στις άλλες Τελικά, κάθε διεργασία θα λάβει ένα μήνυμα record από κάθε άλλη διεργασία, οπότε και θα ολοκληρώσει την διαδικασία καταγραφής Κατανεμημένα Συστήματα 33 lalis@inf.uth.gr
Ο χρόνος δεν παίζει (πλέον) κανένα ρόλο Ο χρόνος έναρξης που περιέχει το μήνυμα record που στέλνει ο παρατηρητής είναι «βοηθητικός» Από τη στιγμή που η πρώτη διεργασία P i καταγράψει την κατάσταση της, «προκαλεί» την καταγραφή της κατάστασης σε όλες τις υπόλοιπες διεργασίες P j Οι υπόλοιπες διεργασίες P j θα καταγράψουν και αυτές την κατάσταση τους, ακόμα και αν το ρολόι τους είναι αργό σε σχέση με το ρολόι της P i, ανεξάρτητα από την ώρα καταγραφής που πρότεινε ο παρατηρητής Η αναφορά στον πραγματικό χρόνο είναι περιττή Αρκεί κάποια διεργασία να αρχίσει την καταγραφή με το που λάβει το μήνυμα του παρατηρητή Κατανεμημένα Συστήματα 34 lalis@inf.uth.gr
Init(procs): grp = procs; recording = false; cnt; On received(<rec,p>): if (!recording) { recording = true; S = recordstate(); send(observer,<state,myid,s>); for-each p' in grp-{myid}: send(p',<rec,myid>); cnt = 0; } cnt++; if (cnt == grp ) { recording = false; } Κατανεμημένα Συστήματα 35 lalis@inf.uth.gr
Αλγόριθμος κατανεμημένου στιγμιότυπου (Chandy & Lamport) Όταν μια διεργασία λάβει το μήνυμα record για πρώτη φορά, καταγράφει την κατάσταση της, στέλνει η ίδια ένα μήνυμα record σε όλες τις διεργασίες, και αρχίζει να καταγράφει τα μηνύματα που λαμβάνει από τις διεργασίες από τις οποίες δεν έχει λάβει ακόμα record Όταν μια διεργασία λάβει record και από τη τελευταία διεργασία, στέλνει την καταγεγραμμένη κατάσταση και τα καταγεγραμμένα μηνύματα στον παρατηρητή Ο παρατηρητής κατασκευάζει μια συνεπή καθολική κατάσταση και βλέπει να τα μηνύματα που βρίσκονταν «καθοδόν» κατά την διαδικασία καταγραφής Κατανεμημένα Συστήματα 36 lalis@inf.uth.gr
Init(procs): grp = procs; recording = false; S; cnt; msgs[]; recmsgs[]; On received(<rec,p>): if (!recording) { recording = true; S = recordstate(); for-each p' in grp-{myid}: send(p',<rec,myid>); cnt = 0; msgs[] = {{},{},,{}}; recmsgs[] = {true,true,,true}; } cnt++; recmsgs[p] = false; if (cnt = grp ) { recording = false; send(observer,<state,myid,s,msgs[]>); } On received(p,<appmsg,m>): if (recmsgs[p]) { msgs[p] = msgs[p] + {<m>}; /* record message */ } app-received(p,<m>); /* forward to application */ Κατανεμημένα Συστήματα 37 lalis@inf.uth.gr
P1 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 P2 e 2.1 e 2.2 e 2.3 rec S20+{m1} Κατανεμημένα Συστήματα 38 lalis@inf.uth.gr
Σχέση καταγεγραμμένης κατάστασης και πραγματικής εκτέλεσης Η καθολική κατάσταση S που κατασκευάζεται δεν αντιστοιχεί απαραίτητα σε μια κατάσταση από την οποία πραγματικά πέρασε το σύστημα Υπάρχει όμως σχέση ανάμεσα στην S και (α) την πραγματική κατάσταση S beg την στιγμή που άρχισε η καταγραφή (η κατασκευή) της S, και (β) την πραγματική κατάσταση S end την στιγμή που τελείωσε η καταγραφή (η κατασκευή) της S Η κατάσταση S είναι μια λογικά πιθανή ενδιάμεση κατάσταση ανάμεσα στις καταστάσεις S beg και S end, δηλαδή υπάρχει συνεπής εκτέλεση που αρχίζει από την S beg, περνάει από την S και καταλήγει στην S end Κατανεμημένα Συστήματα 39 lalis@inf.uth.gr
συνεπείς εκτελέσεις e 0,e 1,e 2, πραγματική εκτέλεση S beg S end e 0 ',e 1 ', e s-1 ' S e s ',e s+1 ', Κατανεμημένα Συστήματα 40 lalis@inf.uth.gr
Ορολογία και παρατηρήσεις S η κατασκευασμένη συνεπής καθολική κατάσταση pre-snap(e): e έλαβε χώρα προτού καταγραφεί η S post-snap(e): e έλαβε χώρα αφού καταγράφηκε η S Έστω Sys η πραγματική εκτέλεση που οδηγεί από την κατάσταση S beg στην κατάσταση S end Αν η S δεν αντιστοιχεί στην πραγματική εκτέλεση $e,e' Sys : pre-snap(e) post-snap(e') e' e S είναι συνεπής e' e e' e e' e e e' Κατανεμημένα Συστήματα 41 lalis@inf.uth.gr
Διαδικασία κατασκευής Βρίσκουμε e,e' Sys : pre-snap(e) post-snap(e') e' e Αφού e e', μπορούμε να φτιάξουμε μια «λογικά ισοδύναμη» εκτέλεση, αντιμεταθέτοντας τα e και e' Καθώς η αντιμετάθεση αφορά λογικά ανεξάρτητα γεγονότα της εκτέλεσης που βρίσκονται μετά την S beg και πριν την S end, η νέα «λογικά ισοδύναμη» εκτέλεση πάλι περνάει από την S beg και οδηγεί στην S end Επαναλαμβάνουμε την διαδικασία μέχρι να φτιάξουμε την λογικά ισοδύναμη εκτέλεση Sys' SysA,SysB, έτσι ώστε e SysA: pre-snap(e) e SysB: post-snap(e) Κατανεμημένα Συστήματα 42 lalis@inf.uth.gr
Sbeg Send P1 e 1.1 e 1.2 e 1.3 e 1.4 m1 m2 S00 P2 rec e 2.1 Sbeg e 2.2 e 2.3 Send Sys e 1.1, e 1.2, e 2.1, e 1.3, e 2.2, e 2.3, e 1.4 pre pre pre post pre post post Sys' e 1.1, e 1.2, e 2.1, e 2.2, e 1.3, e 2.3, e 1.4 S22 pre pre pre pre post post post S10 S20 Sbeg S30 S21 S31 S22 S S32 S23 Send S33 S43 Κατανεμημένα Συστήματα 43 lalis@inf.uth.gr
Αποτίμηση κατηγορημάτων Κατανεμημένα Συστήματα 44 lalis@inf.uth.gr
Αποτίμηση κατηγορημάτων Κατηγόρημα: συνάρτηση που απεικονίζει μια κατάσταση (καταγεγραμμένες τιμές των τοπικών μεταβλητών των διεργασιών) σε true ή false Σταθερό κατηγόρημα: ένα κατηγόρημα που αν ισχύσει τότε θα εξακολουθεί να ισχύει (μόνιμα) για όλη την υπόλοιπη διάρκεια της εκτέλεσης π.χ. ιδιότητες τύπου «τερματισμός υπολογισμού» και «αδιέξοδο» αντιστοιχούν σε σταθερά κατηγορήματα Ασταθές κατηγόρημα: ένα κατηγόρημα το οποίο ίσως ισχύσει προσωρινά, μια ή περισσότερες φορές, κατά τη διάρκεια της εκτέλεσης π.χ. η ιδιότητα «το άθροισμα των μεταβλητών x+y έχει τη τιμή 10» αντιστοιχεί σε ασταθές κατηγόρημα Κατανεμημένα Συστήματα 45 lalis@inf.uth.gr
Καταγεγραμμένη συνεπής κατάσταση και αποτίμηση κατηγορημάτων Η αποτίμηση σταθερών κατηγορημάτων μπορεί να γίνει με βάση συνεπείς καθολικές καταστάσεις S που είναι πιθανές ενδιάμεσες καταστάσεις ανάμεσα στις πραγματικές καταστάσεις Sbeg και Send Αν Φ σταθερό κατηγόρημα, τότε ισχύει Φ(S) Φ(Send) Φ(S) Φ(Sbeg) Αν ένα σταθερό κατηγόρημα είναι αληθές με βάση την συνεπή καθολική κατάσταση S τότε (θα) είναι αληθές (για πάντα) και στη πραγματική εκτέλεση Αυτό δεν ισχύει για τα ασταθή κατηγορήματα! Κατανεμημένα Συστήματα 46 lalis@inf.uth.gr
x:=3 x:=4 x:=5 P1 e 1.1 e 1.2 e 1.3 e 1.4 e 1.5 e 1.6 m1 P2 m2 e 2.1 y:=6 e 2.2 e 2.3 e 2.4 y:=4 e 2.5 y:=2 K1: x=y K2: y-x=2 Κατανεμημένα Συστήματα 47 lalis@inf.uth.gr
S00 S10 S01 S11 S02 Κ2 ισχύει S21 S12 S03 S31 S22 S13 S41 S32 S23 πραγματική εκτέλεση S42 S33 S43 Κ1 ισχύει S53 S44 S63 S54 S45 S64 S55 S65 Κατανεμημένα Συστήματα 48 lalis@inf.uth.gr
Αποτίμηση ασταθών κατηγορημάτων possibly(φ): υπάρχει τουλάχιστον μια συνεπής εκτέλεση που περνάει από τουλάχιστον μια (συνεπή) κατάσταση S όπου ισχύει Φ(S) definitely(φ): κάθε συνεπής εκτέλεση περνάει από τουλάχιστον μια κατάσταση S όπου ισχύει Φ(S) Αν για έστω μια συνεπή καθολική κατάσταση S δείξουμε ότι Φ(S), τότε δείξαμε ότι ισχύει possibly(φ) Για να δείξουμε ότι possibly(φ) πρέπει να δείξουμε ότι για κάθε δυνατή συνεπή κατάσταση S ισχύει Φ(S), ότι δηλαδή καμία συνεπής εκτέλεση δεν περνάει από μια κατάσταση S για την οποία να ισχύει Φ(S) possibly(φ) definitely( Φ) δεν ισχύει το αντίστροφο Κατανεμημένα Συστήματα 49 lalis@inf.uth.gr
Κατασκευή πλέγματος καταστάσεων Βλέπε παθητική παρακολούθηση με ειδοποιήσεις και κατασκευή συνεπών εκτελέσεων Ο παρατηρητής φτιάχνει την αρχική καθολική κατάσταση Sinit (επίπεδο 0), με βάση τις αρχικές καταστάσεις των διεργασιών Με βάση μια δεδομένη κατάσταση S σε επίπεδο L, κατασκευάζονται όλες οι συνεπείς καταστάσεις του επιπέδου L+1 που είναι εφικτές από την S Πιο συγκεκριμένα: αν S S 1 S i S N, και υπάρχει συνεπής κατάσταση S' i S i e, τότε σχημάτισε την κατάσταση S' S 1 S' i S N Κατανεμημένα Συστήματα 50 lalis@inf.uth.gr
Υπολογίζοντας το possibly(φ) Αρχίζοντας από την κατάσταση Sinit, και καθώς λαμβάνει ειδοποιήσεις για τα διάφορα γεγονότα, ο παρακολουθητής κατασκευάζει σταδιακά το πλέγμα των συνεπών καθολικών καταστάσεων Για κάθε συνεπή καθολική κατάσταση S που κατασκευάζεται, ελέγχεται κατά πόσο ισχύει Φ(S) Αν βρεθεί μια συνεπής καθολική κατάσταση S για την οποία να ισχύει Φ(S), τότε ισχύει possibly(φ) και η διαδικασία τερματίζεται Διαφορετικά, με βάση τις καταστάσεις του τρέχοντος επιπέδου, φτιάχνονται όλες οι συνεπείς καταστάσεις του επομένου επιπέδου, και η διαδικασία συνεχίζεται Κατανεμημένα Συστήματα 51 lalis@inf.uth.gr
Init: L=0; states={sinit}; while (1) { /* test states of level L */ if (Ε S in states: Φ(S)) { return(true); } if (end of execution) { return(false); } } /* construct consistent states of level L+1 */ L=L+1; states'=states; states={s': S in states' and level(s')=l+1 and reach(s',s) and consistent(s')}; Κατανεμημένα Συστήματα 52 lalis@inf.uth.gr
Υπολογίζοντας το definitely(φ) Αρχίζοντας από την κατάσταση Sinit, και καθώς λαμβάνει ειδοποιήσεις για τα διάφορα γεγονότα, ο παρακολουθητής κατασκευάζει σταδιακά το πλέγμα των συνεπών καθολικών καταστάσεων Για κάθε συνεπή καθολική κατάσταση S που κατασκευάζεται, ελέγχεται κατά πόσο ισχύει Φ(S), οπότε η συγκεκριμένη κατάσταση διαγράφεται Οι καταστάσεις που απομένουν στο τρέχον επίπεδο χρησιμοποιούνται για να κατασκευαστούν οι καταστάσεις του επόμενου επιπέδου Αν σε κάποιο επίπεδο δεν απομείνει καμία κατάσταση, τότε ισχύει definitely(φ) και η διαδικασία τερματίζεται Κατανεμημένα Συστήματα 53 lalis@inf.uth.gr
Init: L=0; states={sinit}; while (1) { /* test states of level L */ states' = states - {S: S in states and Φ(S)}; if (states' == {}) { return(true); } if (end of execution) { return(false); } } /* construct consistent states of level L+1 */ L=L+1; states={s': S in states' and level(s')=l+1 and reach(s',s) and consistent(s')}; Κατανεμημένα Συστήματα 54 lalis@inf.uth.gr
Βελτιστοποίηση με φυσικά ρολόγια Οι αλγόριθμοι είναι της τάξης Ο(#S), όπου #S το πλήθος των καταστάσεων που δημιουργούνται Το #S είναι της τάξης Ο(k Ν ), όπου k ο μέγιστος αριθμός των τοπικών γεγονότων σε οποιαδήποτε που είναι ανεξάρτητα από άλλα απομακρυσμένα γεγονότα, και Ν ο αριθμός των διεργασιών Το k μπορεί να ελαχιστοποιηθεί αν (μαζί με τις λογικές) χρησιμοποιηθούν και φυσικές χρονοσφραγίδες Ακόμα και αν δύο γεγονότα είναι λογικά ανεξάρτητα μεταξύ τους, μπορεί να διαταχθούν, με βάση τις αντίστοιχες φυσικές χρονοσφραγίδες τους ή/και τον χρόνο παραλαβής τους (αν γνωρίζουμε το Tmax) Κατανεμημένα Συστήματα 55 lalis@inf.uth.gr
x=3 x=4 x=5 P1 e 1.1 e 1.2 e 1.3 e 1.4 e 1.5 e 1.6 m1 P2 e 2.1 y=6 m2 e 2.2 e 2.3 e 2.4 e 2.5 y=4 y=2 Κατανεμημένα Συστήματα 56 lalis@inf.uth.gr
S00 S10 S01 S11 S02 S21 S12 S03 S31 S22 S13 S41 S32 S23 αν γνωρίζουμε ότι το e 2.1 έλαβε χώρα μετά το e 1.1 πραγματική εκτέλεση S42 S33 S43 S53 S44 S63 S54 S45 S64 S55 αν γνωρίζουμε ότι το e 2.4 έλαβε χώρα μετά το e 1.5 S65 Κατανεμημένα Συστήματα 57 lalis@inf.uth.gr
Ακριβής παρατήρηση με φυσικά ρολόγια Έστω ότι οι διεργασίες διαθέτουν φυσικά ρολόγια που είναι συγχρονισμένα με πολύ μεγάλη ακρίβεια Μπορεί να κατασκευαστεί η πραγματική εκτέλεση Μπορούμε να βγάλουμε ακριβή συμπεράσματα αλλά μόνο για την συγκεκριμένη εκτέλεση Δεν μπορεί να κατασκευαστεί το ευρύτερο πλέγμα των συνεπών καθολικών καταστάσεων Δεν μπορούμε να βγάλουμε κάποια συμπεράσματα για εναλλακτικές συνεπείς εκτελέσεις Κατανεμημένα Συστήματα 58 lalis@inf.uth.gr