Εντοπισμός αδιεξόδου Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr
Αδιέξοδο σε κατανεμημένο σύστημα Αδιέξοδο: «κυκλική» και ατέρμονη αναμονή μεταξύ δύο ή περισσοτέρων διεργασιών Το πρόβλημα υφίσταται ήδη σε συμβατικό σύστημα Μπορεί να εντοπιστεί εύκολα από το λειτουργικό (ή όποιο λογισμικό διαχειρίζεται τους εν λόγω πόρους) Το πρόβλημα (προφανώς) υφίσταται και σε ένα κατανεμημένο σύστημα O εντοπισμός δεν είναι πάντα εύκολος/προφανής Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr
Μοντέλο εργασίας Πρόσβαση/χρήση πόρων υπό αμοιβαίο αποκλεισμό Οι διεργασίες πρέπει να ζητάνε και να λαμβάνουν άδειες πρόσβασης για τους πόρους που χρειάζονται Κάθε πόρος ζητείται ξεχωριστά Οι άδειες δίνονται από αντίστοιχους διαχειριστές ένας διαχειριστής για όλο το σύστημα ή ανά κόμβο ή ανά πόρο Μια διεργασία μπορεί να ζητήσει επιπλέον πόρους, την στιγμή που ήδη χρησιμοποιεί κάποιους πόρους Μια διεργασία μπλοκάρει μέχρι να λάβει άδεια για τον συγκεκριμένο πόρο που ζητά Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr
<REQ,,R> ζητά άδεια για R Pm (R free) <running> λαμβάνει άδεια για R Pm (R taken) <ΟΚ> <running> (R) <FREE,R> επιστρέφει άδεια για R Pm <running> (R free) Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr
Κεντρικοποιημένος εντοπισμός αδιεξόδου Η διαχείριση όλων των πόρων του συστήματος γίνεται από μια μοναδική διεργασία Pm Η Pm διατηρεί έναν καθολικό γράφο χρήσης πόρων και αναμονής διεργασιών, με βάση τις άδειες που έχει δώσει και τις αιτήσεις που λαμβάνει Αν σχηματιστεί κύκλος στον γράφο, υπάρχει αδιέξοδο Απλή λύση, προφανής ορθότητα Αυξημένη επικοινωνία (καθυστέρηση πρόσβασης) παρ ότι μπορεί ποτέ να μη δημιουργηθεί αδιέξοδο Μοναδικό σημείο βλάβης / συμφόρησης Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
(,,R3) Pm Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
(,,R3) Pm <REQ,,> Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
(,,R3) Pm <OK> Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
(,,R3) Pm <REQ,,> Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
(,,R3) Pm <OK> Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr
(,,R3) Pm <REQ,,> Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr
(,,R3) Pm Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr
(,,R3) Pm <REQ,,> Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr
(,,R3) Pm Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr
(,,R3) Pm <REQ,,> Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr
mgr(,,r3) Pm Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr
mgr(,,r3) Pm Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr
Συγκεντρωτικός εντοπισμός αδιεξόδου Υπάρχουν πολλοί διαχειριστές, καθένας υπεύθυνος μόνο για ένα υποσύνολο των πόρων του συστήματος Κάθε διαχειριστής κρατά ένα γράφο χρήσης/αναμονής, με βάση τον οποίο μπορεί να εντοπίσει τοπικά αδιέξοδα Για να εντοπιστούν τυχόν κατανεμημένα αδιέξοδα, οι διαχειριστές στέλνουν τους τοπικούς τους γράφους σε μια διακεκριμένη διεργασία Pm που κατασκευάζει τον καθολικό γράφο αναμονής για όλο το σύστημα αν σχηματιστεί κύκλος, τότε ίσως υπάρχει αδιέξοδο Μέρος της επικοινωνίας για λήψη αδειών γίνεται τοπικά Απαιτείται όμως επιπλέον επικοινωνία για την ανανέωση του καθολικού γράφου στην διεργασία Pm Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr
Pm (,R3) <REQ,,> () Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr
Pm (,R3) <OK> () Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr
Pm <OK> (,R3) () Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr
Pm <UPD,K1,g1> <UPD,K2,g2> (,R3) () Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr
Pm <UPD,K2,g2> (,R3) () Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr
Pm (,R3) () <REQ,,> Κατανεμημένα Συστήματα 32 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 33 lalis@inf.uth.gr
Pm <UPD,K1,g1> (,R3) () Κατανεμημένα Συστήματα 34 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 35 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 36 lalis@inf.uth.gr
Μη υφιστάμενα αδιέξοδα (φαντάσματα) Λόγω ασύγχρονης επικοινωνίας, μπορεί να εντοπιστούν αδιέξοδα-φαντάσματα (phantom deadlocks) που δεν υφίστανται στην πραγματικότητα Παράδειγμα: ζητά και λαμβάνει άδεια για ζητά και λαμβάνει άδεια για ζητά άδεια για και μπλοκάρει οι και στέλνουν τους τοπικούς γράφους στην Pm στέλνει μήνυμα απελευθέρωσης του λαμβάνει άδεια χρήσης του ζητά άδεια για ο στέλνει τον τοπικό γράφο στην Pm Κατανεμημένα Συστήματα 37 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 38 lalis@inf.uth.gr
Pm (,R3) <REQ,,> () Κατανεμημένα Συστήματα 39 lalis@inf.uth.gr
Pm (,R3) <OK> () Κατανεμημένα Συστήματα 40 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 41 lalis@inf.uth.gr
Pm <OK> (,R3) () Κατανεμημένα Συστήματα 42 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 43 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 44 lalis@inf.uth.gr
Pm <UPD,K1,g1> <UPD,K2,g2> (,R3) () Κατανεμημένα Συστήματα 45 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 46 lalis@inf.uth.gr
Pm <FREE,> (,R3) () Κατανεμημένα Συστήματα 47 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 48 lalis@inf.uth.gr
Pm <OK> (,R3) () Κατανεμημένα Συστήματα 49 lalis@inf.uth.gr
Pm <REQ,,> (,R3) () Κατανεμημένα Συστήματα 50 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 51 lalis@inf.uth.gr
Pm <UPD,K1,g1> (,R3) () Κατανεμημένα Συστήματα 52 lalis@inf.uth.gr
Pm (,R3) () Κατανεμημένα Συστήματα 53 lalis@inf.uth.gr
Pm phantom deadlock (,R3) () Κατανεμημένα Συστήματα 54 lalis@inf.uth.gr
Προώθηση μονοπατιού (path pushing) Κατανεμημένη διαχείριση πόρων, όπως προηγουμένως Κάθε διαχειριστής διατηρεί τοπικό γράφο αναμονής Δεν χρησιμοποιείται ξεχωριστή διεργασία για την συγκέντρωση της πληροφορίας των τοπικών γράφων Ο εντοπισμός αδιεξόδου γίνεται κατανεμημένα Αν ένας τοπικός διαχειριστής υποψιαστεί την ύπαρξη ενός αδιεξόδου στο οποίο να εμπλέκεται ένας άλλος διαχειριστής, στέλνει στον τον τοπικό γράφο του Ο συνδυάζει την πληροφορία και ανανεώνει τον τοπικό του γράφο Αν σχηματιστεί κύκλος, πιθανώς υπάρχει αδιέξοδο Κατανεμημένα Συστήματα 55 lalis@inf.uth.gr
Κυνήγι ακμής (edge chasing) Οι διαχειριστές παρέχουν πληροφορία για το ποιος χρησιμοποιεί τον πόρο, αν δεν είναι ελεύθερος Το αδιέξοδο εντοπίζεται κατανεμημένα από τις ίδιες τις διεργασίες που αναμένουν για κάποιο πόρο Μια διεργασία που περιμένει για έναν πόρο, στέλνει περιοδικά μήνυμα διερεύνησης στη διεργασία που χρησιμοποιεί τον πόρο, με τα στοιχεία της Αν μια διεργασία λάβει μήνυμα διερεύνησης, και όντως χρησιμοποιεί τον πόρο και περιμένει για έναν πόρο, προωθεί το μήνυμα επισυνάπτοντας τα στοιχεία της διαφορετικά αγνοεί το μήνυμα διερεύνησης Αν μια διεργασία λάβει μήνυμα διερεύνησης που ήδη περιέχει το δικό της αναγνωριστικό, υπάρχει αδιέξοδο Κατανεμημένα Συστήματα 56 lalis@inf.uth.gr
P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 57 lalis@inf.uth.gr
<PRB,[],R3> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 58 lalis@inf.uth.gr
<PRB,[,],> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 59 lalis@inf.uth.gr
P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 60 lalis@inf.uth.gr
<REQ,,> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 61 lalis@inf.uth.gr
<NOK,> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 62 lalis@inf.uth.gr
P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 63 lalis@inf.uth.gr
P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 64 lalis@inf.uth.gr
<PRB,[P5],> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 65 lalis@inf.uth.gr
<PRB,[P5,],R3> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 66 lalis@inf.uth.gr
<PRB,[P5,,],> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 67 lalis@inf.uth.gr
<PRB,[P5,,,],> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 68 lalis@inf.uth.gr
<PRB,[P5,,,],> αδιέξοδο: ->->-> P4 P5 R3 R3 (,R3) () Κατανεμημένα Συστήματα 69 lalis@inf.uth.gr
Περίπτωση αδιεξόδου στην επικοινωνία Τα μηνύματα που στέλνονται στις διεργασίες αποθηκεύονται μέχρι να γίνει παραλαβή Η ενδιάμεση αποθήκη μπορεί να γεμίσει Αν μια διεργασία επιχειρήσει να στείλει ένα επόμενο μήνυμα, θα μπλοκάρει Μπορεί να προκύψει συνδυασμός μπλοκαρισμένων διεργασιών που να αντιστοιχεί σε αδιέξοδο Κατανεμημένα Συστήματα 70 lalis@inf.uth.gr
recv(,m) in-buffer out-buffer in-buffer recv(,m) out-buffer recv(,m) in-buffer out-buffer Κατανεμημένα Συστήματα 71 lalis@inf.uth.gr
recv(,m) send(,m1) in-buffer m1 out-buffer in-buffer m1 recv(,m) out-buffer recv(,m) in-buffer out-buffer Κατανεμημένα Συστήματα 72 lalis@inf.uth.gr
recv(,m) in-buffer out-buffer in-buffer m1 recv(,m) out-buffer recv(,m) in-buffer out-buffer Κατανεμημένα Συστήματα 73 lalis@inf.uth.gr
recv(,m) in-buffer out-buffer in-buffer m1 m2 out-buffer recv(,m) send(,m2) recv(,m) in-buffer m2 out-buffer Κατανεμημένα Συστήματα 74 lalis@inf.uth.gr
recv(,m) in-buffer out-buffer in-buffer m1 recv(,m) out-buffer recv(,m) in-buffer m2 out-buffer Κατανεμημένα Συστήματα 75 lalis@inf.uth.gr
recv(,m) in-buffer m3 out-buffer in-buffer m1 recv(,m) out-buffer recv(,m) send(,m3) in-buffer m2 m3 out-buffer Κατανεμημένα Συστήματα 76 lalis@inf.uth.gr
recv(,m) in-buffer m3 out-buffer in-buffer m1 recv(,m) out-buffer recv(,m) in-buffer m2 out-buffer Κατανεμημένα Συστήματα 77 lalis@inf.uth.gr
recv(,m) send(,m5) in-buffer m3 m5 out-buffer in-buffer m1 m6 out-buffer recv(,m) recv(,m) in-buffer m2 m4 out-buffer Κατανεμημένα Συστήματα 78 lalis@inf.uth.gr
recv(,m) send(,m5) in-buffer m3 m5 out-buffer in-buffer m1 m6 out-buffer recv(,m) recv(,m) send(,m4) in-buffer m2 m4 out-buffer Κατανεμημένα Συστήματα 79 lalis@inf.uth.gr
recv(,m) send(,m5) in-buffer m3 m5 out-buffer in-buffer m1 m6 out-buffer recv(,m) send(,m6) recv(,m) send(,m4) in-buffer m2 m4 out-buffer Κατανεμημένα Συστήματα 80 lalis@inf.uth.gr