Αδιέξοδα (Deadlocks)



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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Λιβανός Γιώργος Εξάμηνο 2017Β

Διεργασίες (Processes)

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

2.4 Κλασσικά Προβλήματα IPC

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

Κεφάλαιο 3: Λειτουργικά Συστήµατα

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

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

Πληροφορική 2. Λειτουργικά Συστήματα

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

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

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

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

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

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

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

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

Εισαγωγή στην Πληροφορική. Αντώνης Σταµατάκης

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις

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

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

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

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

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

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

Παράδειγµα: Προσοµοίωση µιας ουράς FIFO Οι λειτουργίες που υποστηρίζονται από µια ουρά FIFO είναι: [enq(q,x), ack(q)] [deq(q), return(q,x)] όπου x είν

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

ΗΜΥ 313: Τεχνολογία Λειτουργικών Συστηµάτων

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

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

Επίλυση Προβλημάτων 1

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 1 : Λειτουργικά συστήματα. Δρ.

Απαντήσεις. Απάντηση. Απάντηση

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

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

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΣΤΗ CTL/LTL

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα Εργαστηριακές Ασκήσεις

Κεφάλαιο 3: Λειτουργικά Συστήματα

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

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

ροµολόγηση Επεξεργαστή

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Λιβανός Γιώργος Εξάμηνο 2017Β

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

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

Χρονοπρογραµµατισµός ιεργασιών (Process Scheduling)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Δυναµικός Προγραµµατισµός (ΔΠ)

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

Καθολικέςκαταστάσεις. Ορισµοί Κατασκευή καθολικών καταστάσεων Παθητική στρατηγική Ενεργητική στρατηγική. Κατανεµηµένα Συστήµατα 04-1

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

Βασικές Προτάσεις. έντρα. υαδικά έντρα Αναζήτησης ( Α) Ισοζυγισµένα έντρα και Υψος. Κάθε δέντρο µε n κόµβους έχει n 1 ακµές.

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

ΛΟΓΙΣΜΙΚΟ (software)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται ως

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

Αυτοματοποιημένη Επαλήθευση

Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Λειτουργικά συστήματα πραγματικού χρόνου

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Transcript:

Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection and recovery) Αποφυγή αδιεξόδων (deadlock avoidance) Πρόληψη (deadlock prevention) 1

Παράδειγµα Υποθέστε πως δύο διεργασίες θέλουν να κάνουν τα εξής Η process1() θα διαβάζει δεδοµένα από το CD και θα τα αποθηκεύει σε µαγνητική ταινία Η process2() θα διαβάζει δεδοµένα από τη µαγνητική ταινία και θα τα αποθηκεύει στο CD. Για να αποφευχθούν οι συνθήκες συναγωνισµού θα πρέπει να χρησιµοποιηθεί αµοιβαίος αποκλεισµός έτσι που µόνο µια διεργασία να έχει πρόσβαση σε κάθε πόρο. Πώς µπορεί να επιτευχθεί; Πρόσβαση σε Συσκευές Ε/Ε semaphore cd=1, tp=1; void process1(){ while(true){ down(&cd); down(&tp); in= readcd(); writetp(in); up(&cd); up(&tp); } } void process2(){ while(true){ down(&tp); down(&cd); in= readtp(); writecd(in); up(&cd); up(&tp); } } Αδιέξοδο (Deadlock)!!! 2

Τύποι Πόροι Preemptable resources Πόροι οι οποίοι µπορούν να ελευθερωθούν προσωρινά (πριν τελειώσει µια διεργασία να τους χρησιµοποιεί) έτσι που να δώσουν την ευκαιρία σε άλλη διεργασία να συνεχίσει Η κύρια µνήµη µπορεί να χρησιµοποιηθεί σαν preemptable. Γιατί; Non-Preemptable resources Πόροι οι οποίοι δεν µπορούν να ελευθερωθούν προσωρινά (πριν τελειώσει µια διεργασία να τους χρησιµοποιεί). Ο εκτυπωτής δεν µπορεί να χρησιµοποιηθεί σαν preemptable. Γιατί; Οι non preemptable πόροι είναι υποψήφιοι να προκαλέσουν κάποιο αδιέξοδο. Αδιέξοδο Ένα σύνολο διεργασιών βρίσκονται σε αδιέξοδο εάν η κάθε µια περιµένει για κάποιο γεγονός το οποίο µόνο µια διεργασία του συνόλου µπορεί να προκαλέσει. Η µια περιµένει την άλλη και γι αυτό τίποτα δεν µπορεί να συµβεί Για τη δηµιουργία αδιεξόδου όλες οι πιο κάτω συνθήκες πρέπει να ισχύουν Συνθήκες αµοιβαίου αποκλεισµού Συνθήκες κράτησης και αναµονής (hold and wait). ιεργασία η οποία κρατεί κάποιους πόρους ζητά κάποιους επιπρόσθετους Συνθήκες non-preemption Συνθήκες κυκλικής αναµονής (circular wait conditions) Κάθε διεργασία περιµένει κάποιο πόρο τον οποίο κρατά µια άλλη. 3

Μοντελοποίηση Αδιεξόδων R Πόρος (resource) P ιεργασία (process) R R R2 Β P P Α R1 Ο πόρος R κρατείται από τη διεργασία P H διεργασία P περιµένει για τον πόρο R Αδιέξοδο Παράδειγµα Α Β C R1 R2 R3 A ζητά τον R1 B ζητά τον R2 C ζητά τον R3 A ζητά τον R2 B ζητά τον R3 C ζητά τον R1 Αδιέξοδο 4

Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection and recovery) Αποφυγή αδιεξόδων (deadlock avoidance) Πρόληψη (deadlock prevention) Στρουθοκαµηλισµός (ostrich algorithm) Απλά αγνοούµε το πρόβληµα (reboot)! Εάν αδιέξοδα συµβαίνουν πολύ σπάνια και δεν τίθεται θέµα ασφάλειας τότε αυτή µπορεί να είναι «καλή» λύση. Η λύσεις στο πρόβληµα (µε µία από τις άλλες στρατηγικές) είναι δαπανηρή αφού µειώνεται η απόδοση του συστήµατος. Ό συνεχής έλεγχος για πιθανά αδιέξοδα καταναλώνει µέρος της υπολογιστικής ισχύος του επεξεργαστή καθώς και άλλους πόρους του συστήµατος. Το Unix και Windows ακολουθούν αυτή τη στρατηγική Τι θα συµβεί εάν η εφαρµογή είναι κρίσιµη; 5

Ανίχνευση και Αποκατάσταση (Detection and Recovery) Αλγόριθµος για ανίχνεύση του Αδιεξόδου Όταν ανιχνευθεί αδιέξοδό τότε λαµβάνονται κάποια µέτρα για αποκατάσταση του αδιεξόδου Αποκατάσταση χρησιµοποιώντας preemption Αποκατάσταση χρησιµοποιώντας rollback «Αποκατάσταση» τερµατίζοντας κάποιες από τις διεργασίες Στην πράξη καµία µέθοδος δεν είναι ιδιαίτερα ικανοποιητική. Πρόβληµα: πόσο συχνά τρέχουµε τον αλγόριθµο ανίχνευσης του αδιεξόδου; Μέθοδοι Αποκατάστασης Αποκατάσταση χρησιµοποιώντας preemption Μια διεργασία διακόπτεται υποχρεωτικά Ελευθερώνει τους πόρους που κρατεί για να χρησιµοποιηθούν από άλλες διεργασίες Αποκατάσταση χρησιµοποιώντας rollback Στον κώδικα υπάρχουν κάποια ελεγχόµενα σηµεία (checkpoints) στα οποία αποθηκεύεται όλη η κατάσταση της διεργασίας (καταχωρητές, πόροι κλπ) Μόλις ανιχνευθεί αδιέξοδο, η διεργασία διακόπτεται και επιστρέφει σε κάποιο από τα προηγούµενα σηµεία ελέγχου ελευθερώνοντας κάποιους πόρους για να χρησιµοποιηθούν από άλλες διεργασίες. «Αποκατάσταση» τερµατίζοντας (kill) κάποιες από τις διεργασίες Απλά τερµατίζουµε κάποιες διεργασίες για να ελευθερώσουν τους πόρους τους έτσι που να µπορούν οι υπόλοιπες να συνεχίσουν. 6

Αλγόριθµος Ανίχνευσης Αδιεξόδου για «απλούς» πόρους Απλοί πόροι: το σύστηµα διαθέτει µόνο ένα πόρο από κάθε είδος. Χρησιµοποιώντας το προαναφερθέν γραφικό µοντέλο είναι εύκολο να εντοπίσουµε τα αδιέξοδα: κοιτάζουµε κατά πόσο υπάρχει κάποια «κλειστή αλυσίδα» Υπάρχει κάποιος αλγόριθµος που να µας βοηθήσει να εντοπίσουµε κάποια κλειστή αλυσίδα σε ένα διάγραµµα και που να µπορεί να υλοποιηθεί αυτόµατα (σαν ένα πρόγραµµα); A. Tanenbaum: Σελίδα 170. Παράδειγµα A B C D R1 R2 R3 C D Αδιέξοδο R2 R3 7

Αλγόριθµος Ανίχνευσης Αδιεξόδου A B C D R1 R2 R3 Ξεκινούµε από κάποιο κόµβο και ακολουθούµε τα βέλη. Κάθε κόµβος που επισκεπτόµαστε σηµειώνεται σε µία λίστα. Εάν εµφανιστεί ο ίδιος κόµβος στη λίστα δύο φορές τότε υπάρχει κλειστή αλυσίδα. Ο πιο πάνω αλγόριθµος πρέπει να ξεκινήσει από όλους τους δυνατούς κόµβους. Πρέπει να υπάρχει τρόπος να µην ακολουθούµε το ίδιο µονοπάτι δύο φορές. Αλγόριθµος Ανίχνευσης Αδιεξόδου A B C D R1 R2 R3 Λίστα L= Λίστα L= Α Β R1 A R2 C R3 D R2 Αδιέξοδο 8

Εναλλακτικός Αλγόριθµος Ανίχνευσης Αδιεξόδου Υποθέτουµε πως υπάρχουν n διεργασίες και m είδη (classes) από πόρους Για κάθε είδος πόρου έχουµε E j διαθέσιµους πόρους 1 j m. ιατήρηση Πόρων n i= 1 C + A = E ij j j Εναλλακτικός Αλγόριθµος Ανίχνευσης Αδιεξόδου Βρίσκουµε όλες τις διεργασίες που έχουν τους απαιτούµενους πόρους για να εκτελεστούν R i A (το οποίο σηµαίνει R ij A j για όλα τα 1 j m) Τις «εκτελούµε» και επιστρέφουµε όλους τους πόρους τους οποίους κρατούν C i στους διαθέσιµους πόρους Α (available resources). Εάν υπάρχει διεργασία η οποία δεν µπορεί να εκτελεστεί τότε υπάρχει αδιέξοδο. 9

Παράδειγµα E C = [ 4 2 3 1] 0 0 1 0 = 2 0 0 1 0 1 2 0 A R = [ 2 1 0 0] 2 0 0 1 = 1 0 1 0 2 1 0 0 Ελέγχουµε κατά πόσο υπάρχει διεργασία που µπορεί να εκτελεσθεί Επιστρέφουµε τους πόρους που κρατεί η διεργασία 3 στους διαθέσιµους πόρους Α=[2 2 2 0] Επαναλαµβάνουµε για τη διεργασία 2, οπόταν Α=[4 2 2 1] εν υπάρχει αδιέξοδο Πότε ελέγχουµε για τυχόν αδιέξοδο; Κάθε φορά που µια διεργασία ζητά ένα νέο πόρο Μη αποδοτικό αφού θα πρέπει συχνά να «σπαταλούµε» το χρόνο του επεξεργαστή για να ελέγχουµε για τυχόν αδιέξοδα Κάθε χ λεπτά Όταν η χρήση (utilization) του επεξεργαστή πέσει κάτω από ένα προκαθορισµένο επίπεδο (threshold). Αυτό προϋποθέτει µη χρήση busy waiting! 10

Αποφυγή Αδιεξόδων (Deadlock Avoidance) Ασφαλείς και ανασφαλείς καταστάσεις (safe and unsafe states) Ασφαλείς καταστάσεις είναι αυτές για τις οποίες ακόµα και κάτω από το χειρότερο πιθανό σενάριο υπάρχει τουλάχιστον µια σειρά εκτέλεσης κατά την οποία όλες οι διεργασίες µπορούν να διεκπεραιωθούν Ανασφαλείς καταστάσεις είναι αυτές για τις οποίες υπάρχουν σενάρια τα οποία µπορεί να οδηγήσουν σε αδιέξοδο. Ασφαλείς και Ανασφαλείς Καταστάσεις Τέλος ιεργασία 2 Εκτυπωτής CD writer Σίγουρο Αδιέξοδο Εκτυπωτής CD writer ιεργασία 1 11

Αλγόριθµος του τραπεζίτη (Banker s algorithm) Βασική ιδέα Όταν µια διεργασία ζητήσει επιπρόσθετους πόρους, τότε ελέγχουµε τη νέα κατανοµή (µε ένα από τους αλγορίθµους ανίχνευσης αδιεξόδου) Εάν µε την νέα κατανοµή δεν υπάρχει περίπτωση αδιεξόδου τότε η κατάσταση είναι ασφαλείς και δίνονται οι πόροι. Εάν µε την νέα κατανοµή υπάρχει περίπτωση αδιεξόδου, τότε η κατάσταση µπορεί να είναι ανασφαλείς οπόταν δεν δίνονται οι πόροι. Παράδειγµα E = [ 4 2 3 1] 0 0 1 0 C = 2 0 0 1 0 1 2 0 A = [ 2 1 0 0] 2 0 0 1 R = 1 0 1 01 2 1 0 0 Ηκατάσταση είναι ασφαλισµένη (από προηγούµενο παράδειγµα). Ας υποθέσουµε ότι η διεργασία 2 ζητά ακόµα έναν πόρο του τύπου 4. Μπορεί να εκτελεσθεί η διεργασία 3 κάνοντας το Α=[2 2 2 0]. Μετά όµως πιθανόν να µην µπορεί να εκτελεσθεί άλλη διεργασία οπόταν η κατάσταση γίνεται ανασφαλείς και το αίτηµα απορρίπτεται 12

Προβλήµατα Μεθόδου Αποφυγής Αδιεξόδων Στην πράξη ο αλγόριθµος αποφυγής αδιεξόδου δεν εφαρµόζεται αφού έχει διάφορα πρακτικά προβλήµατα Συνήθως δεν είναι από πριν γνωστές οι απαιτήσεις κάθε διεργασίας Ο αριθµός των διεργασιών δεν είναι σταθερός Πόροι οι οποίοι θεωρούνται διαθέσιµοι µπορεί να χαλάσουν οπόταν να µην µπορούν να χρησιµοποιηθούν Πρόληψη Αδιεξόδων Για τη δηµιουργία αδιεξόδου όλες οι πιο κάτω συνθήκες πρέπει να ισχύουν Συνθήκες αµοιβαίου αποκλεισµού Συνθήκες κράτησης και αναµονής (hold and wait). ιεργασία η οποία κρατεί κάποιους πόρους ζητά κάποιους επιπρόσθετους Συνθήκες non-preemption Συνθήκες κυκλικής αναµονής (circular wait conditions) Κάθε διεργασία περιµένει κάποιο πόρο τον οποίο κρατά µια άλλη. Κατά την πρόληψη αδιεξόδων γίνεται προσπάθεια να «σπάσει» τουλάχιστον µια από τις πιο πάνω συνθήκες έτσι που να αποφευχθεί το αδιέξοδο. 13

Πρόληψη Αδιεξόδων Συνθήκες αµοιβαίου αποκλεισµού Οι συνθήκες αµοιβαίου αποκλεισµού είναι αναγκαίες για την ορθή λειτουργία ορισµένων συσκευών Π.χ., Όταν µια διεργασία ξεκινήσει να τυπώνει δεν µπορεί µια άλλη ταυτόχρονα να χρησιµοποιεί τον εκτυπωτή! Πιθανή λύση είναι το spooling που όµως υπάρχου περιπτώσεις στις οποίες δεν µπορεί πάντα να χρησιµοποιείται Συνθήκες κράτησης και αναµονής (hold and wait). Πιθανή λύση είναι να υποχρεώνουµε όλες τις διεργασίες να ζητούν όλους τους πόρους που θα χρειαστούν και να µην ξεκινούν αν δεν τους κατανεµηθούν όλοι. Πολλές διεργασίες δεν ξέρουν από πριν τους πόρους που θα χρειαστούν! Τέτοια λύση δεν είναι ιδιαίτερα αποδοτική. Πρόληψη Αδιεξόδων Συνθήκες non-preemption Απλά η αφαίρεση κάποιων πόρων από µια διεργασία έτσι που να τη χρησιµοποιήσει κάποια άλλη δεν είναι εφικτό ή και αν είναι εφικτό είναι µάλλον δύσκολο. Συνθήκες κυκλικής αναµονής (circular wait conditions) Να καθοριστεί µια µοναδική και καθολική σειρά την οποία να ακολουθούν όλε οι διεργασίες Π.χ., (1) Εκτυπωτής, (2) scanner, (3) plotter (4) Εναλλακτικά, µια διεργασία δεν µπορεί να ζητήσει πόρους µε αριθµό µικρότερο από αυτούς πού έχει ήδη. Υπάρχουν τόσα πολλά είδη πόρων που είναι δύσκολο (αδύνατο) α βρεθεί µια σειρά που να ικανοποιεί όλες τις διεργασίες. 14

«Κλείδωµα» πόρων σε δύο φάσεις Two-Phase Locking Εφαρµόζει σε πολλές εφαρµογές µε βάσεις δεδοµένων Στην πρώτη φάση η εφαρµογή προσπαθεί να «κλειδώσει» όλα τα αρχεία που θα χρειαστεί Στην διάρκεια αυτής της φάσης δεν υπάρχει καθόλου πρόοδος Εάν κάποιο αρχείο χρησιµοποιείται ήδη από άλλη διεργασία τότε η εφαρµογή ελευθερώνει όλους τους πόρους τους οποίους κρατεί και ξαναδοκιµάζει αργότερα Εάν καταφέρει να κλειδώσει όλους τους πόρους που χρειάζεται προχωρεί τότε στη δεύτερη φάση. Αυτή η µέθοδος δεν είναι πάντα εφαρµόσιµη. Εφαρµογές πραγµατικού χρόνου Εφαρµογές µε ανάδραση Παρατεταµένη Στέρηση (Starvation) Σε πολλές περιπτώσεις υπάρχει η πιθανότητα µια ή περισσότερες διεργασία να µην εκτελούνται χωρίς να υπάρχει αδιέξοδο Π.χ. σε περίπτωση που ο χρονοπρογραµµατιστής χρησιµοποιεί πολιτική Last In First Out (LIFO) Shorter job first Πιθανή λύση: First In First Out (FIFO) 15