Αδιέξοδο εναντίον λιμοκτονίας
Η κύρια διαφορά μεταξύ αδιεξόδου και πείνας είναι η σχέση αιτίου και αποτελέσματος μεταξύ τους. είναι το αδιέξοδο που προκαλεί την πείνα. Μια άλλη ενδιαφέρουσα διαφορά μεταξύ του αδιεξόδου και της πείνας είναι ότι το αδιέξοδο είναι ένα πρόβλημα, ενώ η πείνα μπορεί, μερικές φορές, να βοηθήσει να βγούμε από ένα αδιέξοδο. Στον κόσμο των υπολογιστών, κατά τη σύνταξη ενός προγράμματος υπολογιστή θα υπάρχουν περισσότερες από μία διεργασίες/νήμα που θα εκτελούνται ταυτόχρονα το ένα μετά το άλλο προκειμένου να εκπληρώσουν την απαιτούμενη υπηρεσία στο πρόγραμμα. Επομένως, για να υπάρχει ένα δίκαιο σύστημα, ο προγραμματιστής θα πρέπει να διασφαλίσει ότι όλες οι διεργασίες/τα νήματα θα λαμβάνουν ή θα έχουν αρκετή πρόσβαση στους πόρους που χρειάζονται. Αν όχι, θα υπάρξει αδιέξοδο και θα οδηγήσει σε λιμοκτονία αργότερα. Γενικά, ένα δίκαιο σύστημα δεν περιέχει αδιέξοδα ή λιμοκτονίες. Αδιέξοδα και λιμοκτονίες θα συμβούν κυρίως όταν πολλά νήματα ανταγωνίζονται για περιορισμένους πόρους.
Τι είναι το αδιέξοδο;
Ένα αδιέξοδο είναι μια κατάσταση που εμφανίζεται όταν δύο νήματα ή διεργασίες περιμένουν το ένα το άλλο για να ολοκληρώσουν την εργασία. Θα κλείσουν μόνο το τηλέφωνο, αλλά ποτέ δεν θα σταματήσουν ή θα ολοκληρώσουν το έργο τους. Στην επιστήμη των υπολογιστών, τα αδιέξοδα φαίνονται παντού. Σε μια βάση δεδομένων συναλλαγών, όταν δύο διεργασίες η καθεμία εντός της δικής της συναλλαγής ενημερώνουν τις ίδιες δύο σειρές πληροφοριών αλλά με την αντίθετη σειρά, θα προκαλέσει αδιέξοδο. Στον ταυτόχρονο προγραμματισμό, μπορεί να προκύψει αδιέξοδο όταν δύο ανταγωνιστικές ενέργειες περιμένουν η μία την άλλη να προχωρήσει. Στα τηλεπικοινωνιακά συστήματα, μπορεί να προκύψει αδιέξοδο λόγω απώλειας ή καταστροφής σημάτων.
Προς το παρόν, το αδιέξοδο είναι ένα από τα κύρια προβλήματα στα συστήματα πολλαπλής επεξεργασίας και στους παράλληλους υπολογιστές. Ως λύση, εφαρμόζεται ένα σύστημα κλειδώματος που ονομάζεται συγχρονισμός διεργασιών τόσο για λογισμικό όσο και για υλικό.
Τι είναι η πείνα;
Από το λεξικό της ιατρικής επιστήμης, η πείνα είναι αποτέλεσμα σοβαρής ή ολικής έλλειψης θρεπτικών ουσιών που απαιτούνται για τη διατήρηση της ζωής. Ομοίως, στην επιστήμη των υπολογιστών, η ασιτία είναι ένα πρόβλημα που αντιμετωπίζεται όταν πολλά νήματα ή διεργασίες περιμένουν τον ίδιο πόρο, ο οποίος ονομάζεται αδιέξοδο.
Για να βγείτε από ένα αδιέξοδο, μία από τις διεργασίες ή τα νήματα θα πρέπει να εγκαταλείψει ή να επιστρέψει, έτσι ώστε το άλλο νήμα ή διεργασία να μπορεί να χρησιμοποιήσει τον πόρο. Εάν αυτό συμβαίνει συνεχώς και η ίδια διεργασία ή νήμα πρέπει να εγκαταλείπει ή να υποχωρεί κάθε φορά ενώ αφήνει άλλες διεργασίες ή νήματα να χρησιμοποιούν τον πόρο, τότε η επιλεγμένη διεργασία ή το νήμα, που επανήλθε θα υποστεί μια κατάσταση που ονομάζεται ασιτία. Επομένως, για να βγούμε από ένα αδιέξοδο, η πείνα είναι μια από τις λύσεις. Ως εκ τούτου, μερικές φορές η πείνα ονομάζεται ένα είδος ζωντανού. Όταν υπάρχουν πολλές διεργασίες ή νήματα υψηλής προτεραιότητας, μια διαδικασία ή νήμα χαμηλότερης προτεραιότητας θα παραμένει πάντα σε αδιέξοδο.
Μπορεί να υπάρξουν πολλές λιμοκτονίες, όπως λιμοκτονία σε πόρους και λιμοκτονία με CPU. Υπάρχουν πολλά κοινά παραδείγματα για την πείνα. Είναι πρόβλημα αναγνωστών-συγγραφέων και πρόβλημα φιλοσόφων τραπεζαρίας, που είναι πιο διάσημο. Υπάρχουν πέντε σιωπηλοί φιλόσοφοι που κάθονται σε ένα στρογγυλό τραπέζι με μπολ με μακαρόνια. Πιρούνια τοποθετούνται μεταξύ κάθε ζεύγους διπλανών φιλοσόφων. Κάθε φιλόσοφος πρέπει εναλλάξ να σκέφτεται και να τρώει. Ωστόσο, ένας φιλόσοφος μπορεί να φάει μακαρόνια μόνο όταν έχει και αριστερό και δεξί πιρούνι.
Οι «Φιλόσοφοι της Τραπεζαρίας»
Ποια είναι η διαφορά μεταξύ Deadlock και Starvation;
Διαδικασία:
• Σε αδιέξοδο, τα δύο νήματα ή διεργασίες θα περιμένουν το ένα το άλλο και δεν προχωρούν και τα δύο.
• Σε κατάσταση λιμοκτονίας, όταν δύο ή περισσότερα νήματα ή διεργασίες περιμένουν τον ίδιο πόρο, το ένα θα κάνει roll back και θα αφήσει τους άλλους να χρησιμοποιήσουν τον πόρο πρώτα και μετά το νήμα ή η διεργασία που στερείται πείνας θα προσπαθήσει ξανά. Επομένως, όλα τα νήματα ή οι διεργασίες θα προχωρήσουν ούτως ή άλλως.
Επιστροφή:
• Σε ένα αδιέξοδο, τόσο τα νήματα/διεργασίες υψηλής προτεραιότητας, όσο και τα νήματα/διεργασίες χαμηλής προτεραιότητας, θα περιμένουν το ένα το άλλο απεριόριστα. Δεν τελειώνει ποτέ.
• Όμως, σε συνθήκες πείνας, οι χαμηλής προτεραιότητας θα περιμένουν ή θα κάνουν πίσω, αλλά οι υψηλής προτεραιότητας θα συνεχίσουν.
Αναμονή ή Κλείδωμα:
• Ένα αδιέξοδο είναι μια κυκλική αναμονή.
• Η πείνα είναι ένα είδος ζωντανού και μερικές φορές βοηθά να βγούμε από ένα αδιέξοδο.
Αδιέξοδο και πείνα:
• Ένα αδιέξοδο προκαλεί πείνα, αλλά η πείνα δεν προκαλεί αδιέξοδο.
Αιτίες:
• Θα προκύψει αδιέξοδο λόγω αμοιβαίου αποκλεισμού, αναμονής και αναμονής, χωρίς προκαταβολή ή κυκλική αναμονή.
• Η πείνα συμβαίνει λόγω σπανιότητας πόρων, ανεξέλεγκτης διαχείρισης πόρων και προτεραιοτήτων διαδικασίας.
Σύνοψη:
Αδιέξοδο εναντίον λιμοκτονίας
Το αδιέξοδο και η λιμοκτονία είναι μερικά από τα προβλήματα που προκύπτουν λόγω αγώνων δεδομένων και συνθηκών αγώνων που συμβαίνουν κατά τον προγραμματισμό καθώς και κατά την εφαρμογή υλικού. Σε ένα αδιέξοδο, δύο νήματα θα περιμένουν απεριόριστα το ένα το άλλο χωρίς να εκτελεστούν, ενώ, σε κατάσταση λιμοκτονίας, το ένα νήμα θα κυλήσει πίσω και θα αφήσει το άλλο νήμα να χρησιμοποιήσει τους πόρους. Ένα αδιέξοδο θα προκαλέσει ασιτία, ενώ η πείνα θα βοηθήσει ένα νήμα να βγει από ένα αδιέξοδο.