Τι είναι το Κλείδωμα Μνήμης;

Ιστορικά, όλα τα προγράμματα υπολογιστών γράφτηκαν με έναν εντελώς διαδοχικό τρόπο. Αυτό είναι εύκολο να το διαβάσετε, να γράψετε και να το κατανοήσετε. Είναι επίσης απλό για έναν υπολογιστή να εκτελεστεί και απαιτεί σχετικά απλό υλικό. Με αυτό το πρότυπο σχεδίασης, οι μόνοι δύο τρόποι για να αυξήσετε την απόδοση του συστήματος είναι να γράψετε πιο αποτελεσματικό κώδικα και να αυξήσετε την ταχύτητα της CPU. Μπορεί να είναι δυνατή η αύξηση της αποτελεσματικότητας του κώδικα, αλλά είναι γενικά μια πολύπλοκη διαδικασία με συχνά περιορισμένα αποτελέσματα.

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

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

Για να επωφεληθείτε από τις πολυπύρηνες CPU, ο κώδικας πρέπει να γραφτεί με τρόπο πολλαπλών νημάτων. Στη συνέχεια, κάθε νήμα μπορεί να εκτελεστεί ταυτόχρονα, κλιμακώνοντας το όφελος απόδοσης με βάση τον αριθμό των διαθέσιμων νημάτων και των πυρήνων της CPU. Κάνοντας αυτό, όμως, αντιμετωπίζετε μια νέα πρόκληση, την «συνθήκη αγώνα».

Σημείωση: Ορισμένες εργασίες δεν μπορούν να είναι πολλαπλών νημάτων, ενώ άλλες μπορεί να είναι μαζικά πολλαπλών νημάτων. Τα πιθανά οφέλη απόδοσης βασίζονται στην εργασία που γίνεται.

Συνθήκες Αγώνα

Το λογισμικό πολλαπλών νημάτων μπορεί να εκμεταλλευτεί πολλαπλούς πυρήνες. Σε αυτά τα νερά παραμονεύουν κίνδυνοι, έτοιμοι να παγιδεύσουν τον άπειρο προγραμματιστή. Μια συνθήκη κούρσας μπορεί να προκύψει όταν δύο διαφορετικά νήματα αλληλεπιδρούν με το ίδιο bit μνήμης.

Ένα απλό παράδειγμα θα μπορούσε να είναι δύο νήματα που προσπαθούν να ελέγξουν και να αυξήσουν μια μεταβλητή ταυτόχρονα. Ας πούμε ότι a=0 . Στη συνέχεια, δύο διαφορετικά νήματα εκτελούν τις λειτουργίες τους και, σε κάποιο σημείο, τσεκάρουν το a και το αυξάνουν κατά ένα. Γενικά, θα περιμένατε το αποτέλεσμα δύο νημάτων που προσθέτουν ένα στο μηδέν να είναι δύο. Τις περισσότερες φορές, αυτό θα έπρεπε να συμβαίνει. Μπορείτε να έχετε διαφορετικό αποτέλεσμα εάν και τα δύο νήματα περάσουν από αυτήν τη συγκεκριμένη λειτουργικότητα την κατάλληλη στιγμή ακριβώς.

Σε αυτήν την περίπτωση, το πρώτο νήμα διαβάζει την τιμή ενός . Προτού το πρώτο νήμα μπορέσει να αυξήσει την τιμή του αν και, το δεύτερο νήμα το διαβάζει. Τώρα το πρώτο νήμα προσθέτει ένα στο μηδέν, αλλά το δεύτερο νήμα πιστεύει ήδη ότι η τιμή είναι μηδέν, προσθέτοντας ένα στο μηδέν. Το αποτέλεσμα αυτού είναι ότι η τελική τιμή του a είναι 1, όχι 2.

Αγώνας για το χειρότερο σενάριο

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

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

Εάν η μεταβλητή είπε true στην αρχή της ανάγνωσης, αλλά βρισκόταν σε διαδικασία αντικατάστασης στη λέξη false, το αποτέλεσμα της λειτουργίας ανάγνωσης μπορεί να είναι κάτι σαν "trlse". Αυτό δεν είναι «αληθές» ή «ψεύτικο». Το να μην υπάρχει καμία από τις δύο επιλογές σε μια δυαδική επιλογή θα είχε σχεδόν βέβαιο αποτέλεσμα τη συντριβή της εφαρμογής. Αυτή η καταστροφή της μνήμης μπορεί να οδηγήσει σε πολλά ζητήματα ασφάλειας, όπως η άρνηση υπηρεσίας και η κλιμάκωση των προνομίων.

Κλείδωμα του αγώνα

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

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

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

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

συμπέρασμα

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

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


Leave a Comment

Πώς να χρησιμοποιήσετε την Επίγνωση Συνομιλίας και τη Ζωντανή Ακρόαση στα AirPods

Πώς να χρησιμοποιήσετε την Επίγνωση Συνομιλίας και τη Ζωντανή Ακρόαση στα AirPods

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

Πώς να προσθέσετε έναν εκτυπωτή στα Windows 10

Πώς να προσθέσετε έναν εκτυπωτή στα Windows 10

Η προσθήκη ενός εκτυπωτή στα Windows 10 είναι απλή, αν και η διαδικασία για ενσύρματες συσκευές θα είναι διαφορετική από ό,τι για ασύρματες συσκευές.

Πώς να ελέγξετε τη μνήμη RAM και να ελέγξετε τα σφάλματα RAM στον υπολογιστή σας με την υψηλότερη ακρίβεια

Πώς να ελέγξετε τη μνήμη RAM και να ελέγξετε τα σφάλματα RAM στον υπολογιστή σας με την υψηλότερη ακρίβεια

Όπως γνωρίζετε, η μνήμη RAM είναι ένα πολύ σημαντικό μέρος του υλικού ενός υπολογιστή, λειτουργώντας ως μνήμη για την επεξεργασία δεδομένων και είναι ο παράγοντας που καθορίζει την ταχύτητα ενός φορητού ή επιτραπέζιου υπολογιστή. Στο παρακάτω άρθρο, το WebTech360 θα σας παρουσιάσει μερικούς τρόπους για να ελέγξετε για σφάλματα μνήμης RAM χρησιμοποιώντας λογισμικό στα Windows.

Πώς να διορθώσετε το σφάλμα GeForce Now Κωδικός 0xC272008F

Πώς να διορθώσετε το σφάλμα GeForce Now Κωδικός 0xC272008F

Ετοιμάζεστε για μια βραδιά παιχνιδιών, και θα είναι μεγάλη - μόλις αποκτήσατε το "Star Wars Outlaws" στην υπηρεσία streaming GeForce Now. Ανακαλύψτε την μόνη γνωστή λύση που σας δείχνει πώς να διορθώσετε το σφάλμα GeForce Now κωδικός 0xC272008F για να μπορέσετε ξανά να παίξετε παιχνίδια της Ubisoft.

Πώς να Χρησιμοποιήσετε τα AirPods με Τα Τηλέφωνα Samsung

Πώς να Χρησιμοποιήσετε τα AirPods με Τα Τηλέφωνα Samsung

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

Βασικά Στοιχεία Εκτύπωσης 3D: Μια Λίστα Συντήρησης που Πρέπει να Διαβαστεί

Βασικά Στοιχεία Εκτύπωσης 3D: Μια Λίστα Συντήρησης που Πρέπει να Διαβαστεί

Η διατήρηση του εξοπλισμού σας σε καλή κατάσταση είναι απαραίτητη. Ακολουθήστε αυτές τις χρήσιμες συμβουλές για να διατηρήσετε τον εκτυπωτή 3D σας σε άριστη κατάσταση.

Βασικά του 3D Εκτύπωσης: Συμβουλές Συντήρησης για τον Εκτυπωτή 3D σας

Βασικά του 3D Εκτύπωσης: Συμβουλές Συντήρησης για τον Εκτυπωτή 3D σας

Η συντήρηση των εκτυπωτών 3D είναι πολύ σημαντική για να επιτύχετε τα καλύτερα αποτελέσματα. Ακολουθούν κάποιες σημαντικές συμβουλές που πρέπει να έχετε υπόψη.

Τι να κάνετε αν τα Powerbeats Pro δεν φορτίζουν στη θήκη

Τι να κάνετε αν τα Powerbeats Pro δεν φορτίζουν στη θήκη

Εάν τα Powerbeats Pro σας δεν φορτίζουν, χρησιμοποιήστε μια άλλη πηγή ενέργειας και καθαρίστε τα ακουστικά σας. Αφήστε τη θήκη ανοιχτή κατά τη διάρκεια της φόρτισης των ακουστικών σας.

Πώς να Συνδέσετε Laptop με Windows 11 σε Προβολέα/TV

Πώς να Συνδέσετε Laptop με Windows 11 σε Προβολέα/TV

Διαβάστε αυτό το άρθρο για να μάθετε τη διαδικασία σύνδεσης laptop με έναν προβολέα ή μια TV στα Windows 11 και Windows 10.

5 Λόγοι Γιατί Ο Φορητός Υπολογιστής Σας Υπερθερμαίνεται

5 Λόγοι Γιατί Ο Φορητός Υπολογιστής Σας Υπερθερμαίνεται

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