Αδιέξοδο μέσα OperaΣύστημα ting: Τι είναι, κυκλική αναμονή (Παραδείγματα)

Τι είναι το Deadlock;

Αδιέξοδο είναι μια κατάσταση που εμφανίζεται στο λειτουργικό σύστημα όταν οποιαδήποτε διεργασία εισέρχεται σε κατάσταση αναμονής επειδή μια άλλη διαδικασία αναμονής κρατά τον απαιτούμενο πόρο. Το αδιέξοδο είναι ένα κοινό πρόβλημα στην πολυεπεξεργασία όπου πολλές διεργασίες μοιράζονται έναν συγκεκριμένο τύπο αμοιβαία αποκλειστικού πόρου, γνωστό ως soft lock ή λογισμικό.

Παράδειγμα Αδιεξόδου

  • Ένα πραγματικό παράδειγμα θα ήταν η κυκλοφορία, η οποία πηγαίνει μόνο προς μία κατεύθυνση.
  • Εδώ, μια γέφυρα θεωρείται πόρος.
  • Έτσι, όταν συμβαίνει το αδιέξοδο, μπορεί εύκολα να επιλυθεί εάν ένα αυτοκίνητο κάνει αντίγραφα ασφαλείας (Preempt πόρους και rollback).
  • Σε περίπτωση αδιεξόδου ενδέχεται να χρειαστεί να λάβετε αντίγραφα ασφαλείας για πολλά αυτοκίνητα.
  • Άρα η πείνα είναι δυνατή.
Παράδειγμα Αδιεξόδου
Παράδειγμα αδιεξόδου

Τι είναι η κυκλική αναμονή;

Μία διεργασία περιμένει τον πόρο, ο οποίος διατηρείται από τη δεύτερη διεργασία, η οποία περιμένει επίσης τον πόρο που κατέχει η τρίτη διεργασία κ.λπ. Αυτό θα συνεχιστεί έως ότου η τελευταία διεργασία περιμένει έναν πόρο που διατηρεί η πρώτη διεργασία. Αυτό δημιουργεί μια κυκλική αλυσίδα.

Για παράδειγμα, στη διεργασία Α εκχωρείται ο πόρος Β καθώς ζητά τον πόρο Α. Με τον ίδιο τρόπο, στη διεργασία Β εκχωρείται ο πόρος Α και ζητά ο πόρος Β. Αυτό δημιουργεί έναν κυκλικό βρόχο αναμονής.

Παράδειγμα κυκλικής αναμονής

Για παράδειγμα, ένας υπολογιστής έχει τρεις μονάδες USB και τρεις διεργασίες. Κάθε μία από τις τρεις διεργασίες μπορεί να κρατήσει μία από τις μονάδες USB. Έτσι, όταν κάθε διεργασία ζητά άλλη μονάδα δίσκου, οι τρεις διεργασίες θα έχουν την κατάσταση αδιεξόδου, καθώς κάθε διεργασία θα περιμένει την απελευθέρωση της μονάδας USB, η οποία χρησιμοποιείται αυτήν τη στιγμή. Αυτό θα έχει ως αποτέλεσμα μια κυκλική αλυσίδα.

Παράδειγμα κυκλικής αναμονής

Παράδειγμα κυκλικής αναμονής

Ανίχνευση αδιεξόδου στο λειτουργικό σύστημα

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

Πρόληψη αδιεξόδου στο λειτουργικό σύστημα

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

Είναι ένα σύνολο μεθόδων για να διασφαλιστεί ότι τουλάχιστον μία από τις συνθήκες δεν μπορεί να ισχύει.

Καμία προληπτική ενέργεια

Χωρίς προκοπή – Ένας πόρος μπορεί να απελευθερωθεί μόνο οικειοθελώς από τη διεργασία που τον κρατά αφού αυτή η διεργασία έχει ολοκληρώσει την εργασία της

  • Εάν μια διεργασία που περιέχει κάποιους πόρους ζητήσει έναν άλλο πόρο που δεν μπορεί να εκχωρηθεί αμέσως σε αυτήν, σε αυτήν την περίπτωση, όλοι οι πόροι θα απελευθερωθούν.
  • Οι προεπιλεγμένοι πόροι απαιτούν τη λίστα πόρων για μια διαδικασία που βρίσκεται σε αναμονή.
  • Η διαδικασία θα επανεκκινηθεί μόνο εάν μπορέσει να ανακτήσει τον παλιό του πόρο και έναν νέο πόρο που ζητά.
  • Εάν η διαδικασία ζητά κάποιον άλλο πόρο, όταν είναι διαθέσιμος, τότε δόθηκε στη διαδικασία αιτήματος.
  • Εάν διατηρείται από άλλη διεργασία που περιμένει έναν άλλο πόρο, τον αποδεσμεύουμε και τον δίνουμε στη διαδικασία αιτήματος.

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

Ο αμοιβαίος αποκλεισμός είναι μια πλήρης μορφή Mutex. Είναι ένας ειδικός τύπος δυαδικού σηματοφόρου που χρησιμοποιείται για τον έλεγχο της πρόσβασης στον κοινόχρηστο πόρο. Περιλαμβάνει έναν μηχανισμό κληρονομικότητας προτεραιότητας για την αποφυγή προβλημάτων αντιστροφής εκτεταμένης προτεραιότητας. Επιτρέπει τις τρέχουσες εργασίες υψηλότερης προτεραιότητας να διατηρούνται σε κατάσταση αποκλεισμού για το συντομότερο δυνατό χρονικό διάστημα.

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

Κρατήστε και περιμένετε

Σε αυτήν την κατάσταση, οι διεργασίες πρέπει να σταματήσουν να διατηρούν έναν ή πολλούς πόρους ενώ ταυτόχρονα περιμένουν έναν ή περισσότερους άλλους.

Κυκλική Αναμονή

Επιβάλλει μια συνολική παραγγελία όλων των τύπων πόρων. Η κυκλική αναμονή απαιτεί επίσης κάθε διεργασία να ζητά πόρους με αύξουσα σειρά απαρίθμησης.

Αποφυγή αδιεξόδου Algorithms

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

Αποφυγή Algorithms

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

Μια μεμονωμένη παρουσία ενός τύπου πόρου.

  • Χρησιμοποιήστε ένα γράφημα κατανομής πόρων
  • Είναι απαραίτητοι κύκλοι που είναι επαρκείς για το Deadlock

Πολλαπλές παρουσίες ενός τύπου πόρου.

Διαφορά μεταξύ λιμοκτονίας και αδιεξόδου

Εδώ, είναι μερικές σημαντικές διαφορές μεταξύ του αδιεξόδου και της πείνας:

Αδιέξοδο Η λιμοκτονία
Η κατάσταση αδιεξόδου εμφανίζεται όταν μπλοκάρεται μία από τις διεργασίες. Η ασιτία είναι μια κατάσταση όπου όλες οι διεργασίες χαμηλής προτεραιότητας μπλοκάρονται και οι διεργασίες υψηλής προτεραιότητας εκτελούνται.
Το αδιέξοδο είναι μια άπειρη διαδικασία. Η πείνα είναι μια μακρά αναμονή, αλλά όχι μια άπειρη διαδικασία.
Κάθε Αδιέξοδο έχει πάντα πείνα. Κάθε λιμοκτονία δεν έχει απαραίτητα αδιέξοδο.
Το αδιέξοδο συμβαίνει και τότε ο αμοιβαίος αποκλεισμός, κρατήστε και περιμένετε. Εδώ, η προκοπή και η κυκλική αναμονή δεν συμβαίνουν ταυτόχρονα. Συμβαίνει λόγω ανεξέλεγκτη προτεραιότητας και διαχείρισης πόρων.

Πλεονεκτήματα του Deadlock

Εδώ, είναι τα πλεονεκτήματα/πλεονεκτήματα της χρήσης της μεθόδου Deadlock

  • Αυτή η κατάσταση λειτουργεί καλά για διεργασίες που εκτελούν μία μόνο ριπή δραστηριότητας
  • Δεν απαιτείται προκοπή για το Deadlock.
  • Βολική μέθοδος όταν εφαρμόζεται σε πόρους των οποίων η κατάσταση μπορεί να αποθηκευτεί και να αποκατασταθεί εύκολα
  • Δυνατότητα επιβολής μέσω ελέγχων χρόνου μεταγλώττισης
  • Δεν χρειάζεται υπολογισμός χρόνου εκτέλεσης αφού το πρόβλημα επιλύεται στο σχεδιασμό του συστήματος

Μειονεκτήματα του Deadlock

Εδώ, είναι τα μειονεκτήματα/μειονεκτήματα της χρήσης της μεθόδου αδιεξόδου

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

Περίληψη

  • Ορισμός αδιεξόδου: Είναι μια κατάσταση που εμφανίζεται σε OS όταν οποιαδήποτε διεργασία εισέρχεται σε κατάσταση αναμονής επειδή μια άλλη διαδικασία αναμονής κρατά τον απαιτούμενο πόρο
  • Η κυκλική αναμονή συμβαίνει όταν μια διεργασία περιμένει τον πόρο, ο οποίος διατηρείται από τη δεύτερη διαδικασία, η οποία περιμένει επίσης τον πόρο που κατέχει η τρίτη διεργασία κ.λπ.
  • Ένα περιστατικό αδιεξόδου μπορεί να εντοπιστεί από τον προγραμματιστή πόρων.
  • Είναι σημαντικό να αποτρέψετε ένα αδιέξοδο προτού αυτό συμβεί.
  • Ένας πόρος μπορεί να απελευθερωθεί μόνο οικειοθελώς από τη διεργασία που τον κρατά αφού αυτή η διεργασία έχει ολοκληρώσει την εργασία της.
  • Ο αμοιβαίος αποκλεισμός είναι μια πλήρης μορφή Mutex. Είναι ένας ειδικός τύπος δυαδικού σηματοφόρος που χρησιμοποιείται για τον έλεγχο της πρόσβασης στον κοινόχρηστο πόρο.
  • Η αναμονή και η αναμονή είναι μια κατάσταση κατά την οποία οι διεργασίες πρέπει να σταματήσουν να διατηρούν έναν ή πολλούς πόρους ενώ ταυτόχρονα περιμένουν έναν ή περισσότερους άλλους.
  • Η αποφυγή αδιεξόδου είναι το απλούστερο και πιο χρήσιμο μοντέλο που κάθε διεργασία δηλώνει τον μέγιστο αριθμό πόρων κάθε τύπου που μπορεί να χρειαστεί.
  • Ο αλγόριθμος αποφυγής αδιεξόδου σάς βοηθά να αξιολογήσετε δυναμικά την κατάσταση κατανομής πόρων, έτσι ώστε να μην υπάρχει ποτέ κατάσταση κυκλικής αναμονής.
  • Το αδιέξοδο είναι μια άπειρη διαδικασία, ενώ η πείνα είναι μια μακρά αναμονή αλλά όχι μια άπειρη διαδικασία.