Πρόλογος... xv. Κεφάλαιο 1: Εισαγωγή... 1



Σχετικά έγγραφα
Καθολικέςκαταστάσεις. Ορισµοί Κατασκευή καθολικών καταστάσεων Παθητική στρατηγική Ενεργητική στρατηγική. Κατανεµηµένα Συστήµατα 04-1

Πρόλογος Εισαγωγή... 21

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Κατανεμημένα Συστήματα με Java. Ενότητα # 2: Διάταξη συμβάντων, καθολικές καταστάσεις Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Η σχέση συνέβη-πριν

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Η σχέση συνέβη-πριν

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Η σχέση συνέβη-πριν

Συνεπείς καθολικές καταστάσεις & επιβεβαίωση ιδιοτήτων. Κατανεμημένα Συστήματα 1

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Συνεπής παρατήρηση εκτέλεσης & συνεπείς καθολικές καταστάσεις. Κατανεμημένα Συστήματα 1


Απαντήσεις. Απάντηση. Απάντηση

Σύστηµα Java RMI. Κατανεµηµένα Συστήµατα 17-1

Αποτίµησηκαθολικού κατηγορήµατος

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

οµήτης παρουσίασης Marzullo και Neiger αλγόριθµος Παράδειγµα Distributed Debugging Εισαγωγικά

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 3: Καθολικά κατηγορήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εντοπισμός τερματισμού. Κατανεμημένα Συστήματα 1

Αιτιώδεις Σχέσεις και Χρονισµός. Παναγιώτα Φατούρου Αρχές Κατανεµηµένου Υπολογισµού

Σύστηµα CORBA. Κατανεµηµένα Συστήµατα 18-1

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

Κατανεµηµένασυστήµατα αρχείων

Κατανεµηµένα Αντικείµενα 16-1

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

7.9 ροµολόγηση. Ερωτήσεις

Αποµακρυσµένη κλήση διαδικασιών

Κατανεμημένα Συστήματα Ι

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 11: Αιτιότητα Διάταξη Γεγονότων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κατανεμημένα Συστήματα Ι

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Ορισµοί Τοπική ιστορία

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Φυσικά και λογικά ρολόγια. Κατανεμημένα Συστήματα 1

Οργάνωση επεξεργαστών και διεργασιών

Κατανεμημένα Συστήματα Ι

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Ορισµοί Τοπική ιστορία

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Παράδειγµα: Προσοµοίωση µιας ουράς FIFO Οι λειτουργίες που υποστηρίζονται από µια ουρά FIFO είναι: [enq(q,x), ack(q)] [deq(q), return(q,x)] όπου x είν

Ανοχή απέναντι σε Σφάλµατα Fault Tolerance

a 1d L(A) = {m 1 a m d a d : m i Z} a 11 a A = M B, B = N A, k=1

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

Μοντέλο Σύγχρονου ικτύου. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Κεφάλαιο 10 ο Υποπρογράµµατα


Ανοχήβλαβών. Κατανεµηµένα Συστήµατα 19-1

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΙΙ ιαφορικός Λογισµός πολλών µεταβλητών. ιαφόριση συναρτήσεων πολλών µεταβλητών

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

3 Αναδροµή και Επαγωγή

Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)

Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα Ι

7.7 Πρωτόκολλο ARP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

ροµολόγηση πακέτων σε δίκτυα υπολογιστών

Προσοµοίωση λειτουργίας επικοινωνίας δεδοµένων (µόντεµ)

KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

09/04/2014 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Μάθηµα: Α ΙΕΞΟ Α. ιδάσκων: Λειτουργικά Συστήµατα Ι Αν. Καθ. Κ. Λαµπρινουδάκης Α ΙΕΞΟ Α

Σύνοψη Μαθήµατος. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

MEΤΑΣΧΗΜΑΤΙΣΜΟΙ ΤΗΣ ΜΟΡΦΗΣ Y= g( X1, X2,..., Xn)

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Κατανεμημένα Συστήματα Ι

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Επεξεργασία Ερωτήσεων

7.6 ιευθυνσιοδότηση. Ερωτήσεις

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 10: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

«Έννοια της διάταξης ΟΡΙΣΜΟΣ α > β α β > 0.»

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Υποστήριξη Φοιτητών

ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Αλγόριθµοι Εκτίµησης Καθυστέρησης και

επιµέλεια Θοδωρής Πιερράτος

Transcript:

Περιεχόµενα Πρόλογος... xv Κεφάλαιο 1: Εισαγωγή... 1 1.1. Συστήµατα πολλών επεξεργαστών... 1 1.1.1. Λειτουργικά συστήµατα πολυεπεξεργαστών... 3 1.1.2. Λειτουργικά συστήµατα δικτύων... 4 1.1.3. Κατανεµηµένα λειτουργικά συστήµατα... 6 1.1.4. Ενδιάµεσο λογισµικό κατανεµηµένων συστηµάτων... 7 1.2. Στόχοι κατανεµηµένων συστηµάτων... 9 1.2.1. ιαφάνεια...11 1.2.2. Κλιµάκωση...13 1.3. Υπηρεσίες κατανεµηµένων συστηµάτων...15 1.3.1. Υπηρεσίες επικοινωνίας...15 1.3.2. Υπηρεσίες εκτέλεσης...16 1.3.3. Υπηρεσίες ονοµασίας...17 1.3.4. Υπηρεσίες αρχείων...17 1.3.5. Υπηρεσίες συναλλαγών...18 1.3.6. Υπηρεσίες αντικειµένων...19 1.3.7. Υπηρεσίες αναπαραγωγής...19 1.3.8. Υπηρεσίες ασφαλείας...20 1.4. Μοντέλο πελάτη-εξυπηρετητή...20 1.4.1. Μοντέλο πελάτη-εξυπηρετητή τριών επιπέδων...23 1.4.2. Υλοποίηση µοντέλου πελάτη-εξυπηρετητή...25 Κεφάλαιο 2: ιάταξη γεγονότων... 27 2.1. Εισαγωγή...27 2.1.1. Σύγχρονα και ασύγχρονα συστήµατα...28 2.1.2. Συγκεντρωτικοί αλγόριθµοι...29 2.1.3. Κατανεµηµένοι αλγόριθµοι...30 2.1.4. Κατανεµηµένοι υπολογισµοί...30 2.2. Συγχρονισµός φυσικών ρολογιών...31 2.2.1. Φυσικά ρολόγια...32 2.2.2. Συντονισµένος Παγκόσµιος Χρόνος...33 v

vi Κατανεµηµένα Συστήµατα µε Java 2.2.3. Αλγόριθµοι συγχρονισµού ρολογιών...35 2.2.3.1. Αλγόριθµος του Cristian...36 2.2.3.2. Αλγόριθµος Berkeley...38 2.2.3.3. Πρωτόκολλο Ώρας ικτύου...39 2.3. Η σχέση συνέβη-πριν...41 2.4. Λογικά ρολόγια...42 2.5. ιανυσµατικά ρολόγια...44 Κεφάλαιο 3: Αµοιβαίος αποκλεισµός... 47 3.1. Εισαγωγή...47 3.2. Συγκεντρωτική προσέγγιση...48 3.3. Κατανεµηµένη προσέγγιση...52 3.3.1. Αλγόριθµος του Lamport...52 3.3.2. Αλγόριθµος των Ricart και Agrawala...56 3.4. Προσέγγιση µε µεταβίβαση σκυτάλης...61 3.4.1. Τοπολογία δακτυλίου: Αλγόριθµος του LeLann...61 3.4.2. Γενική τοπολογία: Αλγόριθµος του Chandy...63 3.4.3. Τοπολογία δέντρου: Αλγόριθµος της Raymond...65 Κεφάλαιο 4: Καθολικές καταστάσεις... 69 4.1. Ορισµοί...69 4.2. Κατασκευή καθολικών καταστάσεων...73 4.2.1. Παθητική στρατηγική: Παρατηρήσεις...73 4.2.1.1. Ρολόγια πραγµατικού χρόνου...75 4.2.1.2. Λογικά ρολόγια...75 4.2.1.3. Αιτιώδης παράδοση...76 4.2.1.4. ιανυσµατικά ρολόγια...78 4.2.2. Ενεργητική στρατηγική: Στιγµιότυπα...79 4.2.2.1. Πρώτο πρωτόκολλο στιγµιότυπων...80 4.2.2.2. εύτερο πρωτόκολλο στιγµιότυπων...81 4.2.2.3. Πρωτόκολλο των Chandy και Lamport...83 4.2.2.4. Ιδιότητες στιγµιότυπων...84 Κεφάλαιο 5: Αποτίµηση καθολικού κατηγορήµατος... 87 5.1. Εισαγωγή...87 5.2. Ιδιότητες καθολικών κατηγορηµάτων...88 5.2.1. Σταθερά κατηγορήµατα...88 5.2.2. Ασταθή κατηγορήµατα...88 5.2.3. Possibly(Φ) και Definitely(Φ)...91

Περιεχόµενα vii 5.2.4. Αποτίµηση Possibly(Φ)...92 5.2.5. Αποτίµηση Definitely(Φ)...93 5.3. Αδιέξοδα...94 5.3.1. Χειρισµός αδιεξόδων...96 5.3.2. Ανίχνευση αδιεξόδων...96 5.3.3. Συγκεντρωτική ανίχνευση αδιεξόδων...98 5.3.4. Ιεραρχική ανίχνευση αδιεξόδων...99 5.3.5. Κατανεµηµένη ανίχνευση αδιεξόδων...102 5.3.5.1. Ο βασισµένος στο γράφο αναµονής αλγόριθµος...102 5.3.5.2. Ο βασισµένος στη διερεύνηση αλγόριθµος...106 5.3.6. Επανόρθωση αδιεξόδων...109 5.4. Κατανεµηµένος τερµατισµός...110 5.4.1. Αλγόριθµος του Dijkstra...111 5.4.2. Αλγόριθµος ανάκτησης πίστωσης...112 5.4.3. Αλγόριθµος των Dijkstra και Scholten...115 5.4.4. Εφαρµογή στιγµιότυπων Ανίχνευση κατανεµηµένου τερµατισµού...116 Κεφάλαιο 6: Εκλογή αρχηγού... 117 6.1. Εισαγωγή...117 6.2. Τοπολογία δέντρου...119 6.3. Τοπολογία δακτυλίου...123 6.3.1. Αλγόριθµος του LeLann...124 6.3.2. Αλγόριθµος των Chang και Roberts...125 6.4. Τοπολογία ισχυρά συνδεδεµένου γράφου...128 Κεφάλαιο 7: Επικοινωνία µέσω δικτύου... 133 7.1. Πρωτόκολλα επικοινωνίας...133 7.2. Μοντέλο αναφοράς OSI...134 7.3. Μοντέλο αναφοράς TCP/IP...138 7.4. Υποδοχές επικοινωνίας...140 7.5. Επικοινωνία µε εξυπηρετητές...141 Κεφάλαιο 8: ικτύωση στην Java... 143 8.1. Εισαγωγή...143 8.2. ιευθύνσεις: Τάξη InetAddress...143 8.3. Υποδοχές ρεύµατος: Τάξη ServerSocket...145 8.4. Σειριακοποίηση αντικειµένων...150 8.5. Υποδοχές δεδοµενογραφηµάτων: Τάξη DatagramSocket...152

viii Κατανεµηµένα Συστήµατα µε Java 8.6. Υποδοχές πολυεκποµπής: Τάξη MulticastSocket...162 8.7. Εντοπιστές Παγκοσµίων Πόρων: Τάξη URL...164 Κεφάλαιο 9: Κλήσεις αποµακρυσµένων διαδικασιών... 167 9.1. Τοπικές και αποµακρυσµένες κλήσεις...167 9.2. Αναπαράσταση παραµέτρων...170 9.2.1. Παράµετροι αναφοράς...172 9.3. Πρωτόκολλα επικοινωνίας...173 9.4. Αντιγραφή µηνυµάτων...176 9.5. Προδιαγραφές διαδικασιών...178 9.6. Κλήση αποµακρυσµένων διαδικασιών στο DCE...179 Κεφάλαιο 10: Νήµατα... 183 10.1. Εισαγωγή...183 10.2. Υλοποίηση νηµάτων...186 10.3. Ελαφριές διεργασίες...188 10.4. Νήµατα και κατανεµηµένα συστήµατα...190 Κεφάλαιο 11: Νήµατα στην Java... 193 11.1. Εισαγωγή...193 11.2. Τάξη Thread...195 11.3. Συγχρονισµός νηµάτων...198 11.3.1. Συγχρονισµένες εντολές...204 11.4. Επικοινωνία νηµάτων...205 11.5. Εκτελέσιµες τάξεις...229 11.6. Νήµατα δαίµονες...234 11.7. Οµάδες νηµάτων...235 Κεφάλαιο 12: Οργάνωση επεξεργαστών και διεργασιών... 241 12.1. Οργάνωση επεξεργαστών...241 12.1.1. Μοντέλο δεξαµενής επεξεργαστών...241 12.1.2. Μοντέλο σταθµών εργασίας...243 12.1.3. Υβριδικό µοντέλο...245 12.2. Πολιτικές καταχώρισης επεξεργαστών...245 12.2.1. Προσέγγιση στάθµισης φόρτου...249 12.2.1.1. Πολιτικές εκτίµησης φόρτου...250 12.2.1.2. Πολιτικές µεταφοράς διεργασιών...251 12.2.1.3. Πολιτικές επιλογής...253 12.2.1.4. Πολιτικές τοποθέτησης...253

Περιεχόµενα ix 12.2.1.5. Πολιτικές ανταλλαγής πληροφοριών κατάστασης...256 12.2.1.6. Πολιτικές εκχώρησης προτεραιοτήτων...257 12.2.1.7. Πολιτικές περιορισµού µετανάστευσης...258 12.2.2. Προσέγγιση (κατα)µερισµού φόρτου...259 12.2.2.1. Πολιτικές εκτίµησης φόρτου (load estimation policies)...259 12.2.2.2. Πολιτικές µεταφοράς διεργασιών...260 12.2.2.3. Πολιτικές τοποθέτησης...260 12.2.2.4. Πολιτικές ανταλλαγής πληροφοριών κατάστασης...263 12.3. Μετανάστευση κώδικα...263 12.3.1. Είδη µετανάστευσης...264 12.3.2. έσµευση πόρων...266 12.3.3. Ετερογενή συστήµατα...269 12.3.4. Μετανάστευση κώδικα στην Agent TCL...271 Κεφάλαιο 13: Κατανεµηµένα συστήµατα ονοµασίας... 275 13.1. Ονοµασία οντοτήτων...275 13.1.1. Χώροι ονοµάτων...277 13.1.2. Ανάλυση ονοµάτων...279 13.1.3. Συγχώνευση χώρων ονοµάτων...281 13.2. Υπηρεσίες ονοµασίας...284 13.2.1. Υπηρεσία ονοµασίας DNS...287 13.3. Υπηρεσίες ευρετηρίων και X.500...293 13.3.1. Υπηρεσία ευρετηρίων Active Directory...296 13.3.2. Υπηρεσία ευρετηρίων Novell Directory Services...299 13.4. Υπηρεσίες εντοπισµού...302 13.4.1. Πανεκποµπή και πολυεκποµπή...305 13.4.2. είκτες προώθησης...306 13.4.3. Οικιακή τοποθεσία...307 Κεφάλαιο 14: Κατανεµηµένα συστήµατα αρχείων... 311 14.1. Θέµατα σχεδίασης...311 14.1.1. ιεπαφή υπηρεσίας αρχείων...313 14.1.2. ιεπαφή υπηρεσίας ευρετηρίων...316 14.1.3. Ονόµατα και αναγνωριστικά αρχείων...318 14.1.4. Οργάνωση εξυπηρετητών...320 14.1.5. Σηµασιολογία (κατα)µερισµού αρχείων...323 14.1.6. Ενταµίευση αποµακρυσµένων αρχείων...325 14.1.7. Συνέπεια συστήµατος αρχείων...328

x Κατανεµηµένα Συστήµατα µε Java 14.2. Κατανεµηµένο σύστηµα αρχείων NFS...331 14.2.1. ιεπαφή συστήµατος NFS...334 14.2.2. Ενταµίευση αρχείων στο σύστηµα NFS...338 14.3. Κατανεµηµένο σύστηµα αρχείων AFS...339 14.3.1. ιεπαφή συστήµατος AFS...341 14.3.2. Ενταµίευση αρχείων στο σύστηµα AFS...344 Κεφάλαιο 15: Ατοµικές συναλλαγές... 347 15.1. Εισαγωγή...347 15.2. Κατηγορίες συναλλαγών...349 15.3. Έλεγχος Συνδροµής...351 15.4. Μέθοδοι Ελέγχου Συνδροµής...355 15.4.1. Κλείδωµα...356 15.4.2. Αισιόδοξος έλεγχος συνδροµής...360 15.4.3. ιάταξη χρονοσφραγίδων...365 15.5. Κατανεµηµένες Συναλλαγές...369 Κεφάλαιο 16: Κατανεµηµένα αντικείµενα... 375 16.1. Εισαγωγή...375 16.1.1. Αποµακρυσµένα αντικείµενα...377 16.1.2. Αναφορές προς αντικείµενα...379 16.2. Εξυπηρετητές αντικειµένων...382 16.2.1. Προσαρµογείς αντικειµένων...384 16.2.2. Τάξεις-υπηρέτες και εργαστηριακές µέθοδοι...385 16.3. Εκκαθάριση αντικειµένων...386 16.3.1. Μετρητές και λίστες αναφορών...388 16.3.2. Κατανεµηµένη αποκοµιδή απορριµµάτων...394 Κεφάλαιο 17: Σύστηµα Java RMI... 399 17.1. οµή συστήµατος...399 17.1.1. Μεταβίβαση παραµέτρων...401 17.1.2. Μοντέλα επικοινωνίας...402 17.1.3. Αναφορές αντικειµένων...403 17.1.4. Ονόµατα αντικειµένων...404 17.1.5. ιαχείριση αντικειµένων...407 17.2. Υλοποίηση συστηµάτων Java RMI...411 17.2.1.1. Συγγραφή της αποµακρυσµένης διεπαφής...411 17.2.1.2. Υλοποίηση της αποµακρυσµένης διεπαφής...411

Περιεχόµενα xi 17.2.1.3. Παραγωγή κορµού πελάτη και σκελετού εξυπηρετητή...413 17.2.1.4. Υλοποίηση προγραµµάτων εξυπηρετητή και πελάτη...414 Κεφάλαιο 18: Σύστηµα CORBA... 425 18.1. οµή συστήµατος...425 18.1.1. Μεταβίβαση παραµέτρων...427 18.1.2. Μοντέλα επικοινωνίας...430 18.1.3. υναµικές κλήσεις...434 18.1.4. Αναφορές αντικειµένων...435 18.1.5. Ονόµατα αντικειµένων...436 18.1.6. ιαχείριση αντικειµένων...439 18.2. Υλοποίηση συστηµάτων CORBA...440 18.2.1. Υλοποίηση µε Java...442 18.2.1.1. Συγγραφή της αποµακρυσµένης διεπαφής...443 18.2.1.2. Παραγωγή κορµού πελάτη και σκελετού εξυπηρετητή...443 18.2.1.3. Υλοποίηση προγράµµατος εξυπηρετητή...445 18.2.1.4. Υλοποίηση προγράµµατος πελάτη...448 18.2.1.5. Μεταγλώττιση και εκτέλεση της εφαρµογής...450 Κεφάλαιο 19: Ανοχή βλαβών... 451 19.1. Εισαγωγή...451 19.2. Πλεονασµός...452 19.3. Ενεργή παραγωγή αντιγράφων...454 19.4. Παθητική παραγωγή αντιγράφων...457 19.4.1. Ένα σύγχρονο πρωτόκολλο...459 19.4.2. Ένα ασύγχρονο πρωτόκολλο...460 19.5. Επανόρθωση...462 19.5.1. Προς τα πίσω επανόρθωση...463 19.5.2. Προς τα εµπρός επανόρθωση...464 19.6. Κατανεµηµένη συµφωνία...465 19.6.1. Πρόβληµα των δύο στρατών...467 19.6.2. Πρόβληµα των Βυζαντινών στρατηγών...469 19.6.3. Αλγόριθµος του Lamport...470

xii Κατανεµηµένα Συστήµατα µε Java Κεφάλαιο 20: Θέµατα Ασφαλείας... 475 20.1. Εισαγωγή...475 20.1.1. Αφηρηµένη τάξη Provider...477 20.2. Λίστες Ελέγχου Προσπέλασης...478 20.2.1. ιεπαφή Principal...478 20.2.2. ιεπαφή Group...479 20.2.3. ιεπαφή Permission...479 20.2.4. ιεπαφή AclEntry...480 20.2.5. ιεπαφή Owner...481 20.2.6. ιεπαφή Acl...482 20.3. Συνόψεις µηνυµάτων...490 20.3.1. Αφηρηµένη τάξη MessageDigest...491 20.4. Κρυπτογραφία...495 20.4.1. ιεπαφή Key...497 20.4.2. Κρυπτογραφία µυστικού κλειδιού...497 20.4.2.1. Τάξη KeyGenerator...498 20.4.3. Κρυπτογραφία δηµοσίου κλειδιού...499 20.4.3.1. Τάξη KeyPair...501 20.4.3.2. Τάξη KeyPairGenerator...501 20.4.4. Τάξη Cipher...502 20.4.5. Ψηφιακές υπογραφές...506 20.4.6. Αφηρηµένη τάξη Signature...508 20.5. Ψηφιακά πιστοποιητικά...513 20.5.1. Αφηρηµένη τάξη Certificate...515 20.5.2. Εργαλείο keytool...516 20.5.3. Τάξη KeyStore...518 Προγράµµατα 20...522 Παράρτηµα Α: Επικεφαλίδες µεθόδων της Java... 523 Μέθοδοι της τάξης InetAddress...523 Μέθοδοι της τάξης ServerSocket...523 Μέθοδοι της τάξης Socket...523 Μέθοδοι της τάξης DatagramPacket...524 Μέθοδοι της τάξης DatagramSocket...524 Μέθοδοι της τάξης MulticastSocket...524 Μέθοδοι της τάξης URL...525 Μέθοδοι της τάξης Thread...525 Μέθοδοι της τάξης Object...526 Μέθοδοι της τάξης ThreadGroup...526

Περιεχόµενα xiii Μέθοδοι της διεπαφής Naming...527 Μέθοδοι της αφηρηµένης τάξης Provider...527 Μέθοδοι της διεπαφής Principal...528 Μέθοδοι της τάξης PrincipalImpl...528 Μέθοδοι της διεπαφής Group...528 Μέθοδοι της τάξης GroupImpl...528 Μέθοδοι της τάξης PermissionImpl...528 Μέθοδοι της διεπαφής AclEntry...528 Μέθοδοι της τάξης AclEntryImpl...529 Μέθοδοι της διεπαφής Owner...529 Μέθοδοι της τάξης OwnerImpl...529 Μέθοδοι της διεπαφής Acl...529 Μέθοδοι της τάξης AclImpl...529 Μέθοδοι της αφηρηµένης τάξης MessageDigest...530 Μέθοδοι της διεπαφής Key...530 Μέθοδοι της τάξης KeyGenerator...530 Μέθοδοι της τάξης KeyPair...531 Μέθοδοι της τάξης KeyPairGenerator...531 Μέθοδοι της τάξης Cipher...531 Μέθοδοι της αφηρηµένης τάξης Signature...532 Μέθοδοι της αφηρηµένης τάξης Certificate...532 Μέθοδοι της τάξης KeyStore...533 Βιβλιογραφία... 535 Ευρετήριο... 537

Κεφάλαιο 4: Καθολικές καταστάσεις 4.1. Ορισµοί Η τοπική ιστορία (local history) της διεργασίας p i συµβολίζεται µε h i, και αποτελεί την ακολουθία των γεγονότων που έχουν εκτελεστεί στη διεργασία, π.χ. 1 2 3 4 5 6 µε βάση το Σχήµα 2.1 h 1 = e1e 1e1e 1e1e 1. Προφανώς η τοπική ιστορία κάθε διεργασίας είναι χρονικά πλήρως διατεταγµένη. Η καθολική ιστορία (global history) H ενός κατανεµηµένου υπολογισµού ορίζεται ως η ένωση των τοπικών ιστοριών όλων των διεργασιών που συµµετέχουν σε αυτόν, δηλαδή H = h1... hn. Το σύνολο αυτό είναι µόνο µερικώς διατεταγ- µένο. Στο Κεφάλαιο 2 είδαµε ορισµένες µεθόδους διάταξης των στοιχείων του. Η τοπική κατάσταση (local state) της διεργασίας p i αµέσως µετά την εκτέλεση του γεγονότος e k i συµβολίζεται µε σ k i. Με σ 0 i συµβολίζουµε την αρχική κατάσταση της διεργασίας p i, πριν την εκτέλεση οποιουδήποτε γεγονότος. Γενικά η τοπική κατάσταση µίας διεργασίας περιέχει τις τιµές όλων των τοπικών µεταβλητών της. Μπορεί επίσης να περιέχει και αντικείµενα που πιθανώς επηρεάζει στο τοπικό της λειτουργικό σύστηµα, όπως αρχεία. Η καθολική κατάσταση (global state) Σ ενός κατανεµηµένου υπολογισµού είναι η ένωση των τοπικών καταστάσεων των επιµέρους διεργασιών, δηλαδή είναι ένα n-διάστατο διάνυσµα των τοπικών καταστάσεων Σ=( σ 1, σ 2,..., σ n ) µε µία τοπική κατάσταση για κάθε διεργασία. Μια τοµή (cut) C ενός κατανεµηµένου υπολογισµού είναι ένα υποσύνολο της καθολικής ιστορίας Η που αποτελείται από c i 0 αρχικά γεγονότα από κάθε διεργασία p i, δηλαδή C = h c 1 1... h c. Μια τοµή C προσδιορίζεται µέσω του δια- n n c1 cn νύσµατος ( c 1,, c n ). Το σύνολο των τελευταίων γεγονότων ( e 1,..., e n ) που περιλαµβάνονται στην τοµή ( c 1,, c n ) καλείται σύνορο της τοµής (cut frontier). Προφανώς η τοµή που προσδιορίζεται από το σύνολο ( c 1,, c n ) αντιστοιχεί c1 cn στην καθολική κατάσταση ( σ 1,..., σ n ). Αν και κάθε τοµή ενός κατανεµηµένου υπολογισµού αντιστοιχεί σε µία καθολική κατάσταση, µόνο ορισµένες από τις τοµές αντιστοιχούν σε καθολικές καταστάσεις που θα µπορούσαν να συµβούν κατά τη διάρκεια µίας εκτέλεσης. Στο Σχήµα 2.1 φαίνονται δύο τοµές C και C ' οι οποίες αντιστοιχούν στα διανύσµατα 69

70 Κατανεµηµένα Συστήµατα µε Java (5, 2, 4) και (3, 2, 6), αντίστοιχα. Η τοµή C αναπαριστά µία εφικτή καθολική κατάσταση. Από την άλλη πλευρά, η τοµή C ' αντιστοιχεί σε µία καθολική κατάσταση που ποτέ δε θα µπορούσε να συµβεί από τη στιγµή που η διεργασία p 3 λαµβάνει ένα µήνυµα από την p 1 το οποίο η p 1 δεν έχει στείλει µέσα στα χρονικά όρια που ορίζονται από την τοµή C '. Μία τοµή C είναι συνεπής, αν για όλα τα γεγονότα e και e ' ισχύει ότι ( e C) (e' e) e' C. Αντίστοιχα µία καθολική κατάσταση είναι συνεπής (consistent), όταν αντιστοιχεί σε µία συνεπή τοµή. Ο ορισµός αυτός ανταποκρίνεται πλήρως στην ιδέα ότι οι συνεπείς καθολικές καταστάσεις είναι εκείνες που µπορούν να συµβούν στην πραγ- µατικότητα κατά την εκτέλεση ενός κατανεµηµένου υπολογισµού. Είναι εύκολο να προσδιορίσουµε πότε µία τοµή είναι συνεπής: αν όλα τα βέλη που κόβουν την τοµή ξεκινούν από τα αριστερά και καταλήγουν στα δεξιά της τοµής, τότε η τοµή είναι συνεπής, αλλιώς είναι aσυνεπής (inconsistent). Με βάση τον ορισµό αυτόν, η τοµή C του Σχήµατος 2.1 είναι συνεπής, ενώ η C ' είναι ασυνεπής. Μία εκτέλεση ενός κατανεµηµένου υπολογισµού(run) είναι µία ολική διάταξη R όλων των γεγονότων του καθολικού ιστορικού H η οποία είναι συνεπής µε τη σχέση συνέβη-πριν (βλ. Κεφ 2.3). Ένα παράδειγµα εκτέλεσης, µε βάση το Σχήµα 2.1, είναι η εξής: R =e 1 1 2 1 3 4 2 2 5 3 4 5 6 3 6 3e1e 3e2e 3e3e 2e1e 3e1e 1e1e 3e2e 1 Είναι προφανές ότι µία εκτέλεση R = e e... έχει ως αποτέλεσµα µία ακολουθία καθολικών καταστάσεων Σ 0 Σ Σ... όπου το Σ 0 αντιστοιχεί στην αρχική καθο- 1 2 0 0 λική κατάσταση ( σ 1,..., σ n ). Θα χρησιµοποιήσουµε τον όρο εκτέλεση για να α- ναφερθούµε τόσο στις ακολουθίες των γεγονότων, όσο και στην ακολουθία των καθολικών καταστάσεων που προκύπτουν. i Κάθε καθολική κατάσταση Σ της εκτέλεσης προέρχεται από την προηγούµενη i 1 καθολική κατάσταση Σ µε την εκτέλεση ενός γεγονότος e i. Για δύο τέτοιες i 1 καθολικές καταστάσεις της εκτέλεσης R λέµε ότι η Σ i οδηγεί στη Σ στην R. Ε- πίσης θα λέµε ότι η Σ ' είναι προσπελάσιµη από τη Σ, αν και µόνο αν Σ R Σ'. Από τη σχέση αυτή θα παραλείπουµε το χαρακτήρα R για να δηλώσουµε ότι υπάρχει κάποια εκτέλεση στην οποία η Σ ' είναι προσπελάσιµη από τη Σ. 1 2

Κεφάλαιο 4: Καθολικές καταστάσεις 71 p 1 e 1 1 e 2 e 3 e 4 e 5 e 6 1 1 1 1 1 p 2 e 2 1 e 2 2 e 2 3 e 2 4 e 2 5 Σχήµα 4.1. ιάγραµµα χώρου-χρόνου κατανεµηµένου υπολογισµού. Το σύνολο όλων των συνεπών καθολικών καταστάσεων ενός υπολογισµού µαζί µε τη σχέση R ορίζει ένα πλέγµα (lattice). Το πλέγµα αποτελείται από n ορθογώνιους άξονες µε έναν άξονα για κάθε µία διεργασία. Θεωρούµε ως Σ την k1... kn k1 kn καθολική κατάσταση ( σ 1,..., σ n ) και ως k 1 + + k n το επίπεδο του πλέγµατος. Το Σχήµα 4.1 αναπαριστά έναν κατανεµηµένο υπολογισµό δύο διεργασιών και το Σχήµα 4.2 το αντίστοιχο πλέγµα των καθολικών καταστάσεων. Παρατηρείστε ότι όλες οι καθολικές καταστάσεις είναι προσπελάσιµες από την αρχική καθολική κατάσταση Σ. Ένα µονοπάτι στο πλέγµα είναι µία ακολουθία καθολικών καταστά- 00 σεων αυξανόµενου επιπέδου, όπου το επίπεδο µεταξύ δύο διαδοχικών στοιχείων διαφέρει κατά ένα. Κάθε ένα τέτοιο µονοπάτι αντιστοιχεί και σε µία εκτέλεση του υπολογισµού. Για το παράδειγµα του Σχήµατος 4.1, µία πιθανή εκτέλεση µπορεί να περνάει µέσω της ακολουθίας των καθολικών καταστάσεων: Σ 00 01 11 21 31 32 42 43 44 54 64 65 Σ Σ Σ Σ Σ Σ η οποία είναι σηµειωµένη στο Σχήµα 4.2. Σ Σ Σ Σ Σ

72 Κατανεµηµένα Συστήµατα µε Java Σ 00 Σ 10 Σ 01 Σ 11 Σ 02 Σ 21 Σ 12 Σ 03 Σ 31 Σ 22 Σ 13 Σ 04 Σ 41 Σ 32 Σ 23 Σ 14 Σ 42 Σ 33 Σ 24 Σ 43 Σ 34 Σ 53 Σ 44 Σ 35 Σ 63 Σ 54 Σ 45 Σ 64 Σ 55 Σ 65 Σχήµα 4.2. Πλέγµα που αντιστοιχεί στο Σχήµα 4.1.

Κεφάλαιο 4: Καθολικές καταστάσεις 73 4.2. Κατασκευή καθολικών καταστάσεων Αν µια διεργασία του συστήµατος θέλει να γνωρίζει την καθολική κατάστασή του, τότε θα πρέπει να συλλέξει τις τοπικές καταστάσεις όλων των άλλων διεργασιών. Στα ασύγχρονα κατανεµηµένα συστήµατα που χαρακτηρίζονται από αβεβαιότητες στις καθυστερήσεις των µηνυµάτων και στις ταχύτητες των διεργασιών, η κατασκευή καθολικών καταστάσεων δεν είναι καθόλου τετριµµένη. Αντίθετα η κατασκευή καθολικών καταστάσεων που να έχουν χρησιµότητα ή ακόµη και νόη- µα είναι θεµελιώδες πρόβληµα. Αυτό οφείλεται στο ότι µια καθολική κατάσταση που δεν κατασκευάζεται προσεκτικά µπορεί να αντικατοπτρίζει µια παρελθούσα κατάσταση του συστήµατος και να είναι ξεπερασµένη (obsolete), ή να µην περιέχει τις τοπικές καταστάσεις όλων των διεργασιών και να είναι ατελής (incomplete) ή να είναι ασυνεπής (inconsistent). Η συνέπεια µιας καθολικής κατάστασης είναι καθοριστική, και θα ασχοληθούµε αναλυτικά µε αυτή στη συνέχεια. Γενικά στο σηµείο αυτό µπορούµε να ορίσουµε µια καθολική κατάσταση ως ασυνεπή όταν ποτέ δε θα µπορούσε να είχε κατασκευαστεί από έναν εξωτερικό παρατηρητή (observer) του συστήµατος. Μία ακόµα δυσκολία στα κατανεµηµένα συστήµατα εντοπίζεται, όταν διαφορετικές διεργασίες κατασκευάζουν ξεχωριστά καθολικές καταστάσεις. Οι διαφορετικές καθυστερήσεις µηνυµάτων µπορούν να οδηγήσουν τις διεργασίες στην κατασκευή διαφορετικών καθολικών καταστάσεων για τον ίδιο υπολογισµό. Στα παρακάτω θα εξετάσουµε δύο διαφορετικές στρατηγικές για την κατασκευή καθολικών καταστάσεων. Και στις δύο περιπτώσεις θα υποθέσουµε ότι µία διεργασία-παρακολουθητής (monitor process), έστω η p 0, κατασκευάζει την καθολική κατάσταση του συστήµατος. Στην πρώτη στρατηγική η διεργασίαπαρακολουθητής παρατηρεί παθητικά το σύστηµα για την κατασκευή της καθολικής κατάστασης. Στην εναλλακτική στρατηγική η διεργασία-παρακολουθητής ρωτάει το υπόλοιπο σύστηµα µε στόχο την κατασκευή της καθολικής κατάστασης λειτουργώντας ενεργητικά. 4.2.1. Παθητική στρατηγική: Παρατηρήσεις Σε όλο το υποκεφάλαιο αυτό θα θεωρήσουµε ότι η p 0 ακολουθεί µία παθητική στρατηγική. Αυτό σηµαίνει ότι δε στέλνει η ίδια κάποιο µήνυµα προς τις υπόλοιπες διεργασίες, αλλά οι διεργασίες, µόλις εκτελούν ένα γεγονός, ειδοποιούν την p 0 στέλνοντάς της ένα µήνυµα που περιγράφει το γεγονός. Με τον τρόπο αυτόν η διεργασία-παρακολουθητής κατασκευάζει µία παρατήρηση (observation) του συγκε-

74 Κατανεµηµένα Συστήµατα µε Java κριµένου κατανεµηµένου υπολογισµού, η οποία είναι η ακολουθία των γεγονότων µε τη σειρά µε την οποία τα αντίστοιχα µηνύµατα έφτασαν στην p 0. Υπάρχουν ορισµένες ιδιότητες των παρατηρήσεων. Πρώτον εξαιτίας της απόκλισης των καθυστερήσεων που συµβαίνουν όταν οι διεργασίες γνωστοποιούν την κατάστασή τους στην p 0, δυο διαφορετικές διεργασίες-επόπτες είναι δυνατόν να κατασκευάσουν δυο διαφορετικές παρατηρήσεις για την ίδια εκτέλεση. εύτερον µία παρατήρηση µπορεί να µην αντιστοιχεί σε κάποια εκτέλεση. Για παράδειγµα θεωρήστε την εξής εκτέλεση του υπολογισµού του Σχήµατος 2.1: 1 1 2 1 3 4 2 2 5 3 4 5 6 3 6 3 1 3 2 3 3 2 1 3 1 1 1 3 2e1 R = e e e e e e e e e e e e e e. O O O Όλες οι παρακάτω είναι πιθανές παρατηρήσεις της R: 1 = 2 = 3 = 1 1 1 2 4 2 2 3 3 4 5 2 1 3 3 3 1 2 3 1 1 3 e e e e e e e e e e e... 1 1 1 2 2 3 3 4 2 5 6 1 3 2 3 1 1 3 3 2 3 3 e e e e e e e e e e e... 1 1 1 2 2 3 3 4 4 2 5 3 2 1 1 3 3 1 3 1 2 1 e e e e e e e e e e e... Η παρατήρηση O 1 δεν αντιστοιχεί σε εκτέλεση, αφού η διάταξη των γεγονότων 4 της p 3 παραβιάζει τη διάταξή τους στο τοπικό ιστορικό της διεργασίας (το e 3 εµφανίζεται πριν από το e 3 ). Το ίδιο ισχύει και για την παρατήρηση O 2 (το e 1 που είναι 3 3 3 γεγονός receive εµφανίζεται πριν από το αντίστοιχο γεγονός send e 3 ). Στην περίπτωση αυτήν κατασκευάζεται (και) η καθολική κατάσταση ( σ 1, σ 2, σ 3 ), η οποία 3 2 6 είναι ακριβώς η καθολική κατάσταση που αντιστοιχεί στην (ασυνεπή) τοµή C ' του Σχήµατος 2.1. Τέλος η O 3 είναι µία συνεπής παρατήρηση, από την οποία κατασκευάζεται (και) η καθολική κατάσταση που αντιστοιχεί στην τοµή C του Σχήµατος 2.1. Επειδή σε ένα ασύγχρονο σύστηµα τα µηνύµατα ενδεχοµένως να αναδιατάσσονται από τα κανάλια επικοινωνίας, είναι πιθανό να καταλήξουµε σε ανεπιθύµητες παρατηρήσεις, όπως είναι η O 1. Για το λόγο αυτόν θα ορίσουµε έναν κανόνα παράδοσης (delivery rule) για να αποφασίζουµε πότε τα µηνύµατα που ελήφθησαν θα παραδίνονται στη διεργασία. Στο σηµείο αυτό πρέπει να διαχωρίσουµε τις έννοιες της λήψης (receipt) και της παράδοσης (delivery). Η επικοινωνία ανάµεσα στη διεργασία p i και p j ικανοποιεί την παράδοση FIFO), αν για όλα τα µηνύµατα m και m ': Παράδοση FIFO: send (m) send (m') deliver(m) deliver(m') i i j Η παράδοση FIFO εµποδίζει ένα µήνυµα που εστάλη από µία διεργασία να παραδοθεί πριν από κάποιο άλλο που εστάλη πριν από αυτό από την ίδια διεργασία, εξασφαλίζοντας έτσι ότι η παρατήρηση που θα κατασκευαστεί δε θα παραβιάζει j

Κεφάλαιο 4: Καθολικές καταστάσεις 75 τουλάχιστον τη διάταξη των γεγονότων στο τοπικό ιστορικό κάθε διεργασίας. Παρόλο που σε ένα ασύγχρονο σύστηµα υπάρχουν κανάλια επικοινωνίας που δεν ακολουθούν τη λογική FIFO, ωστόσο είναι δυνατόν η παράδοση να γίνει µε τη λογική FIFO, µεταφέροντας σε κάθε µήνυµα, εκτός από το περιεχόµενο του µηνύµατος, και έναν αριθµό ακολουθίας (sequence number). Η παράδοση FIFO θα ενεργοποιηθεί στη διεργασία η οποία θα λάβει τα µηνύµατα, προκειµένου η σειρά µε την οποία θα ληφθούν τα µηνύµατα να συµπίπτει µε τη σειρά µε την οποία εστάλησαν. Η παράδοση FIFO είναι ικανή να εγγυηθεί ότι οι παρατηρήσεις δεν παραβιάζουν το τοπικό ιστορικό των διεργασιών, αλλά δεν εγγυάται ότι είναι συνεπείς. Για το λόγο αυτόν απαιτείται επιπλέον κάποιος µηχανισµός που να εξασφαλίζει τη συνέπειά τους. 4.2.1.1. Ρολόγια πραγµατικού χρόνου Αρχικά υποθέτουµε ότι: όλες οι διεργασίες έχουν πρόσβαση σε ένα καθολικό ρολόι πραγµατικού χρόνου (global real-time clock) και όλες οι καθυστερήσεις των µηνυµάτων έχουν ένα άνω φράγµα, έστω δ. Με βάση τις υποθέσεις αυτές, το σύστηµα στο οποίο αναφερόµαστε είναι σύγχρονο (synchronous). Ο κανόνας παράδοσης που εφαρµόζει, Στην περίπτωση αυτήν η p 0 είναι ο εξής (θα τον ονοµάζουµε ΚΠ1): ΚΠ1: Τη χρονική στιγµή t, παράδωσε όλα τα µηνύµατα που έχεις λάβει µε σφραγίδες χρόνου µέχρι t-δ σε αύξουσα διάταξη σφραγίδων χρόνου. Μία παρατήρηση Ο που κατασκευάζεται από την p 0 σύµφωνα µε τον ΚΠ1 είναι συνεπής. Αυτό ισχύει, διότι το ρολόι πραγµατικού χρόνου ικανοποιεί τη συνθήκη του ρολογιού. Επιπλέον παραδίδοντας µόνο τα µηνύµατα που έχουν τιµή σφραγίδων χρόνου µικρότερη από t δ εξασφαλίζουµε ότι κανένα µελλοντικό µήνυµα δεν µπορεί να φτάσει µε χρονοσφραγίδα µικρότερη από τις σφραγίδες χρόνου όλων των µηνυµάτων που έχουν ήδη παραδοθεί. 4.2.1.2. Λογικά ρολόγια Στην περίπτωση αυτή θεωρούµε ότι κάθε διεργασία p i έχει το δικό της λογικό ρολόι LC i. Επιπλέον εισάγουµε έναν κανόνα παράδοσης, σύµφωνα µε τον οποίον τη χρονική στιγµή t παραδίδονται όλα τα µηνύµατα που ελήφθησαν σε αύξουσα διάταξη σφραγίδων χρόνου. Εφαρµόζοντας τον κανόνα αυτόν στο παράδειγµα του Σχήµατος 2.1, η p 0 θα µπορούσε να κατασκευάσει την παρατήρηση:

76 Κατανεµηµένα Συστήµατα µε Java e 1 1 1 2 2 3 3 4 4 2 5 5 3 6 6 1e2e 3e1e 3e3e 1e3e 1e2e 3e1e 2e1e 3 η οποία είναι πράγµατι συνεπής. Παρόλα αυτά, ο παραπάνω κανόνας δεν είναι ρεαλιστικός επειδή, χωρίς κάποιο φράγµα στις καθυστερήσεις των µηνυµάτων, κανένα µήνυµα δε θα παραδοθεί µε το φόβο µήπως ληφθεί αργότερα ένα άλλο µήνυµα µε µικρότερη χρονοσφραγίδα. Αυτό συµβαίνει, διότι τα λογικά ρολόγια, όταν χρησιµοποιούνται ως µηχανισµός συγχρονισµού, στερούνται της ιδιότητας ανίχνευσης χάσµατος (gap detection): Ανίχνευση Χάσµατος: εδοµένων δύο γεγονότων e και e ' µαζί µε τις τιµές LC (e ) και LC (e' ) για τις οποίες LC (e) < LC(e'), αποφάσισε αν υπάρχει κάποιο άλλο γεγονός e '' τέτοιο, ώστε LC (e) < LC(e'') < LC(e' ). Εφόσον κάθε λογικό ρολόι σε συνδυασµό µε την παράδοση FIFO διατηρεί τη σειρά των µηνυµάτων που έχουν σταλεί από µια διεργασία κατά την παράδοσή τους, όταν η p 0 δεχθεί ένα µήνυµα m από τη διεργασία p i µε χρονοσφραγίδα TS (m), είναι σίγουρο ότι κανένα άλλο µήνυµα m ' δεν µπορεί να ληφθεί από την p i τέτοιο, ώστε TS(m') TS(m ). Ένα µήνυµα, όπως το m, θα καλείται σταθερό (stable). Αν, λοιπόν, η διεργασία p 0 δεχθεί τουλάχιστον ένα µήνυµα από όλες τις άλλες διεργασίες µε χρονοσφραγίδα µεγαλύτερη από TS (m), τότε µπορούµε να εγγυηθούµε τη σταθερότητα του µηνύµατος m. Η ιδέα αυτή οδηγεί στο δεύτερο κανόνα παράδοσης, τον οποίο θα συµβολίζουµε µε ΚΠ2: ΚΠ2: Παράδωσε όλα τα µηνύµατα που είναι σταθερά στην p σε αύξουσα σειρά χρονοσφραγίδων. 0 Παρατηρείστε ότι τα ρολόγια πραγµατικού χρόνου στερούνται επίσης της ιδιότητας ανίχνευσης χάσµατος. Η υπόθεση, ωστόσο, ότι οι καθυστερήσεις των µηνυ- µάτων φράσσονται από µια τιµή δ µας οδηγεί στην εξής ισοδύναµη διατύπωση του ΚΠ1: τη χρονική στιγµή t, όλα τα µηνύµατα µε σφραγίδες χρόνου µικρότερες από t δ είναι σταθερά. 4.2.1.3. Αιτιώδης παράδοση Μέχρι τώρα είδαµε ότι η παράδοση FIFO εγγυάται τη σειρά των µηνυµάτων που στέλνονται από την ίδια διεργασία. Μια γενικότερη αφαίρεση επεκτείνει τη διάταξη αυτή σε όλα τα µηνύµατα που είναι αιτιωδώς συσχετισµένα (causally related), ακόµα κι αν προέρχονται από διαφορετικές διεργασίες. Η ιδιότητα αυτή, που ονοµάζεται αιτιώδης παράδοση (causal delivery), θα συµβολίζεται ως ΑΠ και µπορεί να οριστεί ως εξής:

Κεφάλαιο 4: Καθολικές καταστάσεις 77 ΑΠ: send (m) i send(m') deliver(m) j k deliver(m') k για όλα τα µηνύµατα m και m ', τις διεργασίες-αποστολείς p i και p j και τη διεργασία-παραλήπτη p k. Παρατηρείστε ότι η παράδοση FIFO µεταξύ όλων των ζευγών των διεργασιών δεν εγγυάται αιτιώδη παράδοση. Το Σχήµα 4.3 δείχνει έναν υπολογισµό, όπου όλες οι παραδόσεις των µηνυµάτων ικανοποιούν την παράδοση FIFO, αλλά αυτές που αφορούν στη διεργασία p 3 παραβιάζουν την ΑΠ. p 1 p 2 m m p 3 Σχήµα 4.3. Παράδειγµα παραβίασης της ΑΠ. Η συσχέτιση της ΑΠ µε την κατασκευή συνεπών παρατηρήσεων είναι προφανής: αν η p 0 χρησιµοποιεί έναν κανόνα παράδοσης που να ικανοποιεί την ΑΠ, τότε όλες οι παρατηρήσεις της θα είναι συνεπείς. Όσον αφορά τους δύο κανόνες παράδοσης που ήδη έχουµε ορίσει (ΚΠ1 και ΚΠ2), αυτοί αποτελούν στιγµιότυπα της ΑΠ που δουλεύουν κάτω από ορισµένες προϋποθέσεις. Αυτό που µας ενδιαφέρει είναι να µπορέσουµε να εφαρµόσουµε την ΑΠ στα ασύγχρονα συστήµατα, χωρίς περιορισµούς. Αν ισχύει RC (e) < RC(e' ), τότε (e' e), κι αυτό σηµαίνει ότι είτε το e προηγείται λογικά του e ' είτε τα e και e ' είναι ταυτόχρονα. Στη δεύτερη περίπτωση οι ΚΠ1 και ΚΠ2 ενδέχεται να καθυστερήσουν την παράδοση του µηνύµατος που γνωστοποιεί το γεγονός e ' στη διεργασία-επόπτη, ακόµα κι αν το σύστηµα µπορούσε να προβλέψει τις σφραγίδες χρόνου των µηνυµάτων που θα δεχθεί η διεργασία αυτή. Η καθυστέρηση αυτή πιθανότατα είναι άσκοπη, αν, παρόλο που υπήρχαν µελλοντικά µηνύµατα γνωστοποίησης µε µικρότερες χρονοσφραγίδες, όλα τύχαιναν να είναι για γεγονότα ταυτόχρονα του e '. Με βάση, λοιπόν, τους ορισµούς που έχουµε δώσει για τους δύο πρώτους κανόνες παράδοσης και για τη συνθήκη του ρολογιού, είναι πιθανό να καταλήξουµε σε µεγάλες καθυστερήσεις. Γι αυτό ορίζουµε την Ισχυρή Συνθήκη του Ρολογιού, που περιγράψαµε νωρίτερα. Αν χρησιµοποιήσουµε ένα µηχανισµό συγχρονισµού, τον οποίο ονοµάζουµε TC και για τον οποίον ισχύει η συνέπεια της λογικής διαδοχής

78 Κατανεµηµένα Συστήµατα µε Java των γεγονότων (όπως στα ρολόγια πραγµατικού και λογικού χρόνου), τότε γνωρίζουµε και µε ποιον τρόπο διαδέχεται λογικά το ένα γεγονός το άλλο, κρίνοντας απλώς από την τιµή TC. 4.2.1.4. ιανυσµατικά ρολόγια Όταν χρησιµοποιούνται διανυσµατικά ρολόγια, υπάρχει ένα διανυσµατικό ρολόι VC i για κάθε διεργασία p i. Όπως ήδη έχουµε πει, τα διανυσµατικά ρολόγια ικανοποιούν την Ισχυρή Συνθήκη του Ρολογιού, οπότε είναι ένας µηχανισµός κατάλληλος σύµφωνα µε την προηγούµενη παράγραφο. Όλα τα µηνύµατα που έχουν ληφθεί από τη διεργασία-επόπτη, και δεν έχουν ακόµη παραδοθεί σε αυτήν, κρατούνται σε ένα σύνολο M, το οποίο αρχικά είναι άδειο. Ένα µήνυµα m της διεργασίας p j του συνόλου Μ µπορεί να παραδοθεί στην p 0, όταν αυτή µπορεί να επιβεβαιώσει ότι δεν υπάρχουν άλλα µηνύµατα (ούτε στο σύνολο Μ, αλλά ούτε και στο σύστηµα), των οποίων η αποστολή να προηγείται λογικά του µηνύµατος m. Έστω m ' το τελευταίο µήνυµα που έχει παραδοθεί από τη διεργασία p k, µε k j. Το µήνυµα m της διεργασίας p j µπορεί να παραδοθεί στην p 0, αν ισχύουν οι εξής συνθήκες: δεν υπάρχει νωρίτερο µήνυµα από την p j που να µην έχει ακόµη παραδοθεί δεν υπάρχει µήνυµα m ' της p k που να µην έχει παραδοθεί τέτοιο, ώστε send (m') send (m'') send(m), k j. k k Έτσι για τη σωστή παράδοση των µηνυµάτων η p 0 κρατάει έναν πίνακα µετρητών D [1...n ], του οποίου όλα τα στοιχεία είναι αρχικά µηδέν, ώστε ο µετρητής D [i ] να περιέχει τη χρονοσφραγίδα TS(m i )[i ], όπου το m i είναι το τελευταίο µήνυµα που έχει σταλεί από την p i, και έχει παραδοθεί. Βασιζόµενοι σε όλα αυτά, διατυπώνουµε τον τρίτο κανόνα παράδοσης (ΚΠ3), ο οποίος αναφέρεται κι ως αιτιώδης παράδοση (causal delivery): ΚΠ3: Παράδωσε το µήνυµα m από τη διεργασία ικανοποιούνται οι παρακάτω δύο συνθήκες: (1) D[j] = TS(m)[j] 1 (2) D[k] TS(m)[k ], k j j p j, µόλις Μόλις το µήνυµα m παραδίδεται στην p 0, ο πίνακας D ενηµερώνεται θέτοντας D [j] = TS(m)[j] (δηλαδή, αυξάνοντας την τιµή αυτήν κατά ένα).