Πίνακας περιεχομένων:
- Ορισμός - Τι σημαίνει ο αμοιβαίος αποκλεισμός (Mutex);
- Η Techopedia εξηγεί τον Αμοιβαίο Αποκλεισμό (Mutex)
Ορισμός - Τι σημαίνει ο αμοιβαίος αποκλεισμός (Mutex);
Ο αμοιβαίος αποκλεισμός (mutex) είναι ένα αντικείμενο προγράμματος που εμποδίζει την ταυτόχρονη πρόσβαση σε έναν κοινόχρηστο πόρο. Αυτή η έννοια χρησιμοποιείται στον ταυτόχρονο προγραμματισμό με μια κρίσιμη ενότητα, ένα κομμάτι κώδικα στο οποίο οι διεργασίες ή τα νήματα έχουν πρόσβαση σε έναν κοινόχρηστο πόρο. Μόνο ένα νήμα ανήκει στον mutex κάθε φορά, έτσι δημιουργείται ένα mutex με ένα μοναδικό όνομα όταν ξεκινά ένα πρόγραμμα. Όταν ένα νήμα κρατά έναν πόρο, πρέπει να κλειδώσει το mutex από άλλα νήματα για να αποτρέψει ταυτόχρονη πρόσβαση του πόρου. Με την απελευθέρωση του πόρου, το νήμα ξεκλειδώνει το mutex.
Η Techopedia εξηγεί τον Αμοιβαίο Αποκλεισμό (Mutex)
Το Mutex μπαίνει στην εικόνα όταν δύο νήματα δουλεύουν ταυτόχρονα με τα ίδια δεδομένα. Λειτουργεί ως κλειδαριά και είναι το πιο βασικό εργαλείο συγχρονισμού. Όταν ένα νήμα προσπαθεί να αποκτήσει ένα mutex, κερδίζει το mutex αν είναι διαθέσιμο, διαφορετικά το νήμα είναι ρυθμισμένο σε κατάσταση ύπνου. Ο αμοιβαίος αποκλεισμός μειώνει την λανθάνουσα κατάσταση και την πολυάσχολις περιμένει με χρήση διακοπτών ουράς και διακόπτες περιβάλλοντος. Το Mutex μπορεί να εφαρμοστεί τόσο σε επίπεδο υλικού όσο και σε επίπεδο λογισμικού.
Η απενεργοποίηση διακοπών για τον μικρότερο αριθμό οδηγιών είναι ο καλύτερος τρόπος για την επιβολή του mutex στο επίπεδο του πυρήνα και για την αποτροπή της καταστροφής των δομών δεδομένων. Εάν πολλαπλοί επεξεργαστές μοιράζονται την ίδια μνήμη, έχει οριστεί μια σημαία για την ενεργοποίηση και την απενεργοποίηση της απόκτησης πόρων βάσει της διαθεσιμότητας. Ο μηχανισμός κατειλημμένης αναμονής επιβάλλει το mutex στις περιοχές λογισμικού. Αυτό είναι εφοδιασμένο με αλγορίθμους όπως ο αλγόριθμος του Dekker, ο ασπρόμαυρος αλκοολικός φούρνος, ο αλγόριθμος του Szymanski, ο αλγόριθμος του Peterson και ο αλγόριθμος αρτοποιίας Lamport.
Μπορούν να οριστούν αμοιβαία αποκλειστικοί αναγνώστες και κωδικοί τάξης mutex ανάγνωσης / ανάγνωσης για την αποτελεσματική υλοποίηση του mutex.
