Κατανεμημένα Συστήματα Συγχρονισμός Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 2
Μοντέλο Κατανεμημένου Συστήματος Ένα σύνολο ακολουθιακώνδιεργασιών P 1, P 2,, P n,που εκτελούνται σε ένα αντίστοιχο σύνολο, γενικά ανομοιογενών, μηχανών. Κάθε διεργασία P i έχει μια κατάστασηs i οριζόμενη από τις τιμές των μεταβλητών της (τις οποίες τροποποιεί καθώς εκτελείται). Οι διεργασίες επικοινωνούν ανταλλάσσοντας μόνον μηνύματα μέσω ενός δικτύου. Οι διεργασίες εκτελούν ενέργειες όπως: Send, Receive, εντολές που αλλάζουν την κατάστασή τους. Συμβάν (event): οποιαδήποτε ενέργεια που μια διεργασία φέρνει εις πέρας στον χρόνο, ενώ εκτελείται. Η ακολουθία των συμβάντων εντός μιας διεργασίας P i είναι ολικώς διατεταγμένη (ξέρουμε τη σειρά τους) Η ιστορίαμιας διεργασίας P i είναι η ακολουθία των συμβάντων που λαμβάνουν χώρα εντός της P i 0 1 2 history( P ) = h = e, e, e,... i i i i i 3
Χρόνος Ο χρόνος εξαρτάται από το σύστηµα αναφοράς στο οποίο γίνεται η µέτρησή του κι εποµένως δεν είναι απόλυτος! Δεν υπάρχει φυσικό ρολόι στο Σύµπαν το οποίο να µετρά µε ακρίβεια διαστήµατα χρόνου!
Σημασία ακρίβειας χρόνου στα ΚΣ Η καταγραφή ακριβούς ημερομηνίας και ώρας για ένα συμβάν που συνιστά απόδειξη παραλαβής είναι κρίσιμη για επιβεβαίωση της ποιότητας μιας υπηρεσίας Μερικές υπηρεσίες οικονομικών εφαρμογών απαιτούν εκ νόμου να χρησιμοποιούν ακριβή χρόνο. Υπηρεσίες συναλλαγών πρέπει επίσης να γνωρίζουν το χρόνο με ακρίβεια. Ο έλεγχος της ασφάλειας των ΚΣ βασίζεται επίσης στη γνώση ακριβούς χρόνου. Ένα βασικό συστατικό κάθε συστήματος ασφαλείας είναι η τακτική επιθεώρηση και ανάλυση τόσο των log files του συστήματος, όσο και των log files των firewalls και συστημάτων ανίχνευσης εισβολών Αν ο χρόνος των υπολογιστών είναι διαφορετικός τότε είναι σχεδόν αδύνατο να συσχετισθούν ενέργειες που έλαβαν χώρα σε διαφορετικούς υπολογιστές εσωτερικά ή εξωτερικά του οργανισμού 5
Σημασία καθολικού χρόνου στα ΚΣ Εντολή make του Unix. Όταν κάθε µηχάνηµα έχει το δικό του ρολόι, µπορεί να αποδοθεί προγενέστερη ώρα σε ένα συµβάν, παρόλο που αυτό κανονικά έλαβε χώρα µετά από ένα άλλο συµβάν Για τη σωστή λειτουργία του make αρκεί όλα τα µηχανήµατα να συµφωνούν σε µια κοινή ώρα έστω και εάν αυτή δεν είναι ακριβώς η πραγµατική για ένα συγκεκριµένο είδος αλγορίθµων, σηµασία έχει η εσωτερική συνέπεια των ρολογιών και όχι αν αυτά είναι κοντά στην πραγµατική ώρα. 6
Συγχρονισμός Συγχρονισμός: συντονισμός ενεργειών μεταξύ διεργασιών. Οι διεργασίες λειτουργούν συνήθως ασύγχρονα (δεν ασχολούνται με τα συμβάντα που συμβαίνουν σε άλλες διεργασίες) Μερικές φορές όμως χρειάζεται να συνεργάζονται/συγχρονίζονται Για αμοιβαίο αποκλεισμό (mutual exclusion) Για διάταξη συμβάντων (το μήνυμα x στάλθηκε από την διεργασία P πρινή μετάτο μήνυμα y από την διεργασία Q;) 7
Δυσκολίες στον συγχρονισμό ΚΣ Στα συγκεντρωτικά συστήματα(αρχιτεκτονική κοινής μνήμης) ο συγχρονισμός των διεργασιών γίνεται με μηχανισμούς όπως οι σηματοφορείς (semaphores) ή οι ελεγκτές (monitors). Δυνατότητα ελεγχόμενης πρόσβασης σε κοινούς πόρους μέσω της κοινής μνήμης του συστήματος Καθολική διάταξη των συμβάντων με βάση το ρολόι του συστήματος Στα ΚΣ ο συγχρονισμός και η καθολική διάταξη των συμβάντων είναι δύσκολη υπόθεση: επικοινωνία μόνον μέσω ανταλλαγής μηνυμάτων και όχι πρόσβαση σε κοινή μνήμη αδυναμία συγχρονισμού των τοπικών ρολογιών για μεγάλο χρονικό διάστημα 8
Σύγχρονα ΚΣ Ένα ΚΣ είναι σύγχρονο(synchronous) αν ισχύουν οι ακόλουθες ιδιότητες: ένα γνωστό άνω όριο maxκαι ένα γνωστό κάτω όριο minστον χρόνο καθυστέρησης για την επικοινωνία δύο διεργασιών μέσω ενός μηνύματος, που περιλαμβάνει τους χρόνους αποστολής, μεταφοράς και παραλαβής του μηνύματος μέσω του δικτύου ένα γνωστό άνω όριο ρστο ρυθμό ολίσθησης (drift rate) του τοπικού ρολογιού C i κάθε μηχανής P i σε σχέση με τον πραγματικό χρόνο. Δηλαδή, iκαι t > t ισχύει: ( ) ( t ) C( t) Ci i 1 ρ ( 1+ρ) t t ένα γνωστό άνω όριο στις σχετικές ταχύτητεςτων μηχανών, δηλαδή στο χρόνο που απαιτείται από κάθε διεργασία για την εκτέλεση ενός υπολογιστικού βήματος 9
Ασύγχρονα ΚΣ Ένα σύστημα είναι ασύγχρονο (asynchronous) αν δεν υπάρχουν άνω όρια στην καθυστέρηση των μηνυμάτων, στην ολίσθηση των χρονομέτρων και στις σχετικές ταχύτητες των μηχανών. 10
Κατηγορίες αλγορίθμων Συγκεντρωτικοί αλγόριθμοι Ένας κόμβος (serverή coordinator) προσφέρει κάποια κεντρική υπηρεσία σε όλους τους άλλους κόμβους. Αποτυχία μοναδικού σημείου Φτωχή επεκτασιμότητα Κατανεμημένοι αλγόριθμοι Όλοι οι κόμβοι συμμετέχουν ισότιμα στην εκτέλεση του αλγόριθμου εκτελώντας τα ίδια ή ανάλογα προγράμματα και συνεργαζόμενοι με ανταλλαγή μηνυμάτων για την ολοκλήρωση του αλγόριθμου. Ιδιότητες: Οι πληροφορίες είναι διασκορπισμένες σε πολλές μηχανές Οι αποφάσεις λαμβάνονται βάσει της τοπικής πληροφορίας μόνο Αποφυγή μοναδικού σημείου ολικής αποτυχίας Έλλειψη καθολικού ρολογιού 11
Κατανεμημένοι υπολογισμοί Περιγράφουν την εκτέλεση ενός συνόλου ακολουθιακών διεργασιών. Η διεργασία εκτελεί μια σειρά από ενέργειες. Η εκτέλεση μιας ενέργειας εμφανίζεται ως ένα συμβάν (event): τοπικό/εσωτερικό, επικοινωνίας (send, receive). To διάγραμμα χώρου-χρόνου(space-time diagram) απεικονίζει κατανεμημένους υπολογισμούς μέσα στον χρόνο 12
Διάγραμμα χώρου-χρόνου 13
ΔΙΑΤΑΞΗ ΣΥΜΒΑΝΤΩΝ 14
Χρονική και Λογική Διάταξη Χρονική Διάταξη Δίνει απάντηση στο ερώτημα κατά πόσο ένα συμβάν έλαβε χώρα πριν από ένα άλλο συμβάν. Η χρονική αλληλουχία μεταξύ των συμβάντων ενός (κατανεμημένου) συστήματος μπορεί να καθοριστεί από έναν εξωτερικό παρατηρητή που παρατηρεί τη σειρά με την οποία λαμβάνουν χώρα τα συμβάντα Από τις ίδιες τις διεργασίες του συστήματος, εφόσον μπορούν να αναφέρονται σε έναν κοινό χρόνο. Λογική Διάταξη Δίνει απάντηση στο κατά πόσο ένα συμβάν προηγείται λογικά από ένα άλλο συμβάν Βασίζεται στη σχέση συμβαίνει-πριν(happened-before) που είναι γνωστή και ως σχέση πιθανής αιτιώδους διάταξης Η λογική διάταξη σέβεται αλλά δεν ταυτίζεται με την χρονική σειρά που έλαβαν χώρα τα συμβάντα. 15
Χρονική Λογική Διάταξη 16
Προσεγγίσεις Φυσικά ρολόγια Συγχρονισμός των φυσικών ρολογιών των μηχανών με ικανοποιητική ακρίβεια, και (ιδανικά) σύμφωνα με τον «πραγματικό» χρόνο Λογικά ρολόγια Διαχείριση τοπικών μετρητών για τα συμβάντα που λαμβάνουν χώρα σε κάθε διεργασία, χωρίς να γίνεται κάποια προσπάθεια μέτρησης του πραγματικού χρόνου Κάθε συμβάν αποκτά μια χρονοσφραγίδα (timestamp) με βάση την οποία μπορεί να καταταχθεί σε σχέση με τα υπόλοιπα συμβάντα που έλαβαν χώρα στο σύστημα. Η κατάταξη μπορεί π.χ. να γίνει από μια διεργασία που λαμβάνει μηνύματα ειδοποίησης για κάθε συμβάν 17
ΦΥΣΙΚΑΡΟΛΟΓΙΑ 18
Φυσικός χρόνος Ηλιακός/Αστρονομικός Χρόνος (από τον 17 ο αιώνα) 1 ηλιακό δευτερόλεπτο (solar sec) = 1/86400 της ηλιακής μέρας Όμως η περίοδος περιστροφής της γης σταδιακά μεγαλώνει Μέσο ηλιακό δευτερόλεπτο (mean solar sec) το 1940. Ατομικός Χρόνος (από το 1948) Διεθνές Γραφείο Ώρας (Bureau International de l Heure, BIH) 1 ατομικό δευτερόλεπτο (atomic sec) = ο χρόνος που χρειάζεται το άτομο του Cesium 133 για να κάνει 9.192.631.770μεταπτώσεις κατάστασης 1 atomic sec 1 mean solar sec Διεθνής Ατομικός Χρόνος (International Atomic Time, IAT) 50 εργαστήρια ανά τον κόσμο με Cesium 133 ρολόγια ΙΑΤ = ο μέσος χρόνος των χτύπων των Cesium 133 ρολογιών από τα μεσάνυχτα της 1 ης Ιανουαρίου του 1958 διαιρεμένος με το 9.192.631.770 19
Ηλιακός χρόνος Υπολογισμός μέσης ηλιακής ημέρας 20
Πρόβλημα στην μέτρηση του φυσικού χρόνου Αποδείχτηκε ότι τα 86400 ατομικά δευτερόλεπτα είναι στην πράξη 3 msec λιγότερα από την μέση ηλιακή μέρα (η μέση ηλιακή ημέρα μεγαλώνει συνεχώς) Το ΒΗΙ εισάγει 1 sec (δευτερόλεπτο άλματος, leap second) κάθε φορά που η διαφορά μεταξύ ατομικού και αστρονομικού χρόνου ξεπερνά τα 800 msec (περίπου μια φορά τον χρόνο ένα λεπτό έχει διάρκεια 61 sec!). Δημιουργείται ο Συντονισμένος Παγκόσμιος Χρόνος (Coordinated Universal Time, UTC) ο οποίος βασίζεται στον ατομικό χρόνο, αλλά συμβαδίζει με τον αστρονομικό χρόνο 21
Δευτερόλεπτα άλματος Τα TAI secs έχουν σταθερό μήκος, σε αντιδιαστολή με τα ηλιακά δευτερόλεπτα. Δευτερόλεπτα άλματος (leap seconds) εισάγονται όταν χρειάζεται για να υπάρχει αντιστοιχία με το ηλιακό μετρικό σύστημα. 22
Εκπομπή UTC χρόνου UTC σήματα εκπέμπονται τακτικά από διάφορους επίγειους ραδιοφωνικούς σταθμούς σε συχνότητες βραχέων κυμάτων και δορυφόρους όπως το Καθολικό Σύστημα Τοποθέτησης (Global Positioning System, GPS) Η ακρίβεια των σημάτων κυμαίνεται: : 0.1-10.0 msec (επίγειοι σταθμοί) 1.0 μsec (GPS) >> 1ms (UTC μέσω τηλεφωνικής γραμμής) Δέκτες σημάτων UTC είναι διαθέσιμοι στο εμπόριο και μπορούν να συνδεθούν σε Η/Υ για συγχρονισμό των ρολογιών τους. 23
Ρολόι υπολογιστών (υλισμικό) Κάθε Η/Υ (κόμβος σε ΚΣ) έχει το δικό του ιδιωτικό ρολόι H i (t) Πως δουλεύει το φυσικό/ρολόι υλισμικού (χρονόμετρο) ενός Η/Υ; Κρύσταλλος χαλαζία που ταλαντώνεται σε μια καθορισμένη συχνότητα Έναν καταχωρητή μετρητή (counter register) Έναν καταχωρητή διατήρησης (holding register) Κάθε ταλάντωση του κρυστάλλου ελαττώνει τον μετρητή κατά ένα. Όταν ο μετρητής γίνει μηδέν, παράγεται μια διακοπή και φορτώνεται εκ νέου η τιμή που περιέχεται στον καταχωρητή διατήρησης. Κάθε διακοπή ονομάζεται χτύπος ρολογιού (clock tick) Μετά την παραγωγή της διακοπής ο χειριστής διακοπών αυξάνει τον H i (t) κατά ένα μετρώντας τους κτύπους του ρολογιού (clock ticks) από ένα σημείο αναφοράς, γεγονός που αναπαριστά το πέρασμα του χρόνου στο υλικό επίπεδο H i (t). 24
Αναλογία με ρολόι υπολογιστών (υλισμικό) Κλεψύδρα: Καταχωρητής διατήρησης Κόκκοι άμμου: Μετρητής Χτύπος Ρολογιού (clock tick): Γύρισμα κλεψύδρας (διακοπή για επαναφόρτωση) Παράγοντας λάθους: ο χρόνος που απαιτείται για το γύρισμα της κλεψύδρας (ανάλογα ο χρόνος επαναφόρτωσης)
Ρολόι υπολογιστών (λογισμικό) Το ΛΣ χρησιμοποιεί το ρολόι υλισμικού, H i (t), προκειμένου να παράγει ένα ρολόι λογισμικού C i (t) που μετράει προσεγγιστικά τον πραγματικό χρόνο για μια μηχανή. Η ενημέρωση του ρολογιού λογισμικού γίνεται με μια σχέση της μορφής: C i (t) = αh i (t) + β Το C i (t)προσεγγίζει τον πραγματικό χρόνο tστην διεργασία i Το C i (t)μπορεί να υλοποιηθεί με μια 64-bit λέξη, αναπαριστώντας για παράδειγμα τα nanoseconds που έχουν περάσει την στιγμή t από μια χρονική στιγμή αναφοράς. 26
Ρολόι υπολογιστών (λογισμικό) Resolution: ο ελάχιστος χρόνος μεταξύ ενημερώσεων του ρολογιού (εξαρτάται από την συχνότητα των διακοπών του υλικού ρολογιού) Accuracy: προσδιορίζει πόσο κοντά το ρολόι βρίσκεται σε ένα ρολόι αναφοράς (όπως το UTC). Διαδοχικά συμβάντα σε μια διεργασία μπορούν να διακριθούν με χρονοσφραγίδες μόνον αν το resolution του ρολογιού είναι μικρότερο από την χρονική διαφορά μεταξύ των συμβάντων. Ο χρόνος εκφράζεται σε μια γραμμική κλίμακα π.χ. των nanoseconds. Για φυσική κλίμακα χρειάζεται μετατροπή. 27
Λόξωση και ολίσθηση Οι κρύσταλλοι των διαφορετικών ρολογιών δεν ταλαντώνονται ακριβώς με την ίδια συχνότητα με συνέπεια οι τιμές των ρολογιών λογισμικού σταδιακά να αποκλίνουν. Η διαφορά αυτή στην τιμή δύο ρολογιών ( Ci(t) Cj(t) ) ονομάζεται λόξωση(skew). Η ταχύτητα ολίσθησης (drift rate) ενός ρολογιού είναι η μεταβολή της διαφοράς μεταξύ των τιμών του ρολογιού αυτού και ενός «τέλειου» ρολογιού αναφοράς ανά μονάδα χρόνου, όπως αυτή μετριέται από το ρολόι αναφοράς. Τα συνηθισμένα ρολόγια κρυστάλλου χαλαζία ολισθαίνουν ~ 1sec σε 11-12 ημέρες(10-6 secs/sec). Υψηλής ακρίβειας ρολόγια κρυστάλλου χαλαζία παρουσιάζουν ταχύτητα ολίσθησης ~ 10-7 or 10-8 secs/sec. Συνήθως η συχνότητα ταλάντωσης ενός κρυστάλλου επηρεάζεται από τη θερμοκρασία. 28
Ολίσθηση ρολογιού Έστω tη UTC ώρα και C P (t)η τιμή του ρολογιού του μηχανήματος Pτην ίδια χρονική στιγμή. Ιδανικά θα είχαμε C P (t)= t για κάθε P και t (αλλιώς dc/dt = 1) Αυτό όμως δεν επιτυγχάνεται εξ αιτίας της ολίσθησης των ρολογιών. 29
Ορθότητα ρολογιού Ένα ρολόι υλισμικού, Ηλέμε ότι είναι ορθό (correct)εάν η ταχύτητα ολίσθησής του εμπίπτει σε ένα γνωστό φράγμα ρ>0 (π.χ. 10-6 secs/ sec) Το σφάλμα στη μέτρηση του διαστήματος μεταξύ πραγματικών χρόνων t και t είναι φραγμένο: (1 -ρ)(t -t) H(t ) -H(t) (1 + ρ)(t -t) (όπου t >t) ή (1 -ρ) dh/dt (1 + ρ) Η παραπάνω συνθήκη απαγορεύει άλματα στην τιμή των ρολογιών υλισμικού Η συνθήκη μπορεί να ισχύει και για τα ρολόγια λογισμικού Για τα ρολόγια λογισμικού μια πιο χαλαρή συνθήκη μονοτονίας ισχύει: t' > t C(t ) > C(t) (ένα ρολόι δεν επιτρέπεται να πάει «προς τα πίσω») 30
Ελαττωματικά ρολόγια Τα κριτήρια της ορθότητας ρολογιού ασχολούνται μόνον με τη σωστή λειτουργία του μηχανισμού του ρολογιού και όχι με την απόλυτη ρύθμισή του στη σωστή ώρα. Ένα ρολόι χαρακτηρίζεται ως ελαττωματικό αν δεν ικανοποιεί καμιά από τις συνθήκες ορθότητας που έχουν οριστεί. Αστοχία παράλειψης το ρολόι σταματά να κτυπά (crash) Αυθαίρετη αστοχία οποιαδήποτε άλλη αστοχία π.χ., άλματα στον χρόνολόγω εξασθένησης μπαταρίας και απροσδιόριστης ολίσθησης, Y2Kbug 31
Συγχρονισμός φυσικών ρολογιών Εξωτερικός συγχρονισμός (external synchronization) Τα ρολόγια C i ενός συνόλουnυπολογιστών συγχρονίζονται με μια εξωτερική πηγή UTC χρόνου S εάν ισχύει: S(t) - C i (t) < D για i= 1, 2, N για κάθεtσε ένα διάστημα πραγματικού χρόνου Τα ρολόγια C i είναι ακριβή (accurate)μέσα στο φράγμα D. Εσωτερικός συγχρονισμός (Internal synchronization) Τα ρολόγια C i ενός συνόλουnυπολογιστών συγχρονίζονται μεταξύ τους εάν ισχύει: C i (t) - C j (t) < D για i,j= 1, 2, N για κάθεtσε ένα διάστημα πραγματικού χρόνου Τα ρολόγια C i είναι σε συμφωνία μέσα στο φράγμα D. Ρολόγια εσωτερικά συγχρονισμένα δεν είναι απαραίτητα και εξωτερικά συγχρονισμένα, καθώς μπορεί να ολισθαίνουν συλλογικά από την UTC ώρα. εάν το σύνολο των διεργασιών P είναι εξωτερικά συγχρονισμένο με ένα φράγμα D, τότε είναι επίσης εσωτερικά συγχρονισμένο με ένα φράγμα 2D 32
Συγχρονισμός φυσικών ρολογιών 33
Διόρθωση ρολογιών Το τοπικό ρολόι μπορεί να πηγαίνει, είτε πιο αργά, είτε πιο γρήγορα σε σχέση με μια εξωτερική πηγή C ref. Αντοτοπικό ρολόιπάειπίσω, τότεμπορεί να διορθωθεί προςταεμπρός. Αντορολόιπάειμπροστά,τότεπρέπειναδιορθωθείπροςταπίσω. έτσι όμως ακυρώνεταιημονοτονικήσυνθήκη του ορθού ρολογιού! Μπορούμε να επιτύχουμε μονοτονία για ένα ρολόι λογισμικού που τρέχει πιο γρήγορα προσαρμόζοντας τις τιμές των παραμέτρων α και β στη σχέση C i (t) = αh i (t) + β Έστω χρονόμετρο που παράγει 100 διακοπές το δευτερόλεπτο. Κάθε διακοπή προσθέτει στην ώρα 10ms Αν θέλουμε να φρενάρουμε την ταχύτητα του ρολογιού η ρουτίνα διακοπών μπορεί να προσθέτει μόνο 9ms κάθε φορά (α= 10, β = -1), μέχρι να ολοκληρωθεί η διόρθωση. Παρομοίως μπορούμε να ρυθμίσουμε το ρολόι βαθμιαία προς τα εμπρός ώστε να προσθέτει 11msec σε κάθε διακοπή, αντί να το ρυθμίσουμε κατευθείαν σε κάποια μεταγενέστερη χρονική στιγμή. 34
Διόρθωση ρολογιών Περιοδικός συγχρονισμός ρολογιού με βάση ένα ρολόι αναφοράς C ref, με προσαρμογή του ρυθμού μέτρησης (διατήρηση της μονοτονικής ιδιότητας) 35
Συχνότητα συγχρονισμού Αν δύο ρολόγια αποκλίνουν από την ώρα UTC προς την αντίθετη κατεύθυνση, σε μια χρονική στιγμή Δt μετά τον συγχρονισμό τους μπορούν να έχουν μεταξύ τους διαφορά μέχρι 2ρΔt Αν θέλουμε να εγγυηθούμε ότι τα ρολόγια δεν θα διαφέρουν ποτέ περισσότερο από D, τα ρολόγια θα πρέπει να επανασυγχρονίζονται τουλάχιστον κάθε D/2ρ δευτερόλεπτα. 36
Ανακρίβεια συγχρονισμού Η διαδικασία συγχρονισμού απαιτεί κάποιο χρονικό διάστημα για να ολοκληρωθεί και μπορεί να μην επιτυγχάνει τέλειο συγχρονισμό. 37
ΑΛΓΟΡΙΘΜΟΙΣΥΓΧΡΟΝΙΣΜΟΥ ΦΥΣΙΚΩΝΡΟΛΟΓΙΩΝ 38
Συγχρονισμός σε σύγχρονα συστήματα Σε ένα σύγχρονο σύστημα γνωρίζουμε: ένα άνω φράγμα (max) και ένα κάτω φράγμα (min) στην καθυστέρηση μετάδοσης ενός μηνύματος, ένα άνω όριο στο ρυθμό ολίσθησης του ρολογιού, ένα άνω όριο στις σχετικές ταχύτητες των μηχανών. Ο συγχρονισμός επιτυγχάνεται ως εξής: Ένας εξυπηρετητής ώρας (S) στέλνει την τοπική του ώρα t s σε έναν πελάτη (C), Ιδανικά, ο πελάτης θέτει το ρολόι του στην τιμή t s +Τ trans To ακριβές Τ trans είναι άγνωστο! Ο πελάτης θέτει το ρολόι του στην τιμή t s +(max+min)/2 Η λόξωση (skew) θα είναι το πολύ (max-min)/2 39
Συγχρονισμός σε ασύγχρονα συστήματα Αλγόριθμος του Cristian Αλγόριθμος Berkeley Πρωτόκολλο Ώρας Δικτύου (Network Time Protocol) 40
Αλγόριθμος του Cristian Αφορά εξωτερικό συγχρονισμό. Ένας εξυπηρετητής ώρας TSδιαθέτει έναν δέκτη σημάτων από μια πηγή UTC. Περιοδικά, τουλάχιστον κάθε D/2ρ δευτερόλεπτα, κάθε μηχανή (Client) Pστέλνει ένα μήνυμα (m r )στον TS ρωτώντας τον για την τρέχουσα ώρα. Ο TSαπαντάει με ένα μήνυμα (m t )το οποίο περιέχει την τρέχουσα ώρα t(η τιμή tεισάγεται στο m t στο τελευταίο δυνατό σημείο πριν την αποστολή του). 41
Αλγόριθμος του Cristian Η Pυπολογίζει τον χρόνο που περνάει (T round =T 1 - T 0 ) από την στιγμή που το m r σταλεί μέχρι το m t να ληφθεί. Τα Τ 0 και Τ 1 μετρούνται με το ίδιο ρολόι. Η P θέτει το τοπικό της ρολόι στην τιμή t + T round /2. Υποθέτουμε ότι ο χρόνος που χρειάζεται η αίτηση για να φτάσει από την P στην TS είναι(περίπου) ίσος με τον χρόνο που χρειάζεται η απάντηση για να φτάσειαπότηνtsστηνp Αυτό είναι μια αρκετά λογική υπόθεση που ισχύει με μεγάλη πιθανότητα στις περισσότερες περιπτώσεις, όμως μπορεί ενίοτε να μην ισχύει. Γιατί; 42
Αλγόριθμος του Cristian Η προηγούμενη εκτίμηση είναι δυνατόν να βελτιωθεί, αν είναι γνωστό πόσο περίπου χρόνο χρειάζεται ο TS για να χειριστεί την διακοπή και να επεξεργαστεί το εισερχόμενο μήνυμα. Έστω Ι ο χρόνος χειρισμού της διακοπής. Τότε το διάστημα που αφιερώθηκε στην διάδοση του μηνύματος είναι: T round = T 1 - T 0 - Ι 43
Ακρίβεια αλγόριθμου του Cristian Υποθέτουμε min = ελάχιστη καθυστέρηση μηνύματος (latency) Το νωρίτερο σημείο στο οποίο ο TSθα μπορούσε να έχει τοποθετήσει την t στο m t είναι min, αφού η P είχε διανείμει το m r Το αργότερο σημείο που θα μπορούσε να το κάνει είναι min πριν το m t φθάσει στην P Η τιμή t του ρολογιού του TS είναι στο διάστημα [T 0 +min, T 1 -min] Το εύρος του διαστήματος είναι T round -2min Η ακρίβεια είναι ±(T round /2 - min) 44
Μειονεκτήματα αλγόριθμου του Cristian Αποτυχία μοναδικού σημείου Λύση να παρέχεται η ώρα από μια ομάδα συγχρονισμένων εξυπηρετητών ώρας Ένας πελάτης πολυεκπέμπει την αίτησή του σε όλους τους εξυπηρετητές και χρησιμοποιεί μόνο την πρώτη απάντηση που θα λάβει. 45
Αλγόριθμος Berkeley Χρησιμοποιείται στο σύστημα Berkeley UNIX. Μέθοδος κατάλληλη για συστήματα στα οποία κανένα μηχάνημα δεν διαθέτει δέκτη σημάτων από μια πηγή UTC(εσωτερικός συγχρονισμός). Ο δαίμονας ώρας(td), αλλιώς master,είναι ενεργητικός και διενεργεί περιοδικούς ελέγχους σε κάθε μηχάνημα(slave)με σκοπό να πληροφορηθεί την τρέχουσα ώρα του. Βάσει των απαντήσεων υπολογίζει μια μέση ώρα και δίνει εντολή σε όλα τα άλλα μηχανήματα, είτε να βάλουν μπροστά τα ρολόγια τους σύμφωνα με την νέα ώρα, είτε να μειώσουν την ταχύτητα των ρολογιών τους μέχρι να επιτευχθεί μια καθορισμένη μείωση. Στην πράξη ο TD στέλνει τις απαιτούμενες προσαρμογές (offsets)στους slaves (καλύτερο από το να στέλνει την ώρα ή οποία εξαρτάται από τον χρόνο αποστολής των μηνυμάτων - round trip time) Η ώρα του TD τίθεται σε τακτά χρονικά διαστήματα χειρωνακτικά Αν ο TD αποτύχει, τότε κάποιος άλλος μπορεί να εκλεγεί και να αναλάβει το ρόλο του. 46
Αλγόριθμος Berkeley (a) O TD ρωτάει όλες τις άλλες μηχανές για τις τιμές των ρολογιών τους, αφού τους ενημερώσει για την δική του. (b) Οι μηχανές απαντάνε με μια offset τιμή. (c) Ο TD απαντάει σε όλους για το πώς να ρυθμίσουν τα ρολόγια τους. 47
Πρωτόκολλο Ώρας Δικτύου Το Πρωτόκολλο Ώρας Δικτύου (NTP)ορίζει μια αρχιτεκτονική για μια υπηρεσία συγχρονισμού ρολογιών για το Διαδίκτυο με βάση το UTC. Ιδιότητες ανοχή σε διακοπές στην επικοινωνία (λόγω δικτύου) ακόμα και για μεγάλα χρονικά διαστήματα κλιμάκωση για πολύ μεγάλο αριθμό υπολογιστών συχνός συγχρονισμός ανάλογος με την ολίσθηση του ρολογιού Απόκλιση συγχρονισμού: λίγα ms σετοπικόδίκτυο μερικές δεκάδες ms πάνω από συνδέσεις διαδικτύου 48
Ιεραρχικό δίκτυο εξυπηρετών NTP Primary Servers συνδεδεµένοι σε UTC πηγές Secondary Servers συγχρονίζονται µε primary servers Υποδίκτυο συγχρονισµού: servers σε στρώµα Ν>1 επικοινωνούν µε servers σε στρώµα Ν-1 Οι εξυπηρετητές φύλλα εκτελούνται στους σταθµούς εργασίας των χρηστών 49
Τρόποι συγχρονισμού NTP Multicast (για γρήγορα LANs, χαμηλή ακρίβεια) Ο server περιοδικά στέλνει την τρέχουσα ώρα του με πολυεκπομπή στα φύλλα του LAN Κάθε παραλήπτης συγχρονίζει το τοπικό του ρολόι υπολογίζοντας και κάποια καθυστέρηση Remote Procedure call (μέτρια ακρίβεια) Ο server αποκρίνεται στα αιτήματα με την τρέχουσα ώρα του Μέθοδος αντίστοιχη με τον αλγόριθμο του Cristian Symmetric mode (υψηλή ακρίβεια) Περιοδική ανταλλαγή μηνυμάτων μεταξύ των εξυπηρετητών, που φέρουν τιμές τοπικών ρολογιών και αποθήκευση αυτής της πληροφορίας για τον σταθμισμένο υπολογισμό τιμών Σε όλες τις περιπτώσεις ανταλλάσσονται UDP μηνύματα ΤοNTP προσπαθεί να εκτιμήσει την απόκλιση των ρολογιών μεταξύ κάθε ζεύγους εξυπηρετητών που ανταλλάσσουν μηνύματα 50
Ανταλλαγή μηνυμάτων μεταξύ ζεύγους NTP εξυπηρετητών offset delay Όταν λαμβάνεται το m φέρει μαζί του και τους χρόνους T i-3, T i-2, T i-1 To o i συνιστάμια εκτίμηση της απόκλισης μεταξύ των δύο ρολογιών και το d i που είναι ο συνολικός χρόνος μετάδοσης των δύο μηνυμάτων, συνιστά ένα μέτρο της ακρίβειας αυτής της εκτίμησης (o i d i /2 ο o i + d i /2). Ο NTP server εφαρμόζει ένα φίλτρο σε διαδοχικά ζευγάρια < o i, d i > (αποθηκεύει τα 8 τελευταία) Χρησιμοποιεί το o i με το μικρότεροd i (μικρότερο delay καλύτερη ακρίβεια) 51
ΛΟΓΙΚΑΡΟΛΟΓΙΑ 52
Αδυναμίες φυσικών ρολογιών Ένα ΚΣ γενικά χαρακτηρίζεται από: την απουσία καθολικού φυσικού ρολογιού την αδυναμία απόλυτου συγχρονισμού μεταξύ των φυσικών ρολογιών (συγχρονισμός με περιορισμένη ακρίβεια) Κατά συνέπεια, δεν μπορούμε να χρησιμοποιήσουμε τον φυσικό χρόνο για να καθορίσουμε απόλυτα τη διάταξη (χρονική/λογική) ενός οποιουδήποτε ζεύγους συμβάντων που συμβαίνουν μέσα στο ΚΣ 53
Παραδείγματα αδυναμιών φυσικών ρολογιών Δύο διαδοχικά τοπικά συμβάντα μιας διεργασίας μπορεί να λάβουν την ίδια χρονοσφραγίδα (αν και υπάρχει σαφής χρονική/λογική σειρά μεταξύ τους) εξ αιτίας περιορισμένης ακρίβειας (resolution) του φυσικού ρολογιού Η παραλαβή ενός μηνύματος μπορεί να λάβει μικρότερη χρονοσφραγίδα από την αποστολή του εξ αιτίας μη επαρκούς συγχρονισμού (μεγάλο D) των ρολογιών του αποστολέα και του παραλήπτη 54
Διάταξη συμβάντων με λογικά ρολόγια Ο Leslie Lamportτο1978 δημοσίευσε μια επιστημονική εργασία με τίτλο: Time,Clocks, and the Ordering of Events in Distributed Systemsπου έθεσε την θεωρητική βάση για τα λογικά ρολόγια και την χρήση τους για την μερική και καθολική διάταξη συμβάντων σε ένα ΚΣ. 55
Λογική διάταξη Δεν είναι απαραίτητο να διατηρούμε τα ρολόγια συγχρονισμένα Να εξασφαλισθεί ότι όλα τα συμβάντα που συμβαίνουν σε ένα ΚΣ είναι πλήρως διατεταγμένα κατά έναν απολύτως συνεπή τρόπο. Χρειάζεται έναν τρόπο διάταξης των συμβάντων κατά αύξουσα χρονική σειρά, δίνοντας σε κάθε συμβάν e μια χρονοσφραγίδα TS(e) που καθορίζει τη θέση του στην διάταξη αυτή. Για την διάταξη μερικών συμβάντων που συμβαίνουν σε διαφορετικές διεργασίες μπορούμε να χρησιμοποιήσουμε ένα σχήμα που είναι παρόμοιο με την φυσική αιτιότητα (physical causality) και βασίζεται στα εξής: Εάν δύο συμβάντα συνέβησαν στην ίδια διεργασία P i, τότε συνέβησαν με την σειρά που η P i τα παρατήρησε, όπως αποτυπώνεται στην τοπική ιστορία της history(p i ) Οποτεδήποτε στάλθηκε ένα μήνυμα μεταξύ διεργασιών, το γεγονός της αποστολής συνέβη πριν από το γεγονός της λήψης 56
Σχέση «συμβαίνει-πριν» Ο Lamport ονόμασε αυτή τη μερική διάταξη των συμβάντων ως σχέση «συμβαίνει-πριν» Δυαδική σχέση που συμβολίζεται ως και είναι επίσης γνωστή ως σχέσηαιτιώδους διάταξης ή πιθανής αιτιώδους διάταξης Ορίζεται ως εξής: εάν Pi: e i e, τότε e e (συνέπεια τοπικής εκτέλεσης) μήνυμα m, send(m) receive(m)(συνέπεια επικοινωνίας) εάν e, e καιe είναι συμβάντα τέτοια ώστε e e και e e, τότε e e (μεταβατική ιδιότητα) Αν e e, τότε λέμε «ότι το γεγονός e αιτιωδώς προηγείται του γεγονότος e» 57
Σχέση «συμβαίνει-πριν» Μπορούμε να δούμε ότι e e, αν στο διάγραμμα χώρου-χρόνου του υπολογισμού υπάρχει μονοπάτι που να συνδέει το e με το e (π.χ. a f) 58
Λογικά ανεξάρτητα συμβάντα Η σχέση δεν μπορεί να συσχετίσει όλα τα συμβάντα σε ένα ΚΣ (μερική διάταξη) Αν κανένα από τα e e και e e δεν ισχύει, τότε λέμε ότι τα γεγονότα eκαι e είναι λογικά ανεξάρτητα (αναφέρονται επίσης και ως ταυτόχροναή σύνδρομα) και γράφουμε e e (π.χ. a e) Για οποιαδήποτε δύο συμβάντα a και b σε ένα ΚΣ, ισχύει είτε a b, b a, ή a b Συμβάνταπου λαμβάνουν χώρα στην ίδια διεργασία δεν μπορεί να είναι λογικά ανεξάρτητα μεταξύ τους Το ότι δύο συμβάντα είναι λογικά ανεξάρτητα δεν συνεπάγεται το ότι έλαβαν χώρα παράλληλα Το ότι ένα γεγονός έλαβε χώρα χρονικά πριν από ένα άλλο δεν συνεπάγεται ότι προηγείται λογικά από αυτό (το αντίστροφο όμως ισχύει) 59
Συνθήκη του ρολογιού Υποθέτουμε ότι το ΚΣ διαθέτει ένα καθολικό φυσικό ρολόι πραγματικού χρόνου RC. Συμβολίζουμε RC(e)την τιμή του καθολικού ρολογιού όταν συνέβη το γεγονός e,και χρησιμοποιούμε την τιμή αυτή σαν χρονοσφραγίδα TS(e) του e. H συνθήκη του ρολογιού εκφράζει ότι εάν ένα συμβάν e συμβαίνει πριν (προηγείται λογικά) από ένα άλλο συμβάν e, τότε RC(e)< RC(e ): e e RC(e)<RC(e ) 60
Λογικό ρολόι Lamport Απουσία καθολικού φυσικού ρολογιού οlamport πρότεινε έναν απλό μηχανισμό, με τον οποίον η σχέση «συμβαίνειπριν» μπορεί να εκφραστεί αριθμητικά και τον οποίον ονόμασε λογικό ρολόι. Ένα λογικό ρολόι είναι ένας μονότονα αυξανόμενος μετρητής στο λογισμικό Ο μετρητής δεν χρειάζεται να έχει καμιά ιδιαίτερη σχέση με κάποιο φυσικό ρολόι Κάθε διεργασία P i διατηρεί το δικό της λογικό ρολόι LC i που αρχικοποιείται στο 0 Hτιμή του λογικού ρολογιούlc i τη στιγμή που συνέβη το γεγονός e στην P i, χρησιμοποιείται σαν χρονοσφραγίδα TS(e) για το γεγονός αυτό [TS(e)=LC(e)] 61
Κανόνες υλοποίησης λογικού ρολογιού Προκειμένου να τηρείται η σχέση «συμβαίνει-πριν» μεταξύ των συμβάντων, η ενημέρωση του λογικού ρολογιού κάθε διεργασίας P i γίνεται ως εξής: αν συμβεί ένα εσωτερικό συμβάν ή ένα συμβάν send(m) στη διεργασία P i, τότε LC i += 1 μαζί με κάθε μήνυμα mπου στέλνει η διεργασία P i μεταφέρει και τη χρονοσφραγίδα TS(m) του συμβάντος send(m) αν συμβεί ένα συμβάν receive(m) στη διεργασία P i τότε : LC i = max{lc i, TS(m)} + 1 62
Παράδειγμα χρονοσφραγίδων Lamport 2 4 ζεύγος συμβάντων για τα οποία e e, τα λογικά ρολόγια που σχετίζονται με αυτά είναι τέτοια, ώστε LC(e) <LC(e ) (ικανοποιείται η συνθήκη ρολογιού) Το αντίστροφο δεν ισχύει (π.χ. LC(e) <LC(d), αλλά e d) 63
Χρονοσφραγίδες Lamport? 64
Χρονοσφραγίδες Lamport 65
Ολική διάταξη συμβάντων Με το λογικό ρολόι είναι πιθανό δύο συμβάντα eκαι e που συμβαίνουν σε δύο διαφορετικές διεργασίες και που ΔΕΝ συνδέονται με την σχέση «συμβαίνει-πριν» να έχουν τις ίδιες χρονοσφραγίδες (μερική διάταξη) Για να επιτύχουμε ολική διάταξη βάσει της σχέσης «συμβαίνει-πριν» (συμβολίζεται =>) ο Lamport πρότεινε τη χρήση των αναγνωριστικών των διεργασιών για τον υπολογισμό των χρονοσφραγίδων των συμβάντων που συμβαίνουν σε αυτές Για να έχουμε ολική διάταξη των συμβάντων ενός ΚΣ εάν a είναι οποιοδήποτε συμβάν της διεργασίας P i και bείναι οποιοδήποτε συμβάν της διεργασίαςp j τότε : a=>b iff είτεlc i (a)<lc j (b) είτεlc i (a)=lc j (b) και i < j 66
Χρονοσφραγίδες Lamport ολικής διάταξης Η διάταξη θα είναι (1,1), (1,3), (2,1), (3,2),(4, 2) και (5, 3) 67
Αδυναμία ρολογιών Lamport Είδαμε πως με τα ρολόγια Lamport ικανοποιείται η συνθήκη ρολογιού εάν e e τότε LC(e)<LC(e ) Όμως το αντίστροφο δεν είναι απαραίτητα αληθές, όταν τα συμβάντα εμφανίζονται σε διαφορετικές διεργασίες εάν για παράδειγμα xκαι yείναι συμβάντα σε διαφορετικές διεργασίες και LC(x)<LC(y), τότε δεν ισχύει απαραίτητα ότι x y Τα συμβάντα xκαι yμπορεί να έχουν αιτιώδη συνάφεια, μπορεί όμως και όχι (π.χ.στο παρακάτω σχήμα LC(e)<LC(b), αλλά e b) Άρα, τα ρολόγια Lamportμπορεί να χρησιμοποιηθούν για να εντοπιστούν πιθανές σχέσεις happened-before, αλλά αδυνατούν να αποτυπώσουν την αιτιότητα ή ανεξαρτησία μεταξύ δύο οποιοδήποτε συμβάντων. 2 4
Διανυσματικά ρολόγια Οι Mattern και Fidge πρότειναν τα διανυσματικά ρολόγια προκειμένου να ξεπεραστεί η αδυναμία των λογικών ρολογιών. Για να εντοπίσουμε σχέσεις λογικής εξάρτησης, αρκεί να γνωρίζουμε το πλήθος των συμβάντων που προηγούνται λογικά ενός συμβάντος e σε κάθε διεργασία του συστήματος. Ένα διανυσματικό ρολόι για ένα σύστημα nδιεργασιώνείναι ένας πίνακας ακεραίων VC μεγέθους n. Σε κάθε P i χρησιμοποιούμε διανυσματικό ρολόι VC i [], για να κατασκευάζουμε τις χρονοσφραγίδες των τοπικών της συμβάντων, όπου VC i [k]καταγράφει τοναριθμότων συμβάντων πουέλαβανχώραστηνp k και προηγούνται λογικά των επόμενων συμβάντων που θα λάβουν χώρα στην P i 69
Υλοποίηση διανυσματικών ρολογιών Αρχικοποίηση αρχικά VC i [j]=0 για κάθε διεργασία P i και j Τοπική εκτέλεση αν συμβεί ένα εσωτερικό συμβάν ή ένα συμβάν send(m) στη διεργασία P i, τότε VC i [i]+=1 Αποστολή μηνύματος μαζί με κάθε μήνυμα mπου στέλνει η διεργασία P i μεταφέρει και τη χρονοσφραγίδα TS(m)του συμβάντος send(m) Παραλαβή μηνύματος αν συμβεί ένα συμβάν receive(m)στη διεργασία P i, τότε VC i [j]=max{vc i [j],ts(m)[j]}, j, και VC i [i]+=1 70
Σύγκριση διανυσματικών χρονοσφραγίδων Ισότητα TS1=TS2 i: TS1[i]=TS2[i] Ανισότητα TS1<TS2 i: TS1[i]<TS2[i] j, j i : TS1[j]<=TS2[j] Αδυναμία σύγκρισης TS1 TS2 i,j: TS1[i]<TS2[i] TS1[j]>TS2[j] ή TS1 TS2!TS1<TS2!TS1>TS2!TS1=TS2 71
Ισχυρή συνθήκη ρολογιού Τα διανυσματικά ρολόγια ικανοποιούν τη λεγόμενη ισχυρή συνθήκη ρολογιού: e e VC(e)<VC(e ) Δοθέντων των διανυσματικών χρονοσφραγί- δωνδύοσυμβάντωνeκαιe καιχωρίςκάποια άλλη πληροφορία, μπορούμε να συμπεράνουμε κατά πόσο αυτά είναι: λογικά ανεξάρτητα TS(e) TS(e ) e e ποιό συμβάν προηγείται λογικά TS(e)<TS(e ) e e 72
Παράδειγμαδιανυσματικών χρονοσφραγίδων Για το παράδειγμα ισχύουν: VC(a) < VC(f)και άρα a f VC(c) VC(e) και άρα c e 73
Παράδειγμαδιανυσματικών χρονοσφραγίδων 74
Παράδειγμαδιανυσματικών χρονοσφραγίδων 75