Skip to main content

Τι είναι η ψευδή κοινή χρήση;

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

Ένας από τους πρωταρχικούς λόγους για τους οποίους μπορεί να συμβεί ψευδώς κοινή χρήση βρίσκεται στον τρόπο με τον οποίο ένα λειτουργικό σύστημα ή υλικό χειρίζεται τα δεδομένα ανάγνωσης και γραφής.Όταν οι πληροφορίες από σκληρό δίσκο ή άλλη πηγή διαβάζονται ή γράφονται από ένα πρόγραμμα, συνήθως φορτώνεται σε προσωρινή μνήμη cache, ώστε να μπορεί να προσεγγιστεί γρήγορα.Η ποσότητα των πληροφοριών που αποθηκεύονται από την τοποθεσία πηγής ονομάζεται γραμμή cache και είναι ένα λογικό μπλοκ μνήμης που κανονικά μπορεί να είναι μεταξύ 2 bytes και 256 bytes σε μήκος.Κάτω από ορισμένα λειτουργικά συστήματα ή αρχιτεκτονικές συστημάτων, τα προγράμματα είναι σε θέση να εκτελούν ταυτόχρονα, όπως στην παράλληλη επεξεργασία.Αυτό σημαίνει ότι είναι δυνατό για δύο ξεχωριστά προγράμματα να προσπαθήσουν να αποκτήσουν πρόσβαση σε πληροφορίες στην ίδια γραμμή προσωρινής μνήμης, οπότε κάθε πρόγραμμα θα έχει το δικό του αντίγραφο των δεδομένων προέλευσης, ενδεχομένως προκαλώντας αλλαγές σε μία μνήμη που δεν αντανακλάται στην άλλη μνήμη cache, ακυρώνοντας τοδεδομένα που διατηρεί.

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