Τι είναι το Livelock;
Το Livelock είναι μια κατάσταση όπου ένα αίτημα αποκλειστικής κλειδαριάς απορρίπτεται επανειλημμένα, καθώς πολλές αλληλεπικαλυπτόμενες κοινόχρηστες κλειδαριές συνεχίζουν να παρεμβαίνουν μεταξύ τους. Οι διαδικασίες συνεχίζουν να αλλάζουν την κατάστασή τους, γεγονός που τους εμποδίζει περαιτέρω να ολοκληρώσουν την εργασία. Αυτό τους εμποδίζει περαιτέρω να ολοκληρώσουν την εργασία.
Σε αυτό το σεμινάριο λειτουργικού συστήματος, θα μάθετε:
- Τι είναι το Livelock;
- Παραδείγματα Livelock
- Τι οδηγεί στο Livelock;
- Τι είναι το αδιέξοδο;
- Παράδειγμα αδιεξόδου
- Τι είναι η πείνα;
- Διαφορά μεταξύ αδιεξόδου, λιμοκτονίας και Livelock
Παραδείγματα Livelock
Παράδειγμα 1:
Ένα ευκολότερο παράδειγμα του Livelock θα ήταν δύο άτομα που θα συναντηθούν πρόσωπο με πρόσωπο σε έναν διάδρομο και και οι δύο θα παραμείνουν στην άκρη για να αφήσουν το άλλο να περάσει. Καταλήγουν να κινούνται από τη μία πλευρά στην άλλη χωρίς να σημειώνουν πρόοδο καθώς κινούνται με τον ίδιο τρόπο εκείνη τη στιγμή. Εδώ, δεν διασχίζουν ποτέ ο ένας τον άλλον.
Παράδειγμα 2:
Μπορείτε να δείτε στην παραπάνω εικόνα, καθεμία από τις δύο δεδομένες διαδικασίες χρειάζεται δύο πόρους και χρησιμοποιούν το πρωτόγονο μητρώο εισόδου για να προσπαθήσουν να αποκτήσουν τις απαραίτητες κλειδαριές για αυτούς. Εάν η προσπάθεια αποτύχει, η μέθοδος λειτουργεί ξανά.
- Διαδικασία A πόρος Y κράτησης
- Η διαδικασία Β διατηρεί τον πόρο X
- Η διαδικασία Α απαιτεί πόρο X
- Η διαδικασία Β απαιτεί πόρο Y
Υποθέτοντας ότι η διαδικασία Α εκτελείται πρώτα και αποκτά πόρο δεδομένων Χ και στη συνέχεια η διαδικασία Β εκτελείται και αποκτά πόρο Υ, ανεξάρτητα από την ποια διαδικασία εκτελείται πρώτα, καμία από αυτές δεν προχωρά περαιτέρω.
Ωστόσο, καμία από τις δύο διαδικασίες δεν έχει αποκλειστεί. Χρησιμοποιούν τους πόρους της CPU επανειλημμένα χωρίς να σημειωθεί πρόοδος, αλλά επίσης σταματούν οποιοδήποτε μπλοκ επεξεργασίας.
Επομένως, αυτή η κατάσταση δεν είναι αδιέξοδο επειδή δεν υπάρχει ούτε μία διαδικασία που έχει αποκλειστεί, αλλά αντιμετωπίζουμε την κατάσταση κάτι ισοδύναμο με το αδιέξοδο, το οποίο είναι το LIVELOCK.
Τι οδηγεί στο Livelock;
Το Livelock συμβαίνει όταν ο συνολικός αριθμός των επιτρεπόμενων διεργασιών σε ένα συγκεκριμένο σύστημα πρέπει να καθοριστεί από τον συνολικό αριθμό καταχωρήσεων στον πίνακα διεργασιών. Επομένως, οι κουλοχέρηδες του πίνακα επεξεργασίας πρέπει να αναφέρονται ως Πεπερασμένοι Πόροι.
Τι είναι το αδιέξοδο;
Ένα αδιέξοδο είναι μια κατάσταση που εμφανίζεται στο λειτουργικό σύστημα όταν οποιαδήποτε διαδικασία εισέρχεται σε κατάσταση αναμονής επειδή μια άλλη διαδικασία αναμονής κρατά τον απαιτούμενο πόρο. Το αδιέξοδο είναι ένα συνηθισμένο πρόβλημα στην πολλαπλή επεξεργασία όπου πολλές διαδικασίες μοιράζονται έναν συγκεκριμένο τύπο αμοιβαία αποκλειστικού πόρου γνωστό ως soft lock ή λογισμικό
Παράδειγμα αδιεξόδου
- Ένα πραγματικό παράδειγμα θα ήταν η κυκλοφορία, η οποία κινείται μόνο προς μία κατεύθυνση.
- Εδώ, μια γέφυρα θεωρείται πόρος.
- Έτσι, όταν συμβαίνει αδιέξοδο, μπορεί εύκολα να επιλυθεί εάν ένα αυτοκίνητο κάνει αντίγραφα ασφαλείας (Preempt πόρων και επαναφορά).
- Πολλά αυτοκίνητα μπορεί να χρειαστεί να δημιουργήσουν αντίγραφα ασφαλείας εάν παρουσιαστεί αδιέξοδο.
- Έτσι, η πείνα είναι δυνατή.
Τι είναι η πείνα;
Η πείνα είναι μια κατάσταση όπου όλες οι διαδικασίες χαμηλής προτεραιότητας μπλοκαρίστηκαν και οι διαδικασίες υψηλής προτεραιότητας συνεχίζονται. Σε οποιοδήποτε σύστημα, τα αιτήματα για πόρους υψηλής / χαμηλής προτεραιότητας συνεχίζουν να συμβαίνουν δυναμικά. Ως εκ τούτου, απαιτείται κάποια πολιτική για να αποφασιστεί ποιος θα λάβει υποστήριξη πότε.
Χρησιμοποιώντας μερικούς αλγορίθμους, ορισμένες διαδικασίες ενδέχεται να μην εξυπηρετούνται το επιθυμητό ακόμη κι αν δεν έχουν αδιέξοδο Η πείνα συμβαίνει όταν ορισμένα νήματα καθιστούν τους κοινόχρηστους πόρους μη διαθέσιμους για μεγάλο χρονικό διάστημα.
Παράδειγμα λιμοκτονίας:
Για παράδειγμα, ένα αντικείμενο προσφέρει μια συγχρονισμένη μέθοδο που ενδέχεται να χρειαστεί πολύς χρόνος για να επιστρέψει. Εάν ένα νήμα χρησιμοποιεί συχνά αυτήν τη μέθοδο, άλλα νήματα που χρειάζονται επίσης συχνή συγχρονισμένη πρόσβαση στο ίδιο αντικείμενο συχνά αποκλείονται.
Διαφορά μεταξύ αδιεξόδου, λιμοκτονίας και Livelock
- Ένα αδιέξοδο είναι μια κατάσταση που εμφανίζεται στο λειτουργικό σύστημα όταν οποιαδήποτε διαδικασία εισέρχεται σε κατάσταση αναμονής, επειδή ο απαιτούμενος πόρος συγκρατείται από άλλη διαδικασία αναμονής.
- Ένα ζωντανό κλειδί, από την άλλη πλευρά, είναι σχεδόν παρόμοιο με ένα αδιέξοδο, εκτός από το ότι οι καταστάσεις των διαδικασιών που εμπλέκονται σε ένα ζωντανό κλειδί συνεχίζουν να αλλάζουν μεταξύ τους, καμία δεν προχωρά.
- Έτσι, το Livelock είναι μια μοναδική περίπτωση λιμοκτονίας πόρων.
Περίληψη:
- Ορισμός: Το Livelock είναι μια κατάσταση όπου ένα αίτημα αποκλειστικής κλειδαριάς απορρίπτεται επανειλημμένα, καθώς πολλές αλληλεπικαλυπτόμενες κοινές κλειδαριές συνεχίζουν να παρεμβαίνουν μεταξύ τους.
- Το Livelock συμβαίνει όταν ο συνολικός αριθμός των επιτρεπόμενων διεργασιών σε ένα συγκεκριμένο σύστημα πρέπει να καθοριστεί από τον συνολικό αριθμό καταχωρήσεων στον πίνακα διεργασιών
- Ένα αδιέξοδο είναι μια κατάσταση που εμφανίζεται στο λειτουργικό σύστημα όταν οποιαδήποτε διαδικασία εισέρχεται σε κατάσταση αναμονής επειδή μια άλλη διαδικασία αναμονής κρατά τον απαιτούμενο πόρο.
- Ένα πραγματικό παράδειγμα θα ήταν η κυκλοφορία, η οποία κινείται μόνο προς μία κατεύθυνση.
- Ένα παράδειγμα του Livelock θα ήταν δύο άτομα που θα συναντηθούν πρόσωπο με πρόσωπο σε έναν διάδρομο και και οι δύο θα παραμείνουν στην άκρη για να αφήσουν το άλλο να περάσει.
- Η πείνα είναι μια κατάσταση όπου όλες οι διαδικασίες χαμηλής προτεραιότητας μπλοκαρίστηκαν και οι διαδικασίες υψηλής προτεραιότητας συνεχίζονται.