Συγκριτικό διάγραμμα
Βάση σύγκρισης | Αδιέξοδο | Πείνα |
---|---|---|
Βασικός | Το αδιέξοδο είναι εκεί όπου δεν προχωράει καμία διαδικασία, και μπλοκάρεται. | Η λιμοκτονία είναι όπου οι διαδικασίες χαμηλής προτεραιότητας αποκλείονται και η διαδικασία υψηλής προτεραιότητας προχωρά. |
Προκύπτει κατάσταση | Η εμφάνιση του Αμοιβαίου αποκλεισμού, Κρατήστε και περιμένετε, Καμία προτίμησή και Η εγκύκλιος περιμένετε ταυτόχρονα. | Επιβολή προτεραιοτήτων, ανεξέλεγκτη διαχείριση των πόρων. |
Αλλο όνομα | Κυκλική αναμονή. | Lifelock. |
Πόροι | Σε αδιέξοδο, οι αιτούμενοι πόροι αποκλείονται από τις άλλες διαδικασίες. | Με την πείνα, οι αιτούμενοι πόροι χρησιμοποιούνται συνεχώς από διαδικασίες υψηλής προτεραιότητας. |
Πρόληψη | Αποφύγετε τον αμοιβαίο αποκλεισμό, κρατήστε και περιμένετε, και περιμένετε κυκλικά και επιτρέψτε την προτίμησή σας. | Γηράσκων. |
Ορισμός του αδιεξόδου
Το αδιέξοδο είναι μια κατάσταση όπου οι διάφορες διεργασίες της CPU ανταγωνίζονται για τον περιορισμένο αριθμό πόρων που διατίθενται στο CPU. Εδώ, κάθε διαδικασία έχει έναν πόρο και περιμένει να αποκτήσει έναν πόρο που κρατείται από κάποια άλλη διαδικασία. Όλες οι διαδικασίες περιμένουν τους πόρους με κυκλικό τρόπο. Στην παρακάτω εικόνα μπορείτε να δείτε ότι η διαδικασία P1 έχει αποκτήσει τον πόρο R2 ο οποίος απαιτείται από τη διαδικασία P2 και η διαδικασία P1 ζητά για τον πόρο R1 ο οποίος διατηρείται και πάλι από το R2. Επομένως η διαδικασία Ρ1 και Ρ2 σχηματίζει ένα αδιέξοδο.
- Αμοιβαίο αποκλεισμό: Μόνο μία διαδικασία κάθε φορά μπορεί να χρησιμοποιήσει έναν πόρο εάν άλλη διαδικασία ζητά τον ίδιο πόρο, πρέπει να περιμένει μέχρι να κυκλοφορήσει η διαδικασία χρησιμοποιώντας τους πόρους.
- Κρατήστε και περιμένετε: Μια διαδικασία πρέπει να κρατά έναν πόρο και να περιμένει να αποκτήσει έναν άλλο πόρο που κρατείται από κάποια άλλη διαδικασία.
- Χωρίς προτίμημα: Η διαδικασία που κρατά τους πόρους δεν μπορεί να προληφθεί. Η διαδικασία που κατέχει τον πόρο πρέπει να απελευθερώσει τον πόρο οικειοθελώς όταν έχει ολοκληρώσει το έργο του.
- Κυκλική αναμονή: Η διαδικασία πρέπει να περιμένει τους πόρους με κυκλικό τρόπο. Ας υποθέσουμε ότι έχουμε τρεις διαδικασίες {P0, P1, P2}. Το P0 πρέπει να περιμένει τον πόρο που κατέχει η P1. Η P1 πρέπει να περιμένει να αποκτήσει τον πόρο που κατέχει η διαδικασία P2, και το P2 πρέπει να περιμένει να αποκτήσει τη διαδικασία που κατέχει το P0.
Αν και υπάρχουν κάποιες εφαρμογές που μπορούν να ανιχνεύσουν τα προγράμματα που μπορεί να πάρουν αδιέξοδο. Αλλά το λειτουργικό σύστημα δεν είναι ποτέ υπεύθυνο για την αποτροπή των αδιεξόδων. Είναι ευθύνη των προγραμματιστών να σχεδιάζουν προγράμματα χωρίς ατέλειες. Αυτό μπορεί να γίνει αποφεύγοντας τις παραπάνω συνθήκες που είναι απαραίτητες για την εμφάνιση αδιεξόδου
Ορισμός της λιμοκτονίας
Η λιμοκτονία μπορεί να οριστεί ως όταν ένα αίτημα διεργασίας για έναν πόρο και ο πόρος αυτός χρησιμοποιείται συνεχώς από τις άλλες διαδικασίες, στη συνέχεια η διαδικασία που ζητάει αντιμετωπίζει πείνα. Στην πείνα, μια διαδικασία έτοιμη να εκτελέσει περιμένει την CPU να διαθέσει τον πόρο. Αλλά η διαδικασία πρέπει να περιμένει επ 'αόριστον, καθώς οι άλλες διαδικασίες εμποδίζουν συνεχώς τους ζητούμενους πόρους.
Το πρόβλημα της πείνας γενικά συμβαίνει στον αλγόριθμο προγραμματισμού προτεραιότητας . Στον αλγόριθμο προγραμματισμού προτεραιότητας, η διαδικασία με υψηλότερη προτεραιότητα κατανέμεται πάντα ο πόρος, αποτρέποντας τη διαδικασία χαμηλότερης προτεραιότητας από το να πάρει τον ζητούμενο πόρο.
Η γήρανση μπορεί να λύσει το πρόβλημα της πείνας. Η γήρανση αυξάνει σταδιακά την προτεραιότητα της διαδικασίας που έχει περιμένει πολύ για τους πόρους. Η γήρανση εμποδίζει μια διαδικασία με χαμηλή προτεραιότητα να περιμένει επ 'αόριστον έναν πόρο.
Βασικές διαφορές ανάμεσα στο αδιέξοδο και την πείνα στο λειτουργικό σύστημα
- Σε ένα αδιέξοδο, καμία από τις διαδικασίες δεν προχωρά για εκτέλεση, κάθε διαδικασία μπλοκάρεται περιμένοντας τους πόρους που αποκτήθηκαν από την άλλη διαδικασία. Από την άλλη πλευρά, η πείνα είναι μια κατάσταση όπου οι διαδικασίες που έχουν υψηλότερη προτεραιότητα επιτρέπεται να αποκτήσουν τους πόρους συνεχώς εμποδίζοντας τις διαδικασίες χαμηλής προτεραιότητας να αποκτήσουν πόρους που οδηγούν σε αόριστο αποκλεισμό διαδικασιών χαμηλής προτεραιότητας.
- Το αδιέξοδο προκύπτει όταν ισχύουν ταυτόχρονα τέσσερις προϋποθέσεις: Αμοιβαίο αποκλεισμό, Διατήρηση και αναμονή, Καμία προδοχή και Κυκλική αναμονή . Ωστόσο, η πείνα εμφανίζεται όταν οι προτεραιότητες της διαδικασίας έχουν εφαρμοστεί κατά την κατανομή πόρων ή υπάρχει ανεξέλεγκτη διαχείριση πόρων στο σύστημα.
- Το αδιέξοδο καλείται συχνά από το όνομα κυκλική αναμονή, ενώ η λιμοκτονία καλείται Lived lock .
- Στο Deadlock οι πόροι εμποδίζονται από τη διαδικασία, ενώ, με πείνα, οι διαδικασίες χρησιμοποιούνται συνεχώς από τις διαδικασίες με υψηλές προτεραιότητες.
- Το αδιέξοδο μπορεί να αποφευχθεί με την αποφυγή των προϋποθέσεων όπως ο αμοιβαίος αποκλεισμός, η κράτηση και η αναμονή, η κυκλική αναμονή και η δυνατότητα προαίρεσης των διαδικασιών που κρατούν πόρους για μεγάλο χρονικό διάστημα. Από την άλλη πλευρά, η πείνα μπορεί να αποφευχθεί με τη γήρανση .
Συμπέρασμα:
Τόσο το αδιέξοδο όσο και η πείνα καθυστερούν την εκτέλεση της διαδικασίας, αποκλείοντας την. Από τη μία μεριά, όπου το αδιέξοδο μπορεί να προκαλέσει διαδικασίες για να λιμοκτονήσουν, και από την άλλη, η πείνα μπορεί να βγάλει τις διαδικασίες από το αδιέξοδο.