ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S. TANENBAUM Κεφάλαιο 6 Αδιέξοδα A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Εισαγωγή στα αδιέξοδα Ο επίσημος ορισμός του αδιεξόδου είναι ο εξής: Ένα σύνολο διεργασιών βρίσκεται σε αδιέξοδο αν κάθε διεργασία του συνόλου περιμένει ένα συμβάν που μόνο μια άλλη διεργασία του συνόλου μπορεί να προκαλέσει. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Συνθήκες αδιεξόδου πόρων Η συνθήκη του αμοιβαίου αποκλεισμού (mutual exclusion condition). Η συνθήκη δέσμευσης και αναμονής (hold and wait condition). Η συνθήκη μη προεκτόπισης (no preemption condition). Η συνθήκη της κυκλικής αναμονής (circular wait condition). A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Μοντελοποίηση αδιεξόδων (1) Εικόνα 6-3. Γράφοι κατανομής πόρων. (α) Δέσμευση ενός πόρου. (β) Αίτηση χρήσης πόρου. (γ) Αδιέξοδο. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Μοντελοποίηση αδιεξόδων (2) Εικόνα 6-4. Ένα παράδειγμα που δείχνει πώς εμφανίζονται και πώς αποφεύγονται τα αδιέξοδα. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Μοντελοποίηση αδιεξόδων (3) Εικόνα 6-4. Ένα παράδειγμα που δείχνει πώς εμφανίζονται και πώς αποφεύγονται τα αδιέξοδα. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Μοντελοποίηση αδιεξόδων (4) Εικόνα 6-4. Ένα παράδειγμα που δείχνει πώς εμφανίζονται και πώς αποφεύγονται τα αδιέξοδα. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Μοντελοποίηση αδιεξόδων (5) Για την αντιμετώπιση του προβλήματος των αδιεξόδων χρησιμοποιούνται τέσσερις στρατηγικές. 1. Το πρόβλημα αγνοείται εντελώς. Υπάρχει πιθανότητα, αν αγνοήσεις κάτι, να σε αγνοήσει και αυτό. 2. Εντοπισμός και ανάκαμψη (detection and recovery). Αφήνουμε τα αδιέξοδα να εμφανιστούν, τα ανιχνεύουμε, και παίρνουμε τα μέτρα μας. 3. Δυναμική αποφυγή (dynamic avoidance) με προσεκτική κατανομή των πόρων. 4. Αποτροπή (prevention), με δομική άρση μίας από τις τέσσερις συνθήκες που είναι αναγκαίες για τη δημιουργία αδιεξόδου. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με έναν πόρο κάθε τύπου (1) Εικόνα 6-5. (α) Γράφος πόρων. (β) Κύκλος αποσπασμένος από το γράφο. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με έναν πόρο κάθε τύπου (2) Αλγόριθμος ανίχνευσης αδιεξόδου: Για κάθε κόμβο Κ του γράφου, εκτελεί τα 5 επόμενα βήματα με τον Κ ως αρχικό κόμβο. Δίνει αρχικές τιμές στη Λ ως κενή λίστα και χαρακτηρίζει όλα τα τόξα ως ασημείωτα. Προσθέτει τον τρέχοντα κόμβο στο τέλος της Λ και ελέγχει αν ο κόμβος εμφανίζεται τώρα στη λίστα δύο φορές. Αν ναι, ο γράφος περιέχει έναν κύκλο (στη Λ) και ο αλγόριθμος τερματίζεται. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με έναν πόρο κάθε τύπου (3) Από το συγκεκριμένο κόμβο, ελέγχει αν υπάρχουν εξερχόμενα ασημείωτα τόξα. Αν ναι, πηγαίνει στο βήμα 5· αν όχι, πηγαίνει στο βήμα 6. Διαλέγει στην τύχη ένα ασημείωτο εξερχόμενο τόξο και το σημειώνει. Το ακολουθεί στο νέο τρέχοντα κόμβο και πηγαίνει στο βήμα 6. Αν αυτός ο κόμβος είναι ο αρχικός, ο γράφος δεν περιέχει κύκλους και ο αλγόριθμος τερματίζεται. Διαφορετικά, έχει φτάσει σε νεκρό άκρο. Τον αφαιρεί και επιστρέφει στον προηγούμενο κόμβο, δηλαδή σε αυτόν που ήταν τρέχων πριν από αυτόν, τον κάνει τρέχοντα, και πηγαίνει στο βήμα 3. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με πολλούς πόρους κάθε τύπου (1) Εικόνα 6-6. Οι τέσσερις δομές δεδομένων που χρησιμοποιεί ο αλγόριθμος ανίχνευσης αδιεξόδων. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με πολλούς πόρους κάθε τύπου (2) Αλγόριθμος ανίχνευσης αδιεξόδου: Ψάξε για μια ασημείωτη διεργασία Δκ, για την οποία η κ-οστή γραμμή του μητρώου Α είναι μικρότερη ή ίση από την κ-οστή γραμμή του μητρώου Θ. Αν βρεθεί τέτοια διεργασία, πρόσθεσε την κ-οστή γραμμή του Τ στην κ-οστή γραμμή του Θ, σημείωσε τη διεργασία, και επίστρεψε στο βήμα 1. Αν δεν υπάρχει τέτοια διεργασία, ο αλγόριθμος τερματίζεται.. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανίχνευση αδιεξόδου με πολλούς πόρους κάθε τύπου (3) Εικόνα 6-7. Ένα παράδειγμα για τον αλγόριθμο ανίχνευσης αδιεξόδων. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ανάκαμψη από αδιέξοδο Ανάκαμψη με προεκτόπιση Ανάκαμψη με ανασκευή (rollback) Ανάκαμψη με εξάλειψη διεργασιών A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Εικόνα 6-8. Τροχιές πόρων για δύο διεργασίες. Αποφυγή αδιεξόδου Εικόνα 6-8. Τροχιές πόρων για δύο διεργασίες. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ασφαλείς και ανασφαλείς καταστάσεις (1) Εικόνα 6-9. Απόδειξη ότι η κατάσταση (α) είναι ασφαλής. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ασφαλείς και ανασφαλείς καταστάσεις (2) Εικόνα 6-10. Απόδειξη ότι η κατάσταση (β) είναι ανασφαλής. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ο αλγόριθμος του τραπεζίτη για ένα μοναδικό πόρο Εικόνα 6-11. Τρεις καταστάσεις κατανομής πόρων: (α) Ασφαλής. (β) Ασφαλής. (γ) Ανασφαλής. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ο αλγόριθμος του τραπεζίτη για πολλούς πόρους (1) Εικόνα 6-12. Ο αλγόριθμος του τραπεζίτη όταν υπάρχουν πολλοί πόροι. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Ο αλγόριθμος του τραπεζίτη για πολλούς πόρους (2) Αλγόριθμος ελέγχου αν μια κατάσταση είναι ασφαλής: Αναζήτηση στο δεξιό μητρώο μιας γραμμής Μ, της οποίας οι επιπλέον απαιτήσεις σε πόρους είναι παντού μικρότερες ή ίσες από το Θ. Αν δεν υπάρχει τέτοια γραμμή, τότε το σύστημα θα οδηγηθεί τελικά σε αδιέξοδο αφού δεν υπάρχει διεργασία που μπορεί να ολοκληρωθεί (με την προϋπόθεση ότι οι διεργασίες κρατούν όλους τους πόρους τους μέχρι να τερματιστούν). Υπόθεση ότι η διεργασία της επιλεγμένης γραμμής ζητάει όλους τους πόρους που χρειάζεται (το οποίο είναι εγγυημένο) και τερματίζεται. Σήμανση αυτής της διεργασίας ως ολοκληρωμένης και προσθήκη όλων των πόρων της στο διάνυσμα Θ. Επανάληψη των βημάτων 1 και 2 μέχρι είτε να σημανθούν όλες οι διεργασίες ως ολοκληρωμένες (οπότε η αρχική κατάσταση θεωρείται ασφαλής) είτε να μην υπάρχει καμία διεργασία της οποίας οι ανάγκες μπορούν να ικανοποιηθούν (οπότε υπάρχει αδιέξοδο). A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Αποτροπή αδιεξόδου Προσβολή της συνθήκης του αμοιβαίου αποκλεισμού Προσβολή της συνθήκης δέσμευσης και αναμονής Προσβολή της συνθήκης μη προεκτόπισης Προσβολή της συνθήκης κυκλικής αναμονής A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Προσεγγίσεις αποτροπής αδιεξόδου Εικόνα 6-14. Συνοπτικός πίνακας των μεθόδων αποτροπής των αδιεξόδων. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Άλλα ζητήματα Κλείδωμα δύο φάσεων Αδιέξοδα επικοινωνίας Ενεργό αδιέξοδο (livelock) Λιμός A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)
Αδιέξοδα επικοινωνίας Εικόνα 6-15. Αδιέξοδο πόρων σε ένα δίκτυο. A.S. Tanenbaum, Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Κλειδάριθμος, 2009, μετάφραση & επιστημονική επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών (μεταφρασμένες διαφάνειες του πρωτότυπου αμερικανικού βιβλίου: A.S.Tanenbaum, Modern Operating Systems 3e, 2008 Prentice-Hall, Inc.)