Αδιέξοδα (Deadlocks).

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
Λογισμικο συστηματοσ Κεφάλαιο 4ο
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Η Γλώσσα Προγραμματισμού LOGO
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Γονικός έλεγχος Κ. Ξ. Γ. «ΛΙΟΛΙΟΥ». Γονικός έλεγχος •Ακόμη κι όταν δεν κρυφοκοιτάζετε, μπορείτε να θέσετε περιορισμούς στη χρήση του υπολογιστή από τα.
Η επιστήμη των υπολογιστών
Λειτουργικά Συστήματα
Λειτουργικά Συστήματα
Λειτουργικό Σύστημα 2ο μέρος.
Ζητήματα Σελιδοποίησης
Λογισμικο συστηματοσ Κεφάλαιο 4ο
Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
1515 Διαχείριση Συναλλαγών  Συναλλαγές  Έλεγχος ταυτοχρονισμού  Επανάκτηση δεδομένων.
Λειτουργικά Συστήματα ΑΔΙΕΞΟΔΑ. 3.1 Εισαγωγή  Αδιέξοδο = ένα σύνολο από διεργασίες που δημιουργούν μια κυκλική αλυσίδα όπου κάθε process στην αλυσίδα.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
24 Νοεμβρίου 2014 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΠΡΟΔΙΑΓΡΑΦΗ ΙΔΙΟΤΗΤΩΝ ΜΕ ΧΡΟΝΙΚΗ ΛΟΓΙΚΗ.
Αδιέξοδο Μόνιμο μπλοκάρισμα ενός συνόλου διεργασιών που είτε συναγωνίζονται για πόρους του συστήματος είτε επικοινωνούν μεταξύ τους Δεν υπάρχει αποδοτική.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Κατανεμημένα Συστήματα με Java Ενότητα # 3: Καθολικά κατηγορήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Ο αλγόριθμος Bellman-Ford (επανεξετάζεται)
Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Κεφάλαιο 10 – Υποπρογράμματα
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Κανονικοποίηση Σχήματος.
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Διεργασίες.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών 1.
1 Αδιέξοδα Μοντέλο συστήματος Χαρακτηρισμός αδιεξόδου Μέθοδοι διαχείρισης αδιεξόδων Πρόληψη Αποφυγή Ανίχνευση.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
1 Διαχείριση Έργων Πληροφορικής Διάλεξη 7 η Διαχείριση Πόρων.
Λειτουργικά Συστήματα Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΜΑΘΗΜΑ: ΣΥΓΧΡΟΝΟ ΛΟΓΙΣΜΙΚΟ ΟΡΓΑΝΩΣΗ ΓΡΑΦΕΙΟΥ 5 ο ΕΡΓΑΣΤΗΡΙΟ: ΕΓΚΑΤΑΣΤΑΣΗ ΕΚΤΥΠΩΤΩΝ ΚΑΘΗΓΗΤΗΣ: ΓΡΗΓΟΡΙΟΣ Ν. ΚΑΡΑΤΑΣΙΟΣ.
1 Αδιέξοδο 1.Ορισμοί – είδη πόρων 2.Γράφοι εκχώρησης πόρων 3.Συνθήκες αδιεξόδου 4.Προσεγγίσεις αδιεξόδου 1.Πρόληψη 2.Αποφυγή 3.Ανίχνευση 5.Το πρόβλημα.
1 Λειτουργικά Συστήματα Ενότητα 6 : Αδιέξοδο 1/2 Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
CSMA/CA στο Κατανεμημένα Ενσωματωμένα Συστήματα
Δυναμικός Κατακερματισμός
Χειρισμός Χρόνου και Μεθοδολογίες Προσομοίωσης
Κατανεμημένα Συστήματα
Συγχρονισμός Διεργασιών
Διερεύνηση γραφήματος
Κατανεμημένα Συστήματα
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Βασικά Μοντέλα και Έννοιες Διεργασιών
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Ανάπτυξη Μοντέλων Διακριτών Συστημάτων Μέρος Β
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Αµοιβαίος αποκλεισµός
Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών
Το μοντέλο πελάτη - εξυπηρετητή
ΔΙΕΡΓΑΣΙΕΣ.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Δυναμικός Κατακερματισμός
Λειτουργικά Συστήματα Αμοιβαίος Αποκλεισμός και Λάθη
Μεταγράφημα παρουσίασης:

Αδιέξοδα (Deadlocks)

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

Παράδειγμα Υποθέστε πως δύο διεργασίες θέλουν να κάνουν τα εξής Η 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)!!!

Τύποι Πόροι Preemptable resources Non-Preemptable resources Πόροι οι οποίοι μπορούν να ελευθερωθούν προσωρινά (πριν τελειώσει μια διεργασία να τους χρησιμοποιεί) έτσι που να δώσουν την ευκαιρία σε άλλη διεργασία να συνεχίσει Η κύρια μνήμη μπορεί να χρησιμοποιηθεί σαν preemptable. Γιατί; Non-Preemptable resources Πόροι οι οποίοι δεν μπορούν να ελευθερωθούν προσωρινά (πριν τελειώσει μια διεργασία να τους χρησιμοποιεί). Ο εκτυπωτής δεν μπορεί να χρησιμοποιηθεί σαν preemptable. Γιατί; Οι non preemptable πόροι είναι υποψήφιοι να προκαλέσουν κάποιο αδιέξοδο.

Αδιέξοδο Ένα σύνολο διεργασιών βρίσκονται σε αδιέξοδο εάν η κάθε μια περιμένει για κάποιο γεγονός το οποίο μόνο μια διεργασία του συνόλου μπορεί να προκαλέσει. Η μια περιμένει την άλλη και γι’ αυτό τίποτα δεν μπορεί να συμβεί Για τη δημιουργία αδιεξόδου όλες οι πιο κάτω συνθήκες πρέπει να ισχύουν Συνθήκες αμοιβαίου αποκλεισμού Συνθήκες κράτησης και αναμονής (hold and wait). Διεργασία η οποία κρατεί κάποιους πόρους ζητά κάποιους επιπρόσθετους Συνθήκες non-preemption Συνθήκες κυκλικής αναμονής (circular wait conditions) Κάθε διεργασία περιμένει κάποιο πόρο τον οποίο κρατά μια άλλη.

Μοντελοποίηση Αδιεξόδων Διεργασία (process) P R Πόρος (resource) R2 Α R1 Β R R P P Ο πόρος R κρατείται από τη διεργασία P H διεργασία P περιμένει για τον πόρο R Αδιέξοδο

Παράδειγμα Αδιέξοδο R1 Α R2 Β R3 C A ζητά τον R1 B ζητά τον R2 C ζητά τον R3 A ζητά τον R2 B ζητά τον R3 C ζητά τον R1 Αδιέξοδο

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

Στρουθοκαμηλισμός (ostrich algorithm) Απλά αγνοούμε το πρόβλημα (reboot)! Εάν αδιέξοδα συμβαίνουν πολύ σπάνια και δεν τίθεται θέμα ασφάλειας τότε αυτή μπορεί να είναι «καλή» λύση. Η λύσεις στο πρόβλημα (με μία από τις άλλες στρατηγικές) είναι δαπανηρή αφού μειώνεται η απόδοση του συστήματος. Ό συνεχής έλεγχος για πιθανά αδιέξοδα καταναλώνει μέρος της υπολογιστικής ισχύος του επεξεργαστή καθώς και άλλους πόρους του συστήματος. Το Unix και Windows ακολουθούν αυτή τη στρατηγική Τι θα συμβεί εάν η εφαρμογή είναι κρίσιμη;

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

Μέθοδοι Αποκατάστασης Αποκατάσταση χρησιμοποιώντας preemption Μια διεργασία διακόπτεται υποχρεωτικά Ελευθερώνει τους πόρους που κρατεί για να χρησιμοποιηθούν από άλλες διεργασίες Αποκατάσταση χρησιμοποιώντας rollback Στον κώδικα υπάρχουν κάποια ελεγχόμενα σημεία (checkpoints) στα οποία αποθηκεύεται όλη η κατάσταση της διεργασίας (καταχωρητές, πόροι κλπ) Μόλις ανιχνευθεί αδιέξοδο, η διεργασία διακόπτεται και επιστρέφει σε κάποιο από τα προηγούμενα σημεία ελέγχου ελευθερώνοντας κάποιους πόρους για να χρησιμοποιηθούν από άλλες διεργασίες. «Αποκατάσταση» τερματίζοντας (kill) κάποιες από τις διεργασίες Απλά τερματίζουμε κάποιες διεργασίες για να ελευθερώσουν τους πόρους τους έτσι που να μπορούν οι υπόλοιπες να συνεχίσουν.

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

Παράδειγμα R2 C R3 D R1 B A R2 C R3 D Αδιέξοδο

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

Αλγόριθμος Ανίχνευσης Αδιεξόδου R2 C R3 D R1 B A Λίστα L= Α Λίστα L= Β R1 A R2 C R3 D R2 Αδιέξοδο

Εναλλακτικός Αλγόριθμος Ανίχνευσης Αδιεξόδου Υποθέτουμε πως υπάρχουν n διεργασίες και m είδη (classes) από πόρους Για κάθε είδος πόρου έχουμε Ej διαθέσιμους πόρους 1≤j≤m. Διατήρηση Πόρων

Εναλλακτικός Αλγόριθμος Ανίχνευσης Αδιεξόδου Βρίσκουμε όλες τις διεργασίες που έχουν τους απαιτούμενους πόρους για να εκτελεστούν Ri ≤ A (το οποίο σημαίνει Rij ≤ Aj για όλα τα 1 ≤ j ≤ m) Τις «εκτελούμε» και επιστρέφουμε όλους τους πόρους τους οποίους κρατούν Ci στους διαθέσιμους πόρους Α (available resources). Εάν υπάρχει διεργασία η οποία δεν μπορεί να εκτελεστεί τότε υπάρχει αδιέξοδο.

Παράδειγμα Ελέγχουμε κατά πόσο υπάρχει διεργασία που μπορεί να εκτελεσθεί Επιστρέφουμε τους πόρους που κρατεί η διεργασία 3 στους διαθέσιμους πόρους Α=[2 2 2 0] Επαναλαμβάνουμε για τη διεργασία 2, οπόταν Α=[4 2 2 1] Δεν υπάρχει αδιέξοδο

Πότε ελέγχουμε για τυχόν αδιέξοδο; Κάθε φορά που μια διεργασία ζητά ένα νέο πόρο Μη αποδοτικό αφού θα πρέπει συχνά να «σπαταλούμε» το χρόνο του επεξεργαστή για να ελέγχουμε για τυχόν αδιέξοδα Κάθε χ λεπτά Όταν η χρήση (utilization) του επεξεργαστή πέσει κάτω από ένα προκαθορισμένο επίπεδο (threshold). Αυτό προϋποθέτει μη χρήση busy waiting!

Αποφυγή Αδιεξόδων (Deadlock Avoidance) Ασφαλείς και ανασφαλείς καταστάσεις (safe and unsafe states) Ασφαλείς καταστάσεις είναι αυτές για τις οποίες ακόμα και κάτω από το χειρότερο πιθανό σενάριο υπάρχει τουλάχιστον μια σειρά εκτέλεσης κατά την οποία όλες οι διεργασίες μπορούν να διεκπεραιωθούν Ανασφαλείς καταστάσεις είναι αυτές για τις οποίες υπάρχουν σενάρια τα οποία μπορεί να οδηγήσουν σε αδιέξοδο.

Ασφαλείς και Ανασφαλείς Καταστάσεις Τέλος Εκτυπωτής Διεργασία 2 CD writer Σίγουρο Αδιέξοδο Εκτυπωτής CD writer Διεργασία 1

Αλγόριθμος του τραπεζίτη (Banker’s algorithm) Βασική ιδέα Όταν μια διεργασία ζητήσει επιπρόσθετους πόρους, τότε ελέγχουμε τη νέα κατανομή (με ένα από τους αλγορίθμους ανίχνευσης αδιεξόδου) Εάν με την νέα κατανομή δεν υπάρχει περίπτωση αδιεξόδου τότε η κατάσταση είναι ασφαλείς και δίνονται οι πόροι. Εάν με την νέα κατανομή υπάρχει περίπτωση αδιεξόδου, τότε η κατάσταση μπορεί να είναι ανασφαλείς οπόταν δεν δίνονται οι πόροι.

Παράδειγμα 1 Η κατάσταση είναι ασφαλισμένη (από προηγούμενο παράδειγμα). Ας υποθέσουμε ότι η διεργασία 2 ζητά ακόμα έναν πόρο του τύπου 4. Μπορεί να εκτελεσθεί η διεργασία 3 κάνοντας το Α=[2 2 2 0]. Μετά όμως πιθανόν να μην μπορεί να εκτελεσθεί άλλη διεργασία οπόταν η κατάσταση γίνεται ανασφαλείς και το αίτημα απορρίπτεται

Προβλήματα Μεθόδου Αποφυγής Αδιεξόδων Στην πράξη ο αλγόριθμος αποφυγής αδιεξόδου δεν εφαρμόζεται αφού έχει διάφορα πρακτικά προβλήματα Συνήθως δεν είναι από πριν γνωστές οι απαιτήσεις κάθε διεργασίας Ο αριθμός των διεργασιών δεν είναι σταθερός Πόροι οι οποίοι θεωρούνται διαθέσιμοι μπορεί να χαλάσουν οπόταν να μην μπορούν να χρησιμοποιηθούν

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

Πρόληψη Αδιεξόδων Συνθήκες αμοιβαίου αποκλεισμού Οι συνθήκες αμοιβαίου αποκλεισμού είναι αναγκαίες για την ορθή λειτουργία ορισμένων συσκευών Π.χ., Όταν μια διεργασία ξεκινήσει να τυπώνει δεν μπορεί μια άλλη ταυτόχρονα να χρησιμοποιεί τον εκτυπωτή! Πιθανή λύση είναι το spooling που όμως υπάρχου περιπτώσεις στις οποίες δεν μπορεί πάντα να χρησιμοποιείται Συνθήκες κράτησης και αναμονής (hold and wait). Πιθανή λύση είναι να υποχρεώνουμε όλες τις διεργασίες να ζητούν όλους τους πόρους που θα χρειαστούν και να μην ξεκινούν αν δεν τους κατανεμηθούν όλοι. Πολλές διεργασίες δεν ξέρουν από πριν τους πόρους που θα χρειαστούν! Τέτοια λύση δεν είναι ιδιαίτερα αποδοτική.

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

«Κλείδωμα» πόρων σε δύο φάσεις Two-Phase Locking Εφαρμόζει σε πολλές εφαρμογές με βάσεις δεδομένων Στην πρώτη φάση η εφαρμογή προσπαθεί να «κλειδώσει» όλα τα αρχεία που θα χρειαστεί Στην διάρκεια αυτής της φάσης δεν υπάρχει καθόλου πρόοδος Εάν κάποιο αρχείο χρησιμοποιείται ήδη από άλλη διεργασία τότε η εφαρμογή ελευθερώνει όλους τους πόρους τους οποίους κρατεί και ξαναδοκιμάζει αργότερα Εάν καταφέρει να κλειδώσει όλους τους πόρους που χρειάζεται προχωρεί τότε στη δεύτερη φάση. Αυτή η μέθοδος δεν είναι πάντα εφαρμόσιμη. Εφαρμογές πραγματικού χρόνου Εφαρμογές με ανάδραση …

Παρατεταμένη Στέρηση (Starvation) Σε πολλές περιπτώσεις υπάρχει η πιθανότητα μια ή περισσότερες διεργασία να μην εκτελούνται χωρίς να υπάρχει αδιέξοδο Π.χ. σε περίπτωση που ο χρονοπρογραμματιστής χρησιμοποιεί πολιτική Last In First Out (LIFO) Shorter job first … Πιθανή λύση: First In First Out (FIFO)