Υλικό υπολογιστών

Γνώση Υπολογιστών >> Υλικό υπολογιστών >  >> Επεξεργαστές (CPU)

Τι συμβαίνει εάν δύο επεξεργαστές προσπαθούν να έχουν πρόσβαση στην παγκόσμια μνήμη την ίδια στιγμή;

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

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

* Διαφθορά δεδομένων: Η εγγραφή ενός επεξεργαστή μπορεί να αντικαταστήσει τα δεδομένα που γράφουν ο άλλος επεξεργαστής, με αποτέλεσμα τα χαμένα δεδομένα ή τις λανθασμένες τιμές. Αυτό είναι ένα πολύ κοινό αποτέλεσμα εάν δεν υπάρχει συγχρονισμός.

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

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

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

Για να αποφευχθούν αυτά τα προβλήματα, οι προγραμματιστές πρέπει να χρησιμοποιούν μηχανισμούς συγχρονισμού. Αυτοί οι μηχανισμοί επιβάλλουν την παραγγελία των προσβάσιμων μνήμης, εμποδίζοντας τις συνθήκες της φυλής. Παραδείγματα περιλαμβάνουν:

* mutexes (αμοιβαίος αποκλεισμός): Μόνο ένας επεξεργαστής μπορεί να κρατήσει το mutex ανά πάσα στιγμή, αποτρέποντας ταυτόχρονη πρόσβαση σε κοινούς πόρους.

* Σημειογραφικά: Γενικότερα από τα mutexes, επιτρέποντας τον πιο πολύπλοκο έλεγχο της πρόσβασης σε κοινούς πόρους.

* Ατομικές λειτουργίες: Οι λειτουργίες που είναι εγγυημένες να εκτελούνται ατομικά (ως ενιαία, αδιαίρετη μονάδα), αποτρέποντας την ταυτόχρονη τροποποίηση.

* φραγμοί μνήμης/φράχτες: Αυτές επιβάλλουν την παραγγελία των λειτουργιών μνήμης, εξασφαλίζοντας ότι ορισμένες λειτουργίες ολοκληρώνονται πριν ξεκινήσουν άλλοι.

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα