Αµοιβαίοςαποκλεισµός Εισαγωγή Συγκεντρωτική προσέγγιση Κατανεµηµένη προσέγγιση Αλγόριθµος Lamport Αλγόριθµος Ricart-Agrawala Προσέγγιση µεταβίβασης σκυτάλης Αλγόριθµος LeLann Αλγόριθµος Raymond Αλγόριθµος Chandy Κατανεµηµένα Συστήµατα 03-1
Εισαγωγή Στόχος αµοιβαίου αποκλεισµού Πρόσβαση σε κοινούς πόρους Κοινές µεταβλητές, κοινές δοµές δεδοµένων, κοινά αρχεία Ο κοινός πόρος δεν µπορεί να καταµεριστεί Είναι αδύνατη η χρήση του από δύο διεργασίες ταυτόχρονα Πρόσβαση στον κοινό πόρο Εκτέλεση εντολών κρίσιµης περιοχής (ΚΠ) Σε συστήµατα ενός επεξεργαστή Χρήση σηµατοφορέων, γραµµατέων, κ.λπ. Σε κατανεµηµένα συστήµατα εν υπάρχει κοινό ρολόι εν υπάρχει κοινή µνήµη εν υπάρχει κοινός πυρήνας Κατανεµηµένα Συστήµατα 03-2
Εισαγωγή Γενικές υποθέσεις Κάθε διεργασία έχει διαφορετικό αναγνωριστικό Μία µηχανή ανά διεργασία Επικοινωνία διεργασιών µε µηνύµατα Ανταγωνισµός για έναν µόνο πόρο Όλοι οι επεξεργαστές είναι πλήρως συνδεδεµένοι Βασικές απαιτήσεις αµοιβαίου αποκλεισµού Ασφάλεια (safety):το πολύ µια διεργασία στην ΚΠ Βιωσιµότητα (liveness): µια αίτηση θα ικανοποιηθεί τελικά ε συµβαίνουν αδιέξοδα ε συµβαίνει υποσιτισµός ιάταξη (ordering): εξυπηρέτηση µε τη σειρά Σχέση συνέβη-πριν (happened before) Κατανεµηµένα Συστήµατα 03-3
Κριτήρια επίδοσης Εισαγωγή Πλήθος µηνυµάτων για την είσοδο στην ΚΠ Καθυστέρηση εισόδου στην ΚΠ Συγκεντρωτική προσέγγιση Συντονιστής Κατανεµηµένη προσέγγιση ιάταξης γεγονότων Αλγόριθµος Lamport (1978) Αλγόριθµος Ricart-Agrawala (1981) Μεταβίβασης κουπονιού Τοπολογία δακτυλίου (LeLann, 1977) Τοπολογία δένδρου (Raymond, 1989) Οποιαδήποτε τοπολογία (Chandy, 1982) Κατανεµηµένα Συστήµατα 03-4
Συγκεντρωτικήπροσέγγιση Χρήση συντονιστή για τον έλεγχο πρόσβασης Εκλέγεται από τις διεργασίες του συστήµατος O συντονιστής διατηρεί µια ουρά αναβληµένων αιτήσεων Αλγόριθµος αµοιβαίου αποκλεισµού Όταν η διεργασία p i θέλει πρόσβαση στην ΚΠ Στέλνει <request, i> στον συντονιστή Όταν ο συντονιστής λάβει <request, i> Αν καµία διεργασία δεν είναι στην ΚΠ, στέλνει <reply> Αλλιώς εισάγει την αίτηση στην ουρά Όταν η διεργασία p i λάβει <reply> από εισέρχεται στην ΚΠ Όταν η διεργασία p i βγει από την ΚΠ Στέλνει <release, i>στον συντονιστή Αν η ουρά είναι δεν άδεια, ο συντονιστής στέλνει ένα <reply> Κατανεµηµένα Συστήµατα 03-5
Συγκεντρωτικήπροσέγγιση Παράδειγµα Συντονιστής (p c )και τρεις διεργασίες (,, ) Πολιτική εξυπηρέτησης FIFO Λήψη αιτήσεων: 1, 2, 3 Αρχικά Μετά το 3 Μετά το 4 1 2 5 <release> <reply> <request> Μετά το Μετά το 6 8 4 <request> 3 <request> 8 <reply> p c 6 <reply> 9 <release> 7 <release> Κατανεµηµένα Συστήµατα 03-6
Συγκεντρωτικήπροσέγγιση Απόδοση Ανταλλαγή 3 µηνυµάτων ανά είσοδο Ανταλλαγή 2 µηνυµάτων πριν την είσοδο Η απαίτηση διάταξης δεν καλύπτεται! Πλεονέκτηµα: απλή υλοποίηση Μειονέκτηµα: αποτυχία συντονιστή Ανίχνευση αποτυχίας Εκλογή νέου συντονιστή Ανακατασκευή της ουράς Καθυστέρηση <reply> Αποτυχία του συντονιστή ή άλλες διεργασίες στην ΚΠ; Λύση: ενδιάµεση αποστολή µηνύµατος <permission_denied> Κατανεµηµένα Συστήµατα 03-7
Κατανεµηµένηπροσέγγιση Πλήρως κατανεµηµένοι αλγόριθµοι Χρησιµοποιούν χρονοσφραγίδες για διάταξη Κάθε διεργασία παρακολουθεί τις εκκρεµείς αιτήσεις Αλγόριθµος Lamport Κάθε διεργασία ειδοποιεί όλες τις άλλες πριν εισέλθει στην ΚΠ Μήνυµα request Για να εισέλθει στην ΚΠ πρέπει να πάρει απαντήσεις από όλες Μήνυµα reply Όταν βγει από την ΚΠ στέλνει µηνύµατα σε όλες Μήνυµα release Τα µηνύµατα διατηρούνται σε ουρά αιτήσεων Ταξινόµηση µε βάση χρονοσφραγίδες Αλγόριθµος Lamport για τις χρονοσφραγίδες Κατανεµηµένα Συστήµατα 03-8
Αλγόριθµος Lamport Έστωότι η p i θέλει να εισέλθει στην ΚΠ Αποστολή <request, i, TS> σε όλες τις διεργασίες Και στον εαυτό της! Λήψη <request, i, TS> από την p j Τοποθετεί την αίτηση στην ουρά µε βάση το TS Αποστολή <reply> στην p j Η p i εισέρχεται στην ΚΠ αν και µόνο αν Έχει λάβει <reply> από όλες τις υπόλοιπες διεργασίες Η αίτησή της είναι στην κορυφή της ουράς της Όταν η p i βγαίνει από την ΚΠ Στέλνει <release, i> σε όλες τις διεργασίες Και στον εαυτό της! Λήψη <release, i> από την p j Αφαιρεί τηναντίστοιχη αίτηση από την ουράτης Κατανεµηµένα Συστήµατα 03-9
Αλγόριθµος Lamport 10 8 <reply> <reply> 8 <reply> Παράδειγµα : χρονοσφραγίδα 8 :χρονοσφραγίδα 10 <release> 10 <reply> p p 1 2 <release> <release> <release> Κατανεµηµένα Συστήµατα 03-10
Αλγόριθµος Lamport Βελτίωση του αλγορίθµου Η p i στέλνει µήνυµα µε TS t i Η p j στέλνει µήνυµα µε TS t j H p j δεν χρειάζεται να στείλει replyαν t i < t j Η p i ξέρει ότι η p j ακολουθεί Έστω ότι η p i έλαβε m αιτήσεις µε µεταγενέστερο TS Αρκεί να λάβει reply από τις άλλες n-m-1 διεργασίες p i t i request reply p j request Κατανεµηµένα Συστήµατα 03-11 t j
Αλγόριθµος Lamport Γιατί δεν αφαιρούµε όλα τα reply; είχνει ότι το µήνυµα έχει µπει στην ουρά των άλλων Η µεταγενέστερη αίτηση σηµαίνει ότι η ουρά έχει ενηµερωθεί Ικανοποίηση απαιτήσεων Ασφάλεια: όλοι έχουν την ίδια σειρά στις ουρές Εκεί χρησιµεύουν τα reply Βιωσιµότητα: κάθε αίτηση τελικά εξυπηρετείται Η τρέχουσα διεργασία εξέρχεται από την ΚΠ Η επόµενη διεργασία στην ουρά εισέρχεται στην ΚΠ ιάταξη: οι αιτήσεις εξυπηρετούνται µε τη σειρά Χρήση των χρονοσφραγίδων Lamport Πολυπλοκότητα: 3(n-1)ανά είσοδο Καθυστέρηση 2(n-1) πριν την είσοδο Κατανεµηµένα Συστήµατα 03-12
Αλγόριθµος Ricart-Agrawala Παραλλαγή αλγόριθµου Lamport Απάντηση και αποδέσµευση µε ένα µόνο µήνυµα <OK> Κάθε διεργασία διατηρεί µία ουρά Η ουρά είναι ταξινοµηµένη µε βάση τις χρονοσφραγίδες Έστω ότι η p i θέλει να εισέλθει στην ΚΠ Αποστολή <request, i, TS> σε όλες τις διεργασίες Όχι στον εαυτό της Όταν λάβει n-1 µηνύµατα OK τότε εισέρχεται στην ΚΠ Όταν βγει από την ΚΠ στέλνει OKσε όσες είναι στην ουρά της ιαγράφει όλα τα µηνύµατα από την ουρά της Έστω ότι η p j λαµβάνει µία αίτηση από την p i Αν βρίσκεται στην ΚΠ δεν απαντάει Εισάγει την αίτηση στην ουρά της Κατανεµηµένα Συστήµατα 03-13
Αλγόριθµος Ricart-Agrawala Έστωότι η p j λαµβάνει µία αίτηση από την p i Αν δεν βρίσκεται στην ΚΠ Αν δεν θέλει να εισέλθει στην ΚΠ στέλνει OK Αν θέλει να εισέλθει στην ΚΠτότε Αν TS i < TS j τότε στέλνει <OK> Αλλιώς τοποθετεί το µήνυµα στην ουρά της ιαφοροποίηση από αλγόριθµο Lamport Ουρά έχουν µόνο οι διεργασίες που ανταγωνίζονται Οι αιτήσεις απαντώνται µόνο την κατάλληλη στιγµή Κόστος αλγορίθµου 2(n-1) µηνύµατα για κάθε είσοδο στην ΚΠ Ακριβώς ίδιο πλήθος µηνυµάτων πριν την είσοδο στην ΚΠ Κατανεµηµένα Συστήµατα 03-14
Αλγόριθµος Ricart-Agrawala Παράδειγµα : βρίσκεται στην ΚΠ : χρονοσφραγίδα 6 : χρονοσφραγίδα 4 4 <OK> 6 4 6 <OK> <OK> 4 6 <OK> <OK> <OK> Κατανεµηµένα Συστήµατα 03-15
Αλγόριθµος Ricart-Agrawala Ισχύουν οι απαιτήσεις; Ασφάλεια: µόνο η διεργασία µε το µικρότερο TS έχει όλα τα OK Βιωσιµότητα: αλυσίδα αναµονής διεργασιών µε βάση τα TS ιάταξη: η είσοδος στην ΚΠ γίνεται µε βάση τα TS Κατανεµηµένοι ή συγκεντρωτικοί αλγόριθµοι; Ο κατανεµηµένος είναι χειρότερος! Έχει πολλά σηµεία αποτυχίας (κάθε διεργασία) Όλοι έχουν τόσο φόρτο όσο ο συντονιστής Κάθε διεργασία πρέπει να γνωρίζει όλες τις άλλες Γιατί ασχολούµαστε λοιπόν; Υπάρχει (τουλάχιστον) ένας κατανεµηµένος αλγόριθµος Υπάρχουν και πιο γρήγορες λύσεις Κατανεµηµένα Συστήµατα 03-16
Προσέγγισηµεταβίβασης σκυτάλης Αλγόριθµοι µεταβίβασης σκυτάλης Χρήση ενός ειδικού µηνύµατος: σκυτάλη (token) Είσοδος στην ΚΠ µόνο αν έχουµε τη σκυτάλη Πιθανό µε κάποια λογική οργάνωση των διεργασιών ένδρο ή δακτύλιος Αλγόριθµος LeLann Λογική διάταξη των διεργασιών σε δακτύλιο Η σκυτάλη µεταδίδεται από διεργασία σε διεργασία Μετάδοση πάντα στην επόµενη στο δακτύλιο Όταν η p i λαµβάνει τη σκυτάλη Αν θέλει να µπει στην ΚΠ δεσµεύει τη σκυτάλη Μόλις βγει από την ΚΠ µεταβιβάζει τη σκυτάλη Αλλιώς τη µεταβιβάζει άµεσα στην επόµενη Κατανεµηµένα Συστήµατα 03-17
Αλγόριθµος LeLann Απαιτήσεις αµοιβαίου αποκλεισµού Ασφάλεια: µόνο ο κάτοχος της σκυτάλης µπαίνει στην ΚΠ Βιωσιµότητα: τελικά όλοι παίρνουν τη σκυτάλη Σε κάθε λήψη σκυτάλης η διεργασία µπαίνει µία φορά στην ΚΠ ιάταξη: µε όποια σειρά επιβάλλει η σκυτάλη Απόδοση 1 µηνύµατα ανά είσοδο στην ΚΠ 0 N-1 µηνύµατα καθυστέρηση µέχρι να µπει στη ΚΠ Απώλεια σκυτάλης Εκλογή αρχηγού για παρακολούθηση σκυτάλης Στέλνει περιοδικά µήνυµα <who has the token> Όποιος την έχει θέτει ένα πεδίο στη µήνυµα Αν το µήνυµα επιστρέψει χωρίς απάντηση, νέα σκυτάλη Κατανεµηµένα Συστήµατα 03-18
Αποτυχία διεργασίας Αλγόριθµος LeLann Αποτυχία ολόκληρου του συστήµατος Ο δακτύλιος έχει αποσυνδεθεί Χρήση µηνύµατος <acknowledgement> Στέλνεται στην προηγούµενη µε τη λήψη της σκυτάλης Αν δεν λάβει επιβεβαίωση, στέλνει τη σκυτάλη παραπέρα Πρέπει να γνωρίζει µερικές επόµενες Αλγόριθµος Chandy εν εξαρτάται από την τοπολογία Υποθέτει όµως ότι γνωρίζουµε όλες τις διεργασίες! Η σκυτάλη µεταβιβάζεται µόνο όταν πρέπει Η σκυτάλη περιέχει την ιστορία εισόδου στις ΚΠ Αντικαθιστά τη λογική διάταξη των διεργασιών Κατανεµηµένα Συστήµατα 03-19
Αλγόριθµος Chandy Μορφή σκυτάλης Η σκυτάλη είναι ένα διάνυσµα F = (f 1, f 2,, f N ) f i = πόσες φορές η p i µπήκε στην ΚΠ Κάθε διεργασία διατηρεί µια ουρά αιτήσεων H p i θέλει να µπει στην ΚΠ Στέλνει <request p i, m i >στις άλλες διεργασίες Περιµένει το κουπόνι Η p j λαµβάνει <request p i, m i > Αν δεν έχει τη σκυτάλη εισάγει την αίτηση στην ουρά της Αν έχει τη σκυτάλη Αν δεν είναι σε ΚΠ στέλνει τη σκυτάλη στην p i Αν είναι σε ΚΠ εισάγει την αίτηση στην ουρά της Κατανεµηµένα Συστήµατα 03-20
Αλγόριθµος Chandy Η p i λαµβάνει τη σκυτάλη Θέτει f i = m i στη σκυτάλη Μπαίνει στη ΚΠ Η p i ολοκληρώνει την εκτέλεση της ΚΠ Αν η ουρά αιτήσεων είναι κενή Κρατάει τη σκυτάλη µέχρι να λάβει νέα αίτηση Αν η ουρά αιτήσεων δεν είναι κενή Εξάγει την πρώτη αίτηση <request p j, m j > από την ουρά Εάν m j > f j στέλνει το κουπόνι στην p j Αλλιώς αγνοεί την αίτηση και επαναλαµβάνει Οι αιτήσεις αυτές είναι παλιές Πολυπλοκότητα: 0 έως n µηνύµατα Και για είσοδο, και για όλη τη διαδικασία Κατανεµηµένα Συστήµατα 03-21
Αλγόριθµος Raymond Κατάλληλος για διεργασίες οργανωµένες σε δένδρο Η σκυτάλη βρίσκεται πάντα στη ρίζα Οι ακµές δείχνουν πάντα προς τη ρίζα Όταν µεταβιβάζεται η σκυτάλη, αντιστρέφει τις ακµές Ο νέος κάτοχος της σκυτάλης γίνεται ρίζα Κάθε διεργασία διατηρεί µια ουρά εκκρεµών αιτήσεων Η p i θέλει να µπει στη ΚΠ Εισάγει την αίτησή της στην ουρά της Αν η ουρά της ήταν κενή στέλνει <request p i > στην γειτονική της Η p j λαµβάνει <request p i >και δεν είναι η ρίζα Εισάγει την αίτηση στην ουρά Αν η ουρά ήταν κενή στέλνει <request p j > στην γειτονική της Ακριβώς όπως παραπάνω Κατανεµηµένα Συστήµατα 03-22
Αλγόριθµος Raymond Η p j λαµβάνει <request p i > και είναι η ρίζα Αν βρίσκεται στην ΚΠ εισάγει το µήνυµα στην ουρά της Αν δεν βρίσκεται στην ΚΠ Αντιστρέφει την ακµή από όπου πήρε την αίτηση Στέλνει τη σκυτάλη στην αντεστραµµένη ακµή Η p j λαµβάνει τη σκυτάλη Εξάγει την αίτηση p k από την κεφαλή της ουράς της Αν η p k είναι ο εαυτός της εισέρχεται στην ΚΠ Αν η p k δεν είναι ο εαυτός της Αντιστρέφει την ακµή προς την p k Στέλνει τη σκυτάλη στην αντεστραµµένη ακµή Αν η ουρά της δεν είναι άδεια στέλνει <request p j > προς την p k Ουσιαστικά ζητάει τη σκυτάλη για λογαριασµό άλλων Κατανεµηµένα Συστήµατα 03-23
Αλγόριθµος Raymond H p j βγαίνει από την ΚΠ Aν η ουρά της δεν είναι άδεια Εξάγει την αίτηση p k από την κεφαλή της ουράς της Αντιστρέφει την ακµή προς την p k Στέλνει τη σκυτάλη στην αντεστραµµένη ακµή Αν η ουρά της δεν είναι άδεια στέλνει <request p j > προς την p k Απαιτήσεις αµοιβαίου αποκλεισµού Ασφάλεια: το κουπόνι βρίσκεται µόνο στην ρίζα Βιωσιµότητα: ακυκλική δοµή δένδρου ιάταξη: επιβάλλεται από τη δοµή του δένδρου Πολυπλοκότητα: ανάλογη του logn Υποθέτουµε τυχαία κατασκευή δένδρου Τόση είναι η µέση απόσταση δύο κόµβων Κατανεµηµένα Συστήµατα 03-24
Αλγόριθµος Raymond Παράδειγµα Αρχικά σκυτάλη στην p1 Η θέλει να µπει στην ΚΠ Η θέλει να µπει στην ΚΠ Η τις εκπροσωπεί p 6 p 7 p 6 p 7 Κατανεµηµένα Συστήµατα 03-25
Αλγόριθµος Raymond p 6 p 7 p 6 p 7 p 6 p 7 p 6 p 7 Κατανεµηµένα Συστήµατα 03-26