ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Σχετικά έγγραφα
09/04/2014 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Μάθηµα: Α ΙΕΞΟ Α. ιδάσκων: Λειτουργικά Συστήµατα Ι Αν. Καθ. Κ. Λαµπρινουδάκης Α ΙΕΞΟ Α


Λειτουργικά Συστήματα (Λ/Σ)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΑΔΙΕΞΟΔΑ

Λειτουργικά Συστήματα. Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

ΑΔΙΕΞΟΔΑ (Deadlocks) Παράδειγμα 1 Θανάσιμο αγκάλιασμα (deadly embrace)

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Η/Υ

Αδιέξοδα (Deadlocks)

6. Αδιέξοδο. 1. Ορισμοί είδη πόρων. 3. Συνθήκες αδιεξόδου. 1. Πρόληψη 2. Αποφυγή 3. Ανίχνευση 5. Το πρόβλημα των συνδαιτημόνων φιλοσόφων

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ENOTHTA 4 A IEΞO O. Περιεχόµενα

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 6ο: Αδιέξοδα

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Κεφάλαιο 4: Λογισμικό Συστήματος

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Αμοιβαίος αποκλεισμός

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

Εντολές της LOGO (MicroWorlds Pro)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 6ο: Αδιέξοδα

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει την αξιολόγηση των καταστάσεων του χώρου αναζήτησης.

3. Προσομοίωση ενός Συστήματος Αναμονής.

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Ψευδοκώδικας. November 7, 2011

Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες]

Περιεχόμενα. Αδιέξοδο

Λειτουργικά Συστήματα

4.4 Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων

Κεφάλαιο 5: Στρατηγική χωροταξικής διάταξης

Λύσεις 4ης Σειράς Ασκήσεων

Εισαγωγή στην Πληροφορική

Εργαστήριο 4 Πρωτόκολλα Δρομολόγησης

Μάθημα 8: Διαχείριση Μνήμης

Περι-γράφοντας... βρόχους

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Ευθύγραμμες Κινήσεις

Διαδικασιακός Προγραμματισμός

Θέματα Μεταγλωττιστών

ΠΡΟΟΡΙΣΜΟΣ ΑΠΟΘΗΚΕΣ Ζ1 Ζ2 Ζ3 Δ1 1,800 2,100 1,600 Δ2 1, Δ3 1, ,200

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 3: Καθολικά κατηγορήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα Η/Υ

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

Στοχαστικές Στρατηγικές. διαδρομής (1)

Κατανεμημένα Συστήματα Ι

Δομές Δεδομένων & Αλγόριθμοι

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Ενότητα 2: Εντολές Επανάληψης

Ασκήσεις μελέτης της 8 ης διάλεξης

HY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6

ΕΦΑΡΜΟΓΗ Q-LEARNING ΣΕ GRID WORLD ΚΑΙ ΕΞΥΠΝΟΣ ΧΕΙΡΙΣΜΟΣ ΤΟΥ LEARNING RATE ΛΑΘΙΩΤΑΚΗΣ ΑΡΗΣ ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ

9. Συστολικές Συστοιχίες Επεξεργαστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Φυσική Α Λυκείου. Κωστής Λελεδάκης

Λειτουργικά Συστήματα

Κεφάλαιο 3. Διδακτικοί Στόχοι

Σειρά Προβλημάτων 3 Ημερομηνία Παράδοσης: 04/04/16

Λειτουργικά Συστήματα (ΗΥ321)

Ονοματεπώνυμο: Ερώτημα: Σύνολο Μονάδες: Βαθμός:

Σειρά Προβλημάτων 4 Λύσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΑΔΙΕΞΟΔΑ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1

ΑΔΙΕΞΟΔΑ 2

ΠΟΡΟΙ Υπάρχουν δύο τύποι πόρων σε υπολογιστικά συστήματα: Προεκτοπίσιμοι πόροι (preemptable resources): είναι οι πόροι που μπορούν να αποδεσμευτούν από τη διεργασία που τους κατέχει, χωρίς αρνητικές επιπτώσεις στο σύστημα (π.χ. μνήμη) Μη-προεκτοπίσιμοι πόροι (non-preemptable resources): είναι οι πόροι που δε μπορούν να αποδεσμευτούν από τη διεργασία που τους κατέχει, χωρίς αρνητικές επιπτώσεις στο σύστημα (π.χ. εκτυπωτής). Αδιέξοδα (deadlocks) συμβαίνουν μεταξύ διεργασιών με μη προεκτοπίσιμους πόρους, αφού σε αιτήσεις για προεκτοπίσιμους πόρους το πρόβλημα επιλύεται με ανακατανομή των πόρων μεταξύ των διεργασιών. 3

ΑΔΙΕΞΟΔΑ Πότε έχουμε αδιέξοδο; Ένα σύνολο διεργασιών βρίσκεται σε αδιέξοδο (deadlock), αν κάθε διεργασία του συνόλου περιμένει ένα γεγονός που μόνο μια άλλη διεργασία του ίδιου συνόλου μπορεί να προκαλέσει. 4

ΑΔΙΕΞΟΔΑ Συνθήκες Αδιεξόδου Για να οδηγηθούμε σε αδιέξοδο πρέπει να ικανοποιούνται οπωσδήποτε και οι τέσσερις ακόλουθες συνθήκες: Συνθήκη αμοιβαίου αποκλεισμού: κάθε πόρος είτε είναι δεσμευμένος από μία διεργασία, είτε είναι διαθέσιμος. Συνθήκη δέσμευσης και αναμονής: διεργασίες που δεσμεύουν πόρους που τους εκχωρήθηκαν νωρίτερα, μπορούν να ζητούν και νέους. Συνθήκη μη προεκτόπισης: πόροι που έχουν εκχωρηθεί σε μια διεργασία μπορούν να απομακρυνθούν από τον έλεγχό της, μόνον αν τους αποδεσμεύσει αυτή. Συνθήκη κυκλικής αναμονής: πρέπει να υπάρχει μια κυκλική αλυσίδα δύο ή περισσότερων διεργασιών, καθεμία από τις οποίες περιμένει έναν πόρο που είναι δεσμευμένος από το επόμενο μέλος της αλυσίδας. 5

ΑΔΙΕΞΟΔΑ Μοντελοποίηση Αδιεξόδου Οι αναγκαίες συνθήκες για την επίτευξη αδιεξόδου μπορούν να μοντελοποιηθούν με χρήση κατευθυνόμενων γράφων. O πόρος R έχει αποδοθεί στην διαδικασία Α Διαδικασία B περιμένει για τον πόρο S Οι διαδικασίες C και D βρίσκονται σε αδιέξοδο 6

ΑΔΙΕΞΟΔΑ Οι γράφοι πόρων αποτελούν εργαλείο που μας επιτρέπει να εξετάσουμε αν μια συγκεκριμένη σειρά απαιτήσεων και αποδεσμεύσεων οδηγεί σε αδιέξοδο. 7

ΑΔΙΕΞΟΔΑ 8

ΑΔΙΕΞΟΔΑ 9

ΑΔΙΕΞΟΔΑ Για την αντιμετώπιση του προβλήματος του αδιεξόδου χρησιμοποιούνται οι ακόλουθες στρατηγικές: Απλή αγνόηση του προβλήματος (ignore the problem) Ανίχνευση και επανόρθωση (detection and recovery) Δυναμική αποφυγή με προσεκτική κατανομή πόρων (dynamic avoidance) Πρόληψη, με συστηματική αναίρεση μιας από τις τέσσερις αναγκαίες συνθήκες (prevention). 10

ΑΛΓΟΡΙΘΜΟΣ ΑΓΝΟΗΣΗΣ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ Η απλούστερη προσέγγιση είναι η αγνόηση του προβλήματος, γνωστή ως αλγόριθμος της στρουθοκαμήλου (the ostrich algorithm). Για παράδειγμα, στο σύστημα UNIX, αν μια κλήση FORK αποτύχει επειδή ο πίνακας διεργασιών είναι πλήρης, το πρόγραμμα που καλεί τη FORK περιμένει για τυχαίο χρονικό διάστημα και ξαναπροσπαθεί. Εκτιμάται ότι η αγνόηση του προβλήματος και η αποδοχή περιστασιακού αδιεξόδου είναι προτιμότερη από την ύπαρξη κανόνα περιορισμού. 11

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Στα πλαίσια της στρατηγικής αυτής, το σύστημα δε δρα προληπτικά, αλλά χρησιμοποιεί μηχανισμούς ανίχνευσης (detection) και ακολούθως επανόρθωσης (recovery) του προβλήματος. 12

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Ανίχνευση αδιεξόδου με έναν πόρο από κάθε είδος Θεωρούμε συστήματα με έναν πόρο από κάθε είδος. Παράδειγμα αντίστοιχου πολύπλοκου συστήματος περιγράφεται στο επόμενο σχήμα με επτά διεργασίες και έξι πόρους. 13

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Τ 14

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Ο γράφος των πόρων και διεργασιών περιέχει έναν κύκλο, στον οποίο οπτικά φαίνεται ότι υπάρχει αδιέξοδο. Απαιτείται όμως τυπικός αλγόριθμος που θα ελέγχει την ύπαρξη κύκλων σε κατευθυνόμενους γράφους. 15

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Ακολούθως περιγράφεται ένας απλός αλγόριθμος που εξετάζει γράφους και τερματίζεται: είτε όταν εντοπίσει έναν κύκλο, είτε όταν αποδείξει ότι δεν υπάρχει κανένας κύκλος. [1] Για κάθε κόμβο Κ του γράφου εκτέλεσε τα 5 ακόλουθα βήματα με τον Κ ως αρχικό κόμβο. [2] Αρχικοποίησε τη Λ ως κενή λίστα και όλα τα τόξα ως ασημάδευτα. 16

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ [3] Πρόσθεσε τον τρέχοντα κόμβο στο τέλος της Λ. Αν ο κόμβος εμφανίζεται τώρα στη λίστα δύο φορές, τότε ο γράφος περιέχει έναν κύκλο που περιέχεται στη Λ και ο αλγόριθμος τερματίζεται. [4] Από τον τρέχοντα κόμβο, έλεγξε αν υπάρχουν ασημάδευτα τόξα. Αν υπάρχουν πήγαινε στο βήμα 5. Αν δεν υπάρχουν, πήγαινε στο βήμα 6. [5] Διάλεξε τυχαία ένα ασημάδευτο εξερχόμενο τόξο και σημάδεψέ το. Ακολούθησέ το στο νέο τρέχοντα κόμβο και πήγαινε στο βήμα 3. [6] Τώρα έχουμε φτάσει σε έναν κόμβο χωρίς ασημάδευτα εξερχόμενα τόξα. Πήγαινε πίσω στον προηγούμενο κόμβο, δηλαδή σε αυτόν που ήταν τρέχων προηγουμένως, κάνε τον τρέχοντα και πήγαινε στο βήμα 3. Αν ο κόμβος αυτός είναι ο αρχικός, τότε ο γράφος δεν περιέχει κύκλους και ο αλγόριθμος τερματίζεται. 17

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Ανίχνευση αδιεξόδου με πολλούς πόρους από κάθε είδος Υποθέτουμε ότι έχουμε: ν διεργασίες, Δ 1 έως Δ ν μ κατηγορίες πόρων, με E 1 πόρους κατηγορίας 1, E 2 πόρους κατηγορίας 2 και γενικά E i πόρους κατηγορίας i (1<= i <= μ). Το E καλείται διάνυσμα υπαρχόντων πόρων (existing resource vector) και εκφράζει το συνολικό αριθμό στιγμιότυπων κάθε πόρου. π.χ. αν η κατηγορία 1 είναι οι μονάδες ταινίας, τότε αν το σύστημα έχει δύο μονάδες ταινίας γράφουμε E 1 =2. 18

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ A i είναι ο αριθμός των στιγμιότυπων του πόρου i- που είναι διαθέσιμα την τρέχουσα χρονική στιγμή. Με A συμβολίζουμε το διάνυσμα διαθέσιμων πόρων (available resource vector). π.χ. αν και οι δύο μονάδες ταινίας έχουν εκχωρηθεί, τότε A 1 =0. C ονομάζεται πίνακας τρέχουσας κατανομής (current allocation matrix) και η i-γραμμή του δείχνει πόσα στιγμιότυπα κάθε κατηγορίας πόρων είναι δεσμευμένα από τη διεργασία Δ i τη στιγμή αυτή. π.χ. C iκ είναι ο αριθμός των στιγμιότυπων του κ-πόρου που είναι δεσμευμένα από τη διεργασία Δ i την τρέχουσα χρονική στιγμή. R ονομάζεται πίνακας αιτήσεων (request matrix) και η i- γραμμή του δείχνει πόσα στιγμιότυπα κάθε κατηγορίας πόρων αιτείται η διεργασία Δ i τη στιγμή αυτή. π.χ. R iκ είναι ο αριθμός των στιγμιότυπων του κ-πόρου που αιτείται η Δ i την τρέχουσα χρονική στιγμή. 19

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ 20

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Προφανώς, τα στιγμιότυπα του κ-πόρου που έχουν εκχωρηθεί, αν προστεθούν στα στιγμιότυπα που είναι διαθέσιμα, το αποτέλεσμα δίνει τον αριθμό των υπαρχόντων στιγμιότυπων αυτής της κατηγορίας πόρων. Άρα: ν Σ ( C iκ + A κ ) = E κ i=1 21

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Όλες οι διεργασίες θεωρούνται αρχικά ασημάδευτες. Καθώς ο αλγόριθμος εξελίσσεται σημαδεύονται διαδοχικά όλες οι διεργασίες που μπορούν να συνεχίσουν την εκτέλεσή τους, δηλαδή αυτές που δε βρίσκονται σε αδιέξοδο. 22

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Ο αλγόριθμος ανίχνευσης αδιεξόδου διατυπώνεται ως εξής: [1] Ψάξε για μία ασημάδευτη διεργασία Δ i για την οποία η i-στή γραμμή του πίνακα R είναι μικρότερη από τον πίνακα A. [2] Αν βρεθεί τέτοια διεργασία, πρόσθεσε την i-στή γραμμή του C στον R, σημάδεψε τη διεργασία και πήγαινε πάλι στο πρώτο βήμα 1. [3] Αν δεν υπάρχει τέτοια διεργασία, ο αλγόριθμος τερματίζεται. Η ολοκλήρωση του αλγορίθμου αφήνει ασημάδευτες όλες τις διεργασίες που βρίσκονται σε αδιέξοδο. 23

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ 24

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ 0 0 Μετά το τέλος της διεργασίας 3: A = (2 2 2 0) 2 2 0 0 25

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Το ερώτημα που παραμένει είναι πότε πρέπει να γίνεται η ανίχνευση του πιθανού αδιεξόδου. Η ανίχνευση θα μπορούσε να γίνεται: κάθε φορά που γίνεται αίτηση χρήσης πόρου σε τακτά χρονικά διαστήματα όταν η αξιοποίηση της CPU ελαττωθεί κάτω από κάποια τιμή κατωφλίου. Σε αδιέξοδο η χρήση της CPU είναι μικρή 26

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Επανόρθωση από αδιέξοδο Επανόρθωση μέσω προεκχώρησης Σε μερικές περιπτώσεις είναι δυνατό να απομακρυνθεί ένας πόρος, προσωρινά, από την κατέχουσα διεργασία και να εκχωρηθεί σε άλλη. Η επανόρθωση με αυτόν τον τρόπο είναι συχνά ανέφικτη και απαιτεί εξωτερική ανθρώπινη δραστηριότητα. 27

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Επανόρθωση μέσω οπισθοδρόμησης Αν οι σχεδιαστές γνωρίζουν ότι συμβαίνουν συχνά αδιέξοδα, τότε αξιοποιούνται περιοδικά σημεία ελέγχου (checkpoints). Αποθήκευση: Εικόνα της μνήμης Κατάσταση των πόρων Επιστροφή της διεργασίας σε προηγούμενο χρονικό σημείο Ο πόρος έχει αποδεσμευτεί και η διεργασία αναμένει μέχρι να γίνει ξανά διαθέσιμος 28

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ Επανόρθωση μέσω εξάλειψης διεργασιών Ο κλασικότερος τρόπος είναι η εξάλειψη μιας ή περισσότερων διεργασιών. Η διεργασία αυτή μπορεί να είναι είτε εκτός κύκλου, είτε διεργασία του κύκλου. Σε κάθε περίπτωση προτιμούνται διεργασίες που μπορούν να επανεκτελεστούν χωρίς παρενέργειες. 29

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Τροχιές πόρων 30

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Ασφαλείς και ανασφαλείς καταστάσεις Μια κατάσταση καλείται ασφαλής, αν το σύστημα δε βρίσκεται σε αδιέξοδο και υπάρχει τρόπος να ικανοποιηθούν όλες οι εκκρεμείς αιτήσεις με την εκτέλεση όλων των διεργασιών με κάποια διαδοχή. 31

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Μια ανασφαλής κατάσταση δεν είναι κατάσταση αδιεξόδου. Η διαφορά μεταξύ ασφαλούς και ανασφαλούς κατάστασης είναι ότι από την ασφαλή κατάσταση το σύστημα μπορεί εγγυημένα να εκτελέσει όλες τις διεργασίες μέχρι το τέλος τους, ενώ από την ανασφαλή κατάσταση δεν μπορεί να υπάρξει τέτοια διασφάλιση. 32

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Ο Αλγόριθμος του Τραπεζίτη για πόρους ενός είδους Ο αλγόριθμος χρονοδρομολόγησης για την αποφυγή αδιεξόδων, είναι γνωστός ως αλγόριθμος του Dijkstra ή αλγόριθμος του τραπεζίτη. Ο αλγόριθμος του τραπεζίτη εξετάζει κάθε αίτηση όταν εμφανίζεται και ελέγχει αν η ικανοποίησή της οδηγεί σε ασφαλή κατάσταση. Αν ναι, τότε ικανοποιείται. Αν όχι αναβάλλεται γι' αργότερα. 33

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Ασφαλής Ασφαλής Ανασφαλής 34

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Ο Αλγόριθμος του Τραπεζίτη για πόρους πολλών ειδών 35

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Για να αποφασίσει αν μια κατάσταση είναι ασφαλής, ο τραπεζίτης ελέγχει αν υπάρχουν αρκετοί πόροι για την ικανοποίηση κάποιου πελάτη. Αν συμβαίνει αυτό συνεχίζει για τον έλεγχο όλων των υπόλοιπων πελατών. Αν όλα τα δάνεια μπορούν να επιστραφούν, τότε η κατάσταση είναι ασφαλής και η αρχική αίτηση ικανοποιείται. 36

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Ο αλγόριθμος που ελέγχει αν μια κατάσταση είναι ασφαλής είναι ο ακόλουθος: [1] Ψάξε για μια γραμμή, R, της οποίας οι επιπλέον απαιτήσεις σε πόρους είναι μικρότερες ή ίσες από A. Αν δεν υπάρχει τέτοια γραμμή, τότε το σύστημα θα οδηγηθεί σε αδιέξοδο αφού δεν υπάρχει διεργασία που να μπορεί να εκτελεστεί μέχρι το τέλος της. [2] Θεώρησε ότι η διεργασία της γραμμής που βρέθηκε, ζητά όλους τους πόρους που χρειάζεται και εκτελείται μέχρι το τέλος της. Σημάδεψε αυτή τη διεργασία ως τερματισμένη και πρόσθεσε όλους τους πόρους της στο διάνυσμα Α. [3] Επανάλαβε τα βήματα 1 και 2 μέχρι να σημαδευτούν όλες οι διεργασίες ως τερματισμένες, περίπτωση κατά την οποία η αρχική κατάσταση θεωρείται ασφαλής, ή μέχρι να εμφανιστεί αδιέξοδο, οπότε η αρχική κατάσταση θεωρείται ανασφαλής. 37

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ Στο προηγούμενο παράδειγμα η κατάσταση είναι??? Αποδεχόμαστε αίτηση του Β για έναν σαρωτή... Καταλήγουμε σε ασφαλή κατάσταση?? Αποδεχόμαστε επιπλέον αίτηση του Ε για ένα σαρωτή...καταλήγουμε σε ασφαλή κατάσταση??? Ο αλγόριθμος του τραπεζίτη είναι επαρκέστατος θεωρητικά για την αποφυγή αδιεξόδου. Στην πραγματικότητα δε χρησιμοποιείται, αφού: οι διεργασίες σπανίως γνωρίζουν από πριν τις ανάγκες τους σε πόρους ο αριθμός των διεργασιών είναι μεταβαλλόμενος πόροι που θεωρούνται διαθέσιμοι μπορεί ξαφνικά να εξαλειφθούν. 38

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ Συνθήκη αμοιβαίου αποκλεισμού: κάθε πόρος είτε είναι δεσμευμένος από μία διεργασία, είτε είναι διαθέσιμος Αναίρεση της συνθήκης αμοιβαίου αποκλεισμού Προφανώς δε θα έχουμε ποτέ αδιέξοδο, αν κανένας πόρος δεν εκχωρηθεί αποκλειστικά σε μία μόνο διεργασία Το παράδειγμα όμως, του ετεροχρονιστή εκτύπωσης, με τη μόνη διεργασία που ζητά το φυσικό εκτυπωτή να είναι ο δαίμονας του εκτυπωτή (printer daemon), δεν είναι εύκολο να ακολουθηθεί και αλλού. 39

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ Συνθήκη δέσμευσης και αναμονής: διεργασίες που δεσμεύουν πόρους που τους εκχωρήθηκαν νωρίτερα, μπορούν να ζητούν και νέους Αναίρεση της συνθήκης δέσμευσης και αναμονής Για να αποτρέψουμε τις διεργασίες από τη δέσμευση των πόρων που κατέχουν όσο περιμένουν άλλους, θα μπορούσαμε να υποχρεώνουμε τις διεργασίες να ζητούν προκαταβολικά όλους τους πόρους που θα θελήσουν. Οι διεργασίες όμως δε γνωρίζουν πόσους πόρους θα χρειασθούν πριν την έναρξη της εκτέλεσής τους. Θα μπορούσαμε, βεβαίως, να υποχρεώνουμε τη διεργασία που ζητά έναν πόρο να απελευθερώνει προσωρινά όλους τους πόρους που κατέχει και να προσπαθεί να τους ξαναπάρει όλους μαζί πίσω. 40

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ Συνθήκη μη προεκχώρησης: πόροι που έχουν εκχωρηθεί σε μια διεργασία μπορούν να απομακρυνθούν από τον έλεγχό της, μόνον αν τους αποδεσμεύσει αυτή. Αναίρεση της συνθήκης μη προεκχώρησης Είναι περίπτωση συνήθως αδύνατη να υλοποιηθεί. Θεωρείστε μια διεργασία που έχει δεσμεύσει τον εκτυπωτή Είναι στο ενδιάμεσο της εκτύπωσης Τι θα προκαλέσει η αποδέσμευση του εκτυπωτή; 41

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ Συνθήκη κυκλικής αναμονής: πρέπει να υπάρχει μια κυκλική αλυσίδα δύο ή περισσότερων διεργασιών, καθεμία από τις οποίες περιμένει έναν πόρο που είναι δεσμευμένος από το επόμενο μέλος της αλυσίδας. Αναίρεση της συνθήκης κυκλικής αναμονής Θα μπορούσαμε να πετύχουμε αναίρεση της κυκλικής αναμονής με τους εξής τρόπους: Με την ύπαρξη κανόνα που να υποχρεώνει τις διεργασίες στη δέσμευση ενός μόνον πόρου κάθε χρονική στιγμή, οπότε αν χρειασθεί και δεύτερο θα πρέπει να αποδεσμεύει τον πρώτο (δεν είναι πάντα εφικτό) Με τη γενική απαρίθμηση όλων των πόρων. Στην περίπτωση αυτή ο κανόνας είναι: οι διεργασίες μπορούν να ζητούν πόρους όποτε επιθυμούν, αλλά όλες οι αιτήσεις πρέπει να γίνονται με συγκεκριμένη αριθμητική σειρά. 42

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ Συνοπτικά, οι προσεγγίσεις πρόληψης αδιεξόδων περιγράφεται στο ακόλουθο σχήμα Συνθήκη Αμοιβαίος Αποκλεισμός Δέσμευση & Αναμονή Μη προεκχώρηση Κυκλική Αναμονή Προσέγγιση Ετεροχρονισμός Αρχική ζήτηση όλων των πόρων Απομάκρυνση των πόρων Απαρίθμηση των πόρων 43