Διαφάνειες διάλεξης σε μορφή PDF

Σύνοψη Μαθήµατος
Κατανεµηµένα Συστήµατα Ι
Μάθηµα Βασικής Επιλογής,
Χειµερινού Εξαµήνου
Τοµέας Εφαρµογών και Θεµελιώσεων
I
Σύγχρονα Κατανεµηµένα Συστήµατα
I
Ασύγχρονα Κατανεµηµένα Συστήµατα
I
I
I
Ιωάννης Χατζηγιαννάκης
I
Βυζαντινά Σφάλµατα
I
Το δίκτυο περιέχει ελαττωµατικές διεργασίες που δεν σταµατούν
αλλά συνεχίζουν να συµµετέχουν στην εκτέλεση του αλγορίθµου.
I
Η συµπεριφορά των διεργασιών µπορεί να είναι τελείως
ανεξέλεγκτη.
I
Η εσωτερική κατάσταση µια ελαττωµατικής διεργασίες µπορεί να
αλλάξει κατά την διάρκεια ενός γύρου χωρίς να υπάρχει κάποιο
µήνυµα.
I
Μια ελαττωµατική διεργασία µπορεί να στείλει µηνύµατα µε
οποιοδήποτε περιεχόµενο, ανεξάρτητα από τις οδηγίες του
κατανεµηµένου αλγορίθµου που ϑα έπρεπε να τρέχει.
Μοντελοποίηση
Αυτόµατα Εισόδου / Εξόδου
Βασικοί Κατανεµηµένοι Αλγόριθµοι
I
I
∆ευτέρα, 22 Νοεµβρίου, 2010
Αίθουσα Β3
Βυζαντινά Σφάλµατα
I
Εκλογή Αρχηγού
Κατασκευή Επικαλυπτικών ∆έντρων
Αναζήτηση κατά Εύρος
Βυζαντινοί Στρατηγοί
Συντονισµένη Επίθεση 4 Βυζαντινών Στρατηγών
Τέσσερις στρατηγοί διοικούν από ένα στρατό και Θέλουν να εισβάλουν
συντονισµένα σε µια αντίπαλη πόλη. Ανάµεσα στους στρατηγούς
υπάρχει και ένας προδότης. ΄Ολοι οι πιστοί στρατηγοί πρέπει να
συµφωνήσουν στο ίδιο πλάνο επίθεσης (ή υποχώρησης) ανεξάρτητα
από τις κινήσεις του προδότη. Οι επικοινωνία µεταξύ των αρχηγών
γίνεται µε ανταλλαγή µηνυµάτων. Ο προδότης έχει ελευθερία
κινήσεων.
I
΄Ολες οι λύσεις στο πρόβληµα απαιτούν το πλήθος των διεργασιών
να είναι τουλάχιστον τριπλάσιο των σφαλµάτων – δηλ. n > 3σ .
I
Ονοµάζουµε τέτοιου είδους σφάλµατα ως Βυζαντινά σφάλµατα.
I
I
Μπορούµε να µοντελοποιήσουµε εχθρική συµπεριφορά (π.χ.
ϑέµατα ασφάλειας).
I
Είναι διαφορετικό από τα σφάλµατα τερµατισµού όπου το n και σ
δεν είχαν κάποια σχέση.
Ισως να ακούγεται υπερβολικό, καθότι γνωρίζουµε την τεχνική της
triple-modular redundancy -- δηλ. n > 2σ + 1.
Μοντελοποίηση Ασύγχρονων Συστηµάτων
Αυτόµατα Εισόδου/Εξόδου
Μελετάµε κατανεµηµένα συστήµατα, όπου
1. τα επιµέρους συστήµατα εκτελούν τις εργασίες τους µε
οποιαδήποτε, ακαθόριστη, ταχύτητα σε σχέση µε τα υπόλοιπα
υποσυστήµατα
2. τα κανάλια επικοινωνίας παραδίδουν τα µηνύµατα µε οποιαδήποτε,
ακαθόριστη, ταχύτητα σε σχέση µε τα υπόλοιπα κανάλια
Μοντελοποιούµε αυτή την απροσδιόριστη χρονικά συµπεριφορά
χρησιµοποιώντας αυτόµατα εισόδου/εξόδου
I
Κάθε διεργασία µοντελοποιείτε απο ένα αυτόµατο
εισόδου/εξόδου
I
Κάθε κανάλι επικοινωνίας µοντελοποιείτε απο ένα αυτόµατο
εισόδου/εξόδου
Ιδιότητες Συστήµατος
Μια εκτέλεση του αυτόµατου εισόδου/εξόδου A περιγράφεται :
κ0 , 1 , κ1 , 2 , . . . r , κr , . . .
όπου για κάθε r ≥ 0 ισχύει ότι (κr , r +1 , κr +1 ) ∈ trans (A)
Μέτρηση πολυπλοκότητας
I
Πολυπλοκότητα Επικοινωνίας – συνολικός αριθµός µηνυµάτων που
στάλθηκαν ή παραλήφθηκαν
I
Χρονική πολυπλοκότητα – η χρονική απροσδιοριστία δεν µας
επιτρέπει να µετρήσουµε µε ευκολία
1. Θέτουµε ένα άνω ϕράγµα l στον χρόνο εκτέλεσης κάθε
ενέργειας σε κάποια κατάσταση κ
2. Θέτουµε ένα άνω ϕράγµα d στον χρόνο παράδοσης του
παλαιότερου µηνύµατος που ϐρίσκεται σε κάποιο κανάλι
επικοινωνίας
΄Ενα αυτόµατο εισόδου/εξόδου A αποτελείται από :
I
Τρία σύνολα απο ενέργειες εισόδου in(A) -- ενέργειες εξόδου
out (A), και εσωτερικές ενέργειες int (A)
I
΄Ενα σύνολο καταστάσεων states (A)
I
I
I
Ορισµένες τις ονοµάζουµε αρχικές καταστάσεις start (A)
Ορισµένες τις ονοµάζουµε καταστάσεις τερµατισµού halt (A)
Μια συνάρτηση αλλαγής κατάστασης
trans (A) ⊆ states (A) × (in(A) ∪ out (A) ∪ int (A)) × states (A)
I
I
Για κάθε κατάσταση κ και κάθε ενέργεια Υπάρχει µια µετάβαση (κ, , κ0 ) ∈ trans (A)
΄Ενα Κανάλι ως Αυτόµατο Εισόδου/Εξόδου (1)
I
Συνδέει τις διεργασίες u , v
I
Παραδίδει τα µηνύµατα µε τη σειρά που τα παρέλαβε (FIFO)
I
΄Εστω M το αλφάβητο µηνυµάτων
I
I
Ενέργειες Εισόδου in(Cu,v )
1. send (m)u,v , m ∈ M
Ενέργειες Εξόδου out (Cu,v )
1. receive(m)u,v , m ∈ M
Το κανάλι επικοινωνίας Cu,v
send(m)u,v
Cu,v
receive(m)u,v
΄Ενα Κανάλι ως Αυτόµατο Εισόδου/Εξόδου (2)
I
I
΄Ενα Κανάλι ως Αυτόµατο Εισόδου/Εξόδου (3)
∆ιαφορετικοί τύποι καναλιών :
Καταστάσεις :
1. queue -- µια FIFO ουρά απο στοιχεία του M, αρχικά κενή
Μεταβάσεις :
1. send (m)u,v
I
I
Αξιόπιστα, FIFO -- παραδίδουν όλα τα µηνύµατα µε τη σειρά που τα
παρέλαβαν (αυτόµατο παραδείγµατος)
I
Αναξιόπιστα, FIFO -- Μεταβάσεις :
1. send (m)u,v -- αποτέλεσµα : τοποθέτησε ένα πεπερασµένο αριθµό
αντιγράφων του m στην ουρά queue
αποτέλεσµα -- τοποθέτησε το m στην ουρά queue
2. receive(m)u,v
I
I
I
προϋπόθεση -- m πρώτο στην queue
αποτέλεσµα -- αφαίρεση του πρώτου στοιχείου της queue
1. in-transit-- ένα διάνυσµα απο στοιχεία του M, αρχικά άδειο
Μεταβάσεις :
Πιθανές εκτελέσεις (οι ουρές δίνονται µέσα σε [,])
1. send (m)u,v -- αποτέλεσµα : τοποθέτησε ένα πεπερασµένο αριθµό
αντιγράφων του m στο in-transit
2. receive(m)u,v -- προϋπόθεση : m ∈ in-transit -- αποτέλεσµα:
αφαίρεση ενός αντιγράφου του m από το in-transit
[], send (1)u,v , [1], receive(1)u,v , [], send (2)u,v , [2], receive(2)u,v , []
[], send (1)u,v , [1], send (2)u,v , [12], send (2)u,v , [122], receive(1)u,v ,
[22], send (1)u,v , [221], receive(2)u,v , [21], receive(2)u,v , [1], . . .
Μια ∆ιεργασία ως Αυτόµατο Εισόδου/Εξόδου (1)
I
Εκτελεί ένα κατανεµηµένο αλγόριθµο
συναίνεσης
I
Ενέργειες Εισόδου in(Pu )
I
I
1. init (i )u , i ∈ S
2. receive(i )v ,u , i ∈ S, 1 ≤ v ≤ n, v 6= u
Μια ∆ιεργασία ως Αυτόµατο Εισόδου/Εξόδου (2)
I
Η διεργασία Pu
init(v)u
Μεταβάσεις :
1. init (i )u , i ∈ S
decide(v)u
I
αποτέλεσµα -- val (u ) = i
2. send (i )u,v , i ∈ S
I
I
Ενέργειες Εξόδου out (Pu )
1. decide(i )u , i ∈ S
2. send (m)u,v , i ∈ S, 1 ≤ v ≤ n, v 6= u
προϋπόθεση -- val (u ) == i
αποτέλεσµα -- κανένα
3. receive(i )v ,u , i ∈ S
Pu
I
αποτέλεσµα -- val (v ) = i
4. decide(i )u , i ∈ S
Καταστάσεις :
1. val -- ένα διάνυσµα, δεικτοδοτείται από
{1, . . . , n} στοιχεία του S ∪ null,
αρχικά null
Αναξιόπιστα -- Καταστάσεις :
send(m)u,v
receive(m)v ,u
I
I
προϋπόθεση -- για κάθε v , 1 ≤ v ≤ n : val (v ) 6= null
i = f val (1), . . . , val (n)
αποτέλεσµα -- κανένα
Σύνοψη 6ης ∆ιάλεξης
Προηγούµενο Μάθηµα
Προηγούµενο Μάθηµα
Βυζαντινά Σφάλµατα
Ασύγχρονα Κατανεµηµένα Συστήµατα
Ασύγχρονα Κατανεµηµένα Συστήµατα
∆ιάταξη Γεγονότων
Λογικός Χρόνος
Αµοιβαίος Αποκλεισµός
Σύνοψη Μαθήµατος
Σύνοψη Μαθήµατος
3η ΄Ασκηση
Επόµενο Μάθηµα
∆ιάταξη Γεγονότων (2)
I
I
΄Εστω α µία εκτέλεση του συστήµατος S
Η εκτέλεση α αποτελείτε από µια ακολουθία συµβάντων
∆ιάταξη Γεγονότων (1)
I
I
I
I
I
I
Η ϐασική ιδέα είναι να διατάξουµε τα συµβάντα της α κατά
αύξουσα χρονική σειρά, δίνοντας σε κάθε συµβάν σ µια
χρονοσφραγίδα TS(σ) ∈ T , όπου T είναι ένα πλήρως
διατεταγµένο σύνολο
Υποθέτουµε ότι οι διεργασίες εξελίσσονται σειριακά
Υπάρχει µια αυστηρή διάταξη των συµβάντων σ1u , σ2u , . . . κάθε
διεργασίας Pu όπου σku , σku+1 σηµαίνει ότι το σku συνέβη πριν το
Ορίζουµε Hu = {σ1u , σ2u , . . .} την ‘ιστορία’ της Pu
Η σχέση συνέβη-πριν (1)
I
Θέλουµε να διατάξουµε τα συµβάντα που συµβαίνουν σε
διαφορετικές διεργασίες
I
Η σχέση ‘συνέβη-πριν’
µοντελοποιεί την λογική σχέση
εξάρτησης των συµβάντων
I
Αν σi
I
Η διάταξη ϐασίζεται στα παρακάτω :
σj τότε το συµβάν σi συνέβη πριν το σj
1. αν δύο συµβάντα συνέβησαν στην ίδια διεργασία Pu τότε
συνέβησαν µε τη σειρά που τα παρατήρησε η Pu -- όπως
προκύπτει απο την ιστορία Hu
2. αν η Pu στείλει ένα µήνυµα m στην Pv όπου σiu = send (m) και
σjv = receive(m) τότε η αποστολή του µηνύµατος (συµβάν στον
αποστολέα) προηγείται λογικά της παραλαβής του (συµβάν στον
παραλήπτη)
Το σύνολο T πρέπει να ικανοποιεί µια συγκεκριµένη συνθήκη :
υπάρχει µια ακολουθία t1 , t2 , . . . απο αύξοντα στοιχεία του T
τέτοια ώστε κάθε t ∈ T είναι ϕραγµένο εκ των άνω απο κάποιο ti
Οι χρονοσφραγίδες δεν πρέπει να έχουν κάποια συγκεκριµένη
σχέση µε τον πραγµατικό χρόνο
Ορίζουµε ως συµβάν σ u µια ενέργεια που επιφέρει µια αλλαγή
στην κατάσταση κάποιας διεργασίας Pu
σku+1
I
σ1 , σ2 , . . . , σk , . . .
I
Κάθε διεργασία Pu χαρακτηρίζεται απο την κατάσταση της stateu
I
Η διάταξη ικανοποιεί την Μεταβατική ιδιότητα αν σi
συνέχεια) σj
σk , τότε σi
σk
σj και (στην
Η σχέση συνέβη-πριν (2)
Λογικά Ανεξάρτητα Συµβάντα (1)
I
Η σχέση
ορίζει µόνο µια µερική διάταξη του συνόλου των
συµβάντων της εκτέλεσης του συστήµατος.
I
Μπορεί να υπάρχουν συµβάντα που δεν συνδέονται µεταξύ τους
µέσω της σχέσης
Παράδειγµα εκτέλεσης
Ισχύει ότι
I
I
e 1 .1
e 1 .1
e 2 .2
e3.3 εφόσον
e1.2
e2.3
e3.3
e 3 .1
e 3 .1
e1.4 εφόσον
e 3 .2
e1.4
I
σiu k σjv ⇔
Λογικά Ανεξάρτητα Συµβάντα (2)
Παράδειγµα εκτέλεσης
Ισχύει ότι
I
I
e1.1 k e3.2
e2.1 k e1.4
Σύµφωνα µε το
παράδειγµα εκτέλεσης,
το συµβάν e1.1
πραγµατοποιήθηκε πριν το
e3.2 και το e2.1 πριν το e1.4
ονοµάζονται ‘λογικά ανεξάρτητα’ ή ‘λογικά ταυτόχρονα’:
σiu 6
σjv
∧ σjv 6
σiu
I
Εξ ορισµού, τα συµβάντα που λαµβάνουν χώρα στην ίδια διεργασία
δεν είναι λογικά ανεξάρτητα µεταξύ τους
I
Αν δύο γεγονότα είναι λογικά ανεξάρτητα δεν συνεπάγεται ότι
πραγµατοποιούνται ταυτόχρονα
I
Η λογική ανεξαρτησία δεν συνεπάγεται και απουσία χρονολογικής
σειράς (σύµφωνα µε ένα αντικειµενικό εξωτερικό παρατηρητή του
συστήµατος)
Συζήτηση
I
∆εν µπορούν να σχετιστούν όλα τα συµβάντα σε µια εκτέλεση
ενός κατανεµηµένου συστήµατος µε την σχέση
I
Ας υποθέσουµε ότι το κατανεµηµένο σύστηµα διαθέτει ένα
‘καθολικό ρολόι πραγµατικού χρόνου’ RC
I
Τότε RC(σ) είναι η τιµή του καθολικού ϕυσικού ϱολογιού όταν
πραγµατοποιήθηκε το συµβάν σ
I
Εποµένως αν το σi συνέβη πριν το σj , δηλ.
σi
σj
τότε ισχύει ότι
RC(σi ) < RC(σj )
Λογικός Χρόνος
I
I
Λογικά Ρολόγια Lamport
∆ίνουµε σε κάθε συµβάν σ µια χρονοσφραγίδα TS(σ) ∈ T , όπου
T είναι ένα πλήρως διατεταγµένο σύνολο
Η χρονοσφραγίδα του συµβάντος σi όπου σi
σj πρέπει να έχει
µικρότερη απο την χρονοσφραγίδα του σj δηλ. TS(σi ) < TS(σj )
I
Μπορούµε να σειριοποιήσουµε τα συµβάντα χωρίς να
παραβιάζεται (όχι όµως και να τηρείται απαραίτητα επακριβώς) η
λογική σχέση εξάρτησης τους
I
Μπορούµε να προσφέρουµε ένα περιβάλλον συγχρονισµένης
εκτέλεσης αποφεύγοντας τις δυσκολίες του συγχρονισµού των
ϕυσικών ϱολογιών
I
I
I
I
Ο Lamport προτείνει ένα απλό µηχανισµό για τον ορισµό των
χρονοσφραγίδων που ικανοποιούν την σχέση ‘συνέβη-πριν’
I
Ονόµασε τον µηχανισµό ‘λογικό ρολόι’ (logical clock)
I
΄Ενα λογικό ϱολόι είναι ένας µονότονα αυξανόµενος µετρητής,
του οποίου η τιµή δεν χρειάζεται να έχει κάποια ιδιαίτερη σχέση µε
κάποιο ϕυσικό ϱολόι
I
Κάθε διεργασία Pu διατηρεί το δικό της λογικό ϱολόι LCu
I
χρονική πολυπλοκότητα
πολυπλοκότητα επικοινωνίας
περιοδική εκτέλεση
Ο Αλγόριθµος του Lamport (1)
Χρησιµοποιούµε την τιµή του λογικού ϱολογιού ως χρονοσφραγίδα
για κάθε συµβάν
Ο Αλγόριθµος του Lamport (2)
Αλγόριθµος LamportTime
I
Είναι πιθανό δύο συµβάντα σi και σj που πραγµατοποιούνται σε
δύο διαφορετικές διεργασίες να µην συνδέονται µε την σχέση και
να έχουν τις ίδιες χρονοσφραγίδες
I
΄Οµως δεν επιτρέπουµε σε ένα συµβάν να συµβεί ακριβώς την
ίδια χρονική στιγµή µε κάποιο άλλο
I
Για να ικανοποιούν τα λογικά ϱολόγια του Lamport αυτή την
συνθήκη, µια απλή λύση είναι η χρήση των ταυτοτήτων των
διεργασιών για τον υπολογισµό των χρονοσφραγίδων
I
Εποµένως οι χρονοσφραγίδες των γεγονότων σiu και σiv ϑα είναι
i .u και i .v -- π.χ. 11.15 και 11.306
Οι διεργασίες διατηρούν µια µεταβλητή LC η οποία αρχικά είναι 0. Για κάθε
εσωτερικό συµβάν ή ένα συµβάν send(m) ϑέτουν LC + +. Μαζί µε κάθε
µήνυµα m που στέλνουν οι διεργασίες, επισυνάπτουν την τιµή της µεταβλητής
LC. Μόλις λάβουν ένα µήνυµα m µε χρονοσφραγίδα TS(m) ϑέτουν
LC = max{LC, TS(m)} + 1.
I
Αν για δύο συµβάντα σi και σj ισχύει σi
σj ο αλγόριθµος
LamportTime εξασφαλίζει ότι TS(σi ) < TS(σj )
I
Αν TS(σi ) < TS(σj ) δεν ισχύει αναγκαστικά ότι σi
σj
I
εδώ υποθέτουµε ότι οι διεργασίες διαθέτουν µοναδικές ταυτότητες
Παράδειγµα Εκτέλεσης
Υλοποίηση Αλγόριθµου του Lamport
Αρχική Εκτέλεση
I
∆εδοµένου ενός αυτόµατου P µπορούµε να υλοποιήσουµε τον
αλγόριθµο του Lamport παρόµοια µε τον τρόπο υλοποίησης των
συγχρονιστών
I
Μπορούµε επίσης να ‘επεκτείνουµε’ το P υλοποιώντας τον
αλγόριθµο του Lamport ως LamportTime(P)
2η Προσέγγιση
1η Προσέγγιση
Μετατροπή Εκτέλεσης
P1
P2
C 2 ,1
L1
Αυτόµατο LamportTimeu (1)
C 1 ,2
L (P)
L1 1
L2
Αυτόµατο LamportTimeu (2)
Μεταβάσεις :
Ενέργειες :
I
send (m)u
I
Ενέργειες Εισόδου in(LamportTimeu )
1. send (m)u -- όπου m ένα µήνυµα
2. advanceClocku
I
I
clock++
send(m, clock)
I
Ενέργειες Εξόδου out (LamportTimeu )
advanceClocku
I
I
clocku -- ένα λογικό ϱολόι, αρχικά 0
αποτέλεσµα:
clock++
1. receive (m)u -- όπου m ένα µήνυµα
Καταστάσεις :
αποτέλεσµα:
I
receive (m)u
I
προϋπόθεση:
receive(m, c)
I
αποτέλεσµα:
clock = max(clock, c) + 1
C2,1
C1,2
L (P)
L2 2
Αυτόµατο LamportTime(A)u (1)
Αυτόµατο LamportTime(A)u (2)
Ενέργειες :
I
I
I
΄Ιδιες µε το αυτόµατο A
Αντικαθιστούµε την send (m)u της A µε send (m, c )u
Μεταβάσεις : (συνέχεια)
I
send (m, c)u
Αντικαθιστούµε την receive (m)u της A µε receive (m, c )u
I
΄Ιδιες µε το αυτόµατο A
I
Καταστάσεις :
I
I
I
c = clock + 1
clocku -- ένα λογικό ϱολόι, αρχικά 0
Μεταβάσεις :
Ενέργειες εισόδου/εξόδου/εσωτερικές εκτός από send, receive
I
I
προϋπόθεση:
΄Ιδιες µε send (m)u του αυτόµατου A
αποτέλεσµα:
΄Ιδιες µε send (m)u του αυτόµατου A
clock = c
I
receive (m, c)u
I
προϋπόθεση:
΄Ιδιες µε το αυτόµατο A
αποτέλεσµα:
αποτέλεσµα:
΄Ιδιες µε receive(m)u του αυτόµατου A
clock = max(clock, c) + 1
clock++
Αµοιβαίος Αποκλεισµός
I
Οι διεργασίες διαµοιράζονται ορισµένους κοινούς πόρους
I
Κάποιοι πόροι απαιτούν αποκλειστική πρόσβαση από µία διεργασία
µόνο
I
Το µέρος της διεργασίας που χρειάζεται να χειριστεί τον πόρο
αποκλειστικά ονοµάζεται ‘κρίσιµο τµήµα’ (ΚΤ)
I
Απαιτείται συντονισµένη πρόσβαση
I
Κεντρικοποιηµένα Συστήµατα
I
Το πρόβληµα του Αµοιβαίου Αποκλεισµού ορίστηκε για πρώτη
ϕορά από τον Edsger Dijkstra το 1965
I
Λειτουργικά Συστήµατα Ι, Μάθηµα 5oυ Εξαµήνου, Τοµέας Λογικού
και Υπολογιστών
I
Απαραίτητες ιδιότητες
I
Ασφάλεια (safety) -- µια µόνο από τις διεργασίες µπορεί να
αποκτήσει πρόσβαση στον κοινό πόρο σε ένα ορισµένο χρονικό
διάστηµα
I
Βιωσιµότητα (liveness) -I
I
Χρήση semaphores, συντονιστών . . .
I
αν µια διεργασία επιθυµεί να εισέλθει στο κρίσιµο τµήµα τελικά ϑα
το καταφέρει
αν ο κοινός πόρος δεν χρησιµοποιείται, τότε όποια διεργασία
Ϲητήσει πρόσβαση ϑα πρέπει να την αποκτήσει σε πεπερασµένο
χρονικό διάστηµα
∆ιάταξη (ordering) -- η άδεια εισόδου στο κρίσιµο τµήµα πρέπει
να παραχωρηθεί σύµφωνα µε τη σχέση συνέβη-πριν: οι αιτήσεις
των διεργασιών εξυπηρετούνται µε τη σειρά που έχουν εκδοθεί
Ελάχιστες Υποθέσεις
I
Οι διεργασίες έχουν µοναδικές ταυτότητες
I
Κάθε διεργασία έχει µέρη του κώδικα της µε κρίσιµα τµήµατα
I
Για ευκολία – οι διεργασίες ανταγωνίζονται για ένα µόνο πόρο
I
∆εν υπάρχει κάποιο καθολικό ϱολόι
I
Οι διεργασίες επικοινωνούν µε την ανταλλαγή µηνυµάτων
I
Υποθέτουµε ότι τα κανάλια είναι αξιόπιστα, FIFO
I
Το δίκτυο είναι πλήρες
Ο Αλγόριθµος Coordinator
Κριτήρια Απόδοσης
1. Ορθότητα (Correctness) – οι συνθήκες ασφάλειας, ϐιωσιµότητας
και διάταξης ισχύουν
2. Πολυπλοκότητα Επικοινωνίας (Communication Complexity) –
επεξεργασία των αιτήσεων ελαχιστοποιώντας τον αριθµό
µηνυµάτων
3. Απόκριση (Latency) – ελαχιστοποίηση της καθυστέρησης
εισόδου στο κρίσιµο τµήµα
Χαρακτηριστικά του Αλγόριθµου Coordinator
Αλγόριθµος Coordinator
Υπάρχει µια ϕάση αρχικοποίησης του συστήµατος όπου όλες οι διεργασίες
I
Για την είσοδο µιας διεργασίας στο ΚΤ χρειάζονται 2 µηνύµατα – η
απόκριση του αλγόριθµου αντιστοιχεί στον χρόνο αποστολής δύο
µηνυµάτων ή στο roundtrip delay.
I
Χαµηλή Κλιµάκωση – ο συντονιστής είναι σηµείο συµφόρησης : µια
διεργασία πρέπει να εξυπηρετήσει όλο το σύστηµα
I
Χαµηλή Ανεκτικότητα σε Σφάλµατα – ο συντονιστής είναι µοναδικό
σηµείο αποτυχίας
εκτελούν έναν αλγόριθµο εκλογής αρχηγού – την διεργασία συντονιστή Pc .
Κάθε διεργασία που επιθυµεί να µπει σε ΚΤ στέλνει µια αίτηση στον συντονιστή.
Ο συντονιστής διατηρεί µια ουρά για τις εισερχόµενες αιτήσεις. Εφόσον ο
κοινός πόρος είναι ελεύθερος και η ουρά δεν είναι άδεια, ο συντονιστής
ενηµερώνει την διεργασία που ϐρίσκεται στην αρχή της ουράς να µπει στο ΚΤ.
΄Οταν η διεργασία ϐγει απο το ΚΤ στέλνει ένα µήνυµα εξόδου στον συντονιστή.
I
Λύνει το πρόβληµα : ικανοποιεί και τις 3 συνθήκες
I
Πολύ εύκολη υλοποίηση – 3 είδη µηνυµάτων : request, reply,
release
I
Μετατροπή της λύσης για κεντρικοποιηµένα συστήµατα
I
I
Σε περίπτωση ϐλάβης οι διεργασίες πρέπει να εκλέξουν νέο
συντονιστή
Ο νέος συντονιστής πρέπει να αποκαταστήσει την ουρά των
αιτήσεων διασφαλίζοντας την συνθήκη της ‘∆ιάταξης ’
Ο Αλγόριθµος του Lamport
Χαρακτηριστικά του Αλγόριθµου LamportME
Αλγόριθµος LamportME
Οι διεργασίες διατηρούν ένα τοπικό λογικό ϱολόι σύµφωνα µε τον αλγόριθµο
LamportTime. Οι διεργασίες διατηρούν µια ουρά για τις εισερχόµενες
αιτήσεις. Κάθε διεργασία που επιθυµεί να µπει σε ΚΤ στέλνει µια αίτηση (µε
I
Χρησιµοποιεί 3 είδη µηνυµάτων : request, reply, release
I
Για κάθε αίτηση στέλνονται 3 (n − 1) µηνύµατα
χρονοσφραγίδα) σε όλες τις άλλες διεργασίες, και τοποθετεί την αίτηση στην
I
ουρά της. ΄Οταν µια διεργασία παραλάβει µια αίτηση την προσθέτει στην ουρά
I
και απαντάει επιβεβαιώνοντας την παραλαβή. Η διεργασία µε µικρότερη
I
χρονοσφραγίδα εισέρχεται στο ΚΤ. ΄Οταν η διεργασία ϐγει απο το ΚΤ στέλνει
I
ένα µήνυµα εξόδου σε όλες τις διεργασίες και αφαιρεί την αίτηση απο την
I
ουρά της – αντίστοιχα διαγράφουν και οι άλλες διεργασίες την αίτηση απο την
ουρά που διατηρούν.
I
Πρώτη κατανεµηµένη προσέγγιση – 1978
I
Λύνει το πρόβληµα : ικανοποιεί και τις 3 συνθήκες
Ο Αλγόριθµος των Ricard και Agrawala
n − 1 µηνύµατα για κάθε αίτηση
n − 1 µηνύµατα επιβεβαίωσης
n − 1 µηνύµατα εξόδου
Η απόκριση του αλγόριθµου για µια µόνο αίτηση είναι 2δ + O(l)
Η καθυστέρηση από τη στιγµή που µια διεργασία χρειάζεται να
χρησιµοποιήσει το ΚΤ είναι ανάλογη µε τον χρόνο ανταλλαγής
2 (n − 1) µηνυµάτων
Χαρακτηριστικά του Αλγόριθµου RicardAgrawalaME
Αλγόριθµος RicardAgrawalaME
Οι διεργασίες διατηρούν ένα τοπικό λογικό ϱολόι σύµφωνα µε τον αλγόριθµο
I
Λύνει το πρόβληµα : ικανοποιεί και τις 3 συνθήκες
LamportTime. Οι διεργασίες διατηρούν µια ουρά προτεραιότητας για τις
I
Για κάθε αίτηση στέλνονται 2 (n − 1) µηνύµατα
εισερχόµενες αιτήσεις (σύµφωνα µε τις χρονοσφραγίδες). Κάθε διεργασία
I
που επιθυµεί να µπει σε ΚΤ στέλνει µια αίτηση (µε χρονοσφραγίδα) σε όλες
τις άλλες διεργασίες, και τοποθετεί την αίτηση στην ουρά της. ΄Οταν µια
I
διεργασία παραλάβει µια αίτηση την προσθέτει στην ουρά προτεραιότητας και
I
απαντάει επιβεβαιώνοντας την παραλαβή όταν (α) δεν είναι σε ΚΤ, (ϐ) είναι η
I
µοναδική αίτηση στην ουρά, (γ) είναι η πρώτη αίτηση στην ουρά. Αλλιώς
καθυστερεί την επιβεβαίωση έως ότου ικανοποιηθεί µια απο τις τρεις
συνθήκες. ΄Οταν µια διεργασία λάβει επιβεβαίωση απο όλες τις άλλες
διεργασίες, εισέρχεται στο ΚΤ.
I
Συνδυασµός των µηνυµάτων reply και release
Η απόκριση του αλγόριθµου για µια µόνο αίτηση είναι 2δ + O(l)
Ανεκτικότητα σε Σφάλµατα ;
I
I
n − 1 µηνύµατα για κάθε αίτηση
n − 1 µηνύµατα επιβεβαίωσης
Υπάρχουν n σηµεία αποτυχίας
Κλιµάκωση ;
I
΄Ολες οι διεργασίες πρέπει να εξυπηρετήσουν όλο το σύστηµα
Ο Αλγόριθµος του LeLann
Αλγόριθµος LeLannME
Χαρακτηριστικά του Αλγόριθµου LeLannME
I
Η απόκριση του αλγόριθµου για µια µόνο αίτηση είναι n στη
χειρότερη περίπτωση -- n2 στη µέση περίπτωση
I
Ακόµα και όταν καµία διεργασία δεν ενδιαφέρεται να εισέλθει σε
ΚΤ, το κουπόνι µεταδίδεται
I
Ανεκτικότητα σε Σφάλµατα ;
I
Βελτίωση : (αλγόριθµος του Chandy)
Υπάρχει µια ϕάση αρχικοποίησης του συστήµατος όπου όλες οι διεργασίες
κατασκευάζουν ένα εικονικό δακτύλιο και στην συνέχεια εκτελούν έναν
αλγόριθµο εκλογής αρχηγού. Η εκλεγµένη διεργασία δηµιουργεί ένα ειδικό
µήνυµα ‘κουπόνι’ το οποίο αποστέλλει στον δεξιόστροφο γείτονα στο εικονικό
δακτύλιο. ΄Οταν µια διεργασία παραλάβει το κουπόνι, αν ϑέλει µπορεί να
I
εισέρθει σε ΚΤ, αλλιώς προωθεί το µήνυµα στον δεξιόστροφο γείτονα. Μόλις
ϐγει απο το ΚΤ, προωθεί το µήνυµα στον δεξιόστροφο γείτονα. Κατά αυτόν τον
τρόπο το κουπόνι περιφέρεται στον εικονικό δακτύλιο.
I
I
I
Ο κάτοχος του `κουπονιού΄ µπορεί να εισέρθει στο ΚΤ
I
Η διάταξη των διεργασιών σε δακτύλιο είναι µια ‘λογική διάταξη’,
ανεξάρτητη απο την πραγµατική
Ο Αλγόριθµος του Raymond
I
I
Αποκατάσταση δακτυλίου
Αποκατάσταση κουπονιού
Αποφεύγεται η άσκοπη περιφορά του κουπονιού εφόσον καµία
διεργασία δεν επιθυµεί να εισέλθει σε ΚΤ
∆εν απαιτείται καµία λογική διάταξη
Το κουπόνι µεταβιβάζεται από τη διεργασία που το κατέχει, εφόσον
ζητηθεί
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Αλγόριθµος RaymondME
Παράδειγµα Εκτέλεσης
Υπάρχει µια ϕάση αρχικοποίησης του συστήµατος όπου όλες οι διεργασίες
κατασκευάζουν ένα επικαλυπτικό δέντρο. Η ϱίζα του δέντρου δηµιουργεί ένα
3
ειδικό µήνυµα ‘κουπόνι’. Το κουπόνι διασχίζει τις ακµές του δέντρου στο
µονοπάτι απο την ϱίζα µέχρι τη διεργασία που το Ϲήτησε. Καθώς µεταβιβάζεται
το κουπόνι, η κατεύθυνση των ακµών αλλάζει κατά µήκος του µονοπατιού,
προκειµένου στη νέα ϱίζα του δέντρου να ϐρίσκεται η διεργασία που Ϲήτησε
το κουπόνι. Κάθε διεργασία διατηρεί ένα δείκτη στο µονοπάτι που οδηγεί στη
ϱίζα, καθώς και µια ουρά όπου ϐρίσκονται οι αιτήσεις της ίδιας ή και άλλων
Αρχικό ∆ίκτυο
Το δίκτυο έχει 5 µονάδες, 6 κανάλια
Η διεργασία 1 είναι η ϱίζα του δέντρου.
΄Ολες οι ουρές είναι άδειες
5
4
1
2
διεργασιών που δεν έχουν ακόµα το κουπόνι.
I
Η διάταξη των διεργασιών σε ένα ‘λογικό επικαλυπτικό δέντρο’
µειώνει το πλήθος των µηνυµάτων που ανταλλάσσονται σε
O(log n)
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 4
Η διεργασία 4
I επιθυµεί να εισέλθει σε ΚΤ
Παράδειγµα Εκτέλεσης
I επιθυµεί να εισέλθει σε ΚΤ
I εισάγει την αίτηση στην ουρά της
Παράδειγµα Εκτέλεσης
I εισάγει την αίτηση στην ουρά της
3
I επεξεργάζεται την αίτηση (εφόσον αρχικά η
3
ουρά ήταν άδεια)
I στέλνει µήνυµα αίτησης στην 5
4
5
Η διεργασία 5
4
1
I αποθηκεύει το µήνυµα στην ουρά της
2
4
5
4
4 request
1
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
2
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 4
I επιθυµεί να εισέλθει σε ΚΤ
Παράδειγµα Εκτέλεσης
Η διεργασία 3
Παράδειγµα Εκτέλεσης
I επιθυµεί να εισέλθει σε ΚΤ
I εισάγει την αίτηση στην ουρά της
3
I επεξεργάζεται την αίτηση (εφόσον αρχικά η
I εισάγει την αίτηση στην ουρά της
3
3
ουρά ήταν άδεια)
I στέλνει µήνυµα αίτησης στην 5
4
Η διεργασία 5
5
I αποθηκεύει το µήνυµα στην ουρά της
I επεξεργάζεται την αίτηση (εφόσον αρχικά η
Η διεργασία 1 αποθηκεύει το µήνυµα
4
5
4
4
request
ουρά ήταν άδεια)
I στέλνει µήνυµα αίτησης στην 1
4
4
5
1
5
2
1
2
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 3
Παράδειγµα Εκτέλεσης
I επιθυµεί να εισέλθει σε ΚΤ
ουρά ήταν άδεια)
Η διεργασία 3
3
I εισάγει την αίτηση στην ουρά της
3
3
I επεξεργάζεται την αίτηση (εφόσον αρχικά η
request
ουρά ήταν άδεια)
4
I στέλνει µήνυµα αίτησης στην 5
Παράδειγµα Εκτέλεσης
I επιθυµεί να εισέλθει σε ΚΤ
3
I εισάγει την αίτηση στην ουρά της
I επεξεργάζεται την αίτηση (εφόσον αρχικά η
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
5
4
4, 3
I στέλνει µήνυµα αίτησης στην 5
Η διεργασία 5
4
5
4
4, 3
I αποθηκεύει το µήνυµα στην ουρά της
5
1
2
I η ουρά δεν είναι άδεια – δεν στέλνει κάποιο
µήνυµα στην 1
5
1
2
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 1
Η διεργασία 1
I ϐγαίνει απο το ΚΤ
I επεξεργάζεται την πρώτη αίτηση
I ϐγαίνει απο το ΚΤ
Παράδειγµα Εκτέλεσης
I στέλνει το κουπόνι στην 5
I αντιστρέφει την ακµή
I επεξεργάζεται την πρώτη αίτηση
Παράδειγµα Εκτέλεσης
I στέλνει το κουπόνι στην 5
3
3
I αντιστρέφει την ακµή
3
3
Η διεργασία 5
4
5
4
4, 3
I επεξεργάζεται την πρώτη αίτηση
I στέλνει το κουπόνι στην 4
4
κουπόνι
5
4
6 4, 3
I αντιστρέφει την ακµή
κουπόνι
65
1
2
1
2
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 1
Η διεργασία 4
I ϐγαίνει απο το ΚΤ
I επεξεργάζεται την πρώτη αίτηση
Παράδειγµα Εκτέλεσης
I στέλνει το κουπόνι στην 5
I αντιστρέφει την ακµή
I επεξεργάζεται την πρώτη αίτηση
Παράδειγµα Εκτέλεσης
I εισέρχεται στο ΚΤ
3
3
3
3
Η διεργασία 5
I επεξεργάζεται την πρώτη αίτηση
I στέλνει το κουπόνι στην 4
6 4, 5
4, 5
request
5
4
5
2
1
3
3
I αντιστρέφει την ακµή
4
I επεξεργάζεται την επόµενη αίτηση
I στέλνει µήνυµα αίτησης στην 4
1
2
Η διεργασία 4
I αποθηκεύει το µήνυµα στην ουρά της
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Παράδειγµα Εκτέλεσης Αλγόριθµου RaymondME
Η διεργασία 4
Η διεργασία 4
I επεξεργάζεται την πρώτη αίτηση
Παράδειγµα Εκτέλεσης
I εισέρχεται στο ΚΤ
I ϐγαίνει απο το ΚΤ
3
I ϐγαίνει απο το ΚΤ
I επεξεργάζεται την πρώτη αίτηση
Παράδειγµα Εκτέλεσης
3
3
I επεξεργάζεται την πρώτη αίτηση
I στέλνει το κουπόνι στην 5
I αντιστρέφει την ακµή
I επεξεργάζεται την πρώτη αίτηση
I εισέρχεται στο ΚΤ
3
65
5
4
3
κουπόνι
κουπόνι
I στέλνει το κουπόνι στην 5
I αντιστρέφει την ακµή
5
4
63
Η διεργασία 5
I επεξεργάζεται την πρώτη αίτηση
1
2
I στέλνει το κουπόνι στην 3
I αντιστρέφει την ακµή
1
2
Χαρακτηριστικά του Αλγόριθµου RaymondME
I
Η απόκριση του αλγόριθµου για µια µόνο αίτηση είναι O (log n) -για τυχαίες κατασκευές λογικών δέντρων
I
΄Οταν καµία διεργασία δεν ενδιαφέρεται να εισέλθει σε ΚΤ, το
κουπόνι δεν µεταδίδεται
I
Ανεκτικότητα σε Σφάλµατα ;
I
I
Αποκατάσταση επικαλυπτικού δέντρου
Αποκατάσταση κουπονιού
I
∆εν συµµετέχουν όλες οι διεργασίες – άµεσα – στην απόφαση
επιλογής της διεργασίες που ϑα αποκτήσει πρόσβαση στο ΚΤ
I
Η λογική δοµή παραµένει ακυκλική κατά την εκτέλεση του
αλγόριθµου
Σύνοψη Μαθήµατος
I
Ασύγχρονα Κατανεµηµένα Συστήµατα
I
∆ιάταξη Γεγονότων
I
Λογικός Χρόνος
I
Αµοιβαίος Αποκλεισµός
I
I
I
I
I
Σύνοψη 6ης ∆ιάλεξης
Προηγούµενο Μάθηµα
Προηγούµενο Μάθηµα
Βυζαντινά Σφάλµατα
Ασύγχρονα Κατανεµηµένα Συστήµατα
Ασύγχρονα Κατανεµηµένα Συστήµατα
∆ιάταξη Γεγονότων
Λογικός Χρόνος
Αµοιβαίος Αποκλεισµός
Σύνοψη Μαθήµατος
Σύνοψη Μαθήµατος
3η ΄Ασκηση
Επόµενο Μάθηµα
Βιβλιογραφία (1)
I
1. Κεφάλαιο 2: ∆ιάταξη γεγονότων
2. Κεφάλαιο 3: Αµοιβαίος αποκλεισµός
Σχέση συνέβη-πριν
Λογικά Ρολόγια Lamport
Συγκεντρωτική Λύση
Χρήση Λογικών Ρολογιών
Χρήση Λογικών ∆οµών
Βιβλίο ‘ Κατανεµηµένα Συστήµατα µε Java’’ (Ι.Κ.Κάβουρας,
Ι.Ζ.Μήλης, Γ.Β.Ξυλωµένος, Α.Α.Ρουκουνάκη)
I
Βιβλίο ‘‘Distributed Algorithms" (N.Lynch)
I
Βιβλίο ‘‘Distributed Computing Fundamentals, Simulations, and
Advanced Topics" (H.Attiya, J.Welch)
1. Κεφάλαιο 18: Logical Time
1. Κεφάλαιο 6: Causality and Time -- Μόνο 6.1
Βιβλιογραφία (2)
1o Ερώτηµα
I
Βιβλίο ‘‘Introduction to Distributed Algorithms" (G.Tel)
1. Κεφάλαιο 2: The Model -- Μόνο 2.3
I
Βιβλίο ‘‘Distributed Systems, Concepts and Design" (G.Coulouris,
J.Dollimore, T.Kindberg)
I
Βιβλίο ‘‘Distributed Systems: Principles and Paradigms"
(A.Tanenbaum, M.Steen)
1. Κεφάλαιο 10: Time and Global States -- Μόνο 10.4
2. Κεφάλαιο 11: Coordination and Agreement -- Μόνο 11.2
1. Κεφάλαιο 5: Synchronization -- Μόνο 5.2
2o Ερώτηµα
Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες
συνδεδεµένες µέσω ενός γενικού δικτύου, όπου κάθε διεργασία έχει
µια µοναδική ταυτότητα και γνωρίζει τη διάµετρο του δικτύου. Κάθε
διεργασία u δέχεται ως είσοδο έναν ακέραιο αριθµό iu από το σύνολο
S, δηλ. iu ∈ S. Τροποποιείστε τον αλγόριθµο συναίνεσης FloodSet έτσι
ώστε να λειτουργεί σωστά σε οποιαδήποτε τοπολογία. Αναλύστε την
ορθότητα, χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων.
Αποδείξτε τους ισχυρισµούς σας.
Θεωρείστε ένα σύγχρονο κατανεµηµένο σύστηµα µε n διεργασίες
συνδεδεµένες µέσω ενός πλήρως συνδεδεµένου δικτύου, όπου κάθε
διεργασία έχει µια µοναδική ταυτότητα και γνωρίζει τη δοµή του δικτύου.
Κάθε διεργασία u δέχεται ως είσοδο έναν ακέραιο αριθµό iu από το
σύνολο S, δηλ. iu ∈ S. Τροποποιείστε τον αλγόριθµο συναίνεσης
FloodSet έτσι ώστε αν προκύψουν σ 0 < σ σφάλµατα, τότε όλες οι εν
λειτουργία διεργασίες να αποφασίσουν (χωρίς απαραιτήτως να
τερµατίσουν) στο τέλος του γύρου σ 0 + 2. Αναλύστε την ορθότητα,
χρονική πολυπλοκότητα και πολυπλοκότητα µηνυµάτων. Αποδείξτε τους
ισχυρισµούς σας.
3o Ερώτηµα
Υλοποιείστε στο σύστηµα Shawn έναν αλγόριθµο ϐασισµένο στον BFS ο
οποίος να δέχεται δύο παραµέτρους : AM και MSGS. Οι διεργασίες για
τις οποίες ισχύει id % AM == 0 (όπου id η ταυτότητα της κάθε
διεργασίας) πρέπει να στείλουν στην διεργασία 0 ένα πλήθος από
MSGS µηνύµατα. Κάθε µήνυµα περιέχει ένα τυχαίο ακέραιο. Η
διεργασία 0 συλλέγει όλα τα µηνύµατα και υπολογίζει το άθροισµα.
Μελετήστε την συµπεριφορά του αλγόριθµου στις τοπολογίες που σας
έχουν δωθεί. Μετρήστε την χρονική πολυπλοκότητα και πολυπλοκότητα
επικοινωνίας του αλγορίθµου. Σχολιάστε την συµπεριφορά του
αλγορίθµου.
Τυπικά Θέµατα
I
Παράδωση σε 2 ∆ευτέρες
I
∆ευτέρα, 6 ∆εκεµβρίου
I
Ατοµική ΄Ασκηση
I
Συνεισφέρει 2 ϐαθµούς στον τελικό ϐαθµό
Επόµενο Μάθηµα
I
Καθολικές Καταστάσεις
I
Κατασκευή Καθολικών Καταστάσεων
I
Συνεπή Ολικά Στιγµιότυπα