Τα αρχεία αντιστοίχισης μνήμης χρησιμοποιούν εικονική μνήμη για να αντιστοιχίσουν αρχεία στο χώρο διευθύνσεων της διεργασίας, μετά την οποία η διεργασία χειρίζεται το αρχείο ακριβώς όπως η διεύθυνση στο χώρο διεργασίας, όπως η χρήση memcpy και άλλων λειτουργιών λειτουργίας μνήμης στη γλώσσα C. Αυτή η μέθοδος μπορεί να χρησιμοποιηθεί καλά σε περιπτώσεις όπου ένα αρχείο ή ένα μεγάλο αρχείο χρειάζεται συχνή επεξεργασία και η απόδοση επεξεργασίας IO είναι υψηλότερη από αυτή του συνηθισμένου IO Η κοινόχρηστη μνήμη είναι μια ειδική περίπτωση αρχείων με αντιστοίχιση μνήμης, τα οποία αντιστοιχίζουν ένα κομμάτι μνήμης αντί για ένα αρχείο στο δίσκο. Το θέμα της κοινόχρηστης μνήμης είναι η διεργασία και το λειτουργικό σύστημα εκχωρεί χώρο μνήμης σε κάθε διεργασία από προεπιλογή και κάθε διεργασία επιτρέπεται να έχει πρόσβαση μόνο σε ένα κομμάτι μνήμης που της έχει εκχωρηθεί από το λειτουργικό σύστημα, αλλά όχι σε άλλες διεργασίες. Και μερικές φορές χρειάζεται να έχετε πρόσβαση στο ίδιο κομμάτι μνήμης μεταξύ διαφορετικών διαδικασιών, τι πρέπει να κάνετε; Το λειτουργικό σύστημα παρέχει ένα API για τη δημιουργία πρόσβασης σε κοινόχρηστη μνήμη και οι διεργασίες που χρειάζονται κοινή χρήση μνήμης μπορούν να έχουν πρόσβαση στη μνήμη που μοιράζονται πολλές διεργασίες μέσω αυτού του συνόλου καθορισμένων API και κάθε διεργασία έχει πρόσβαση σε αυτήν τη μνήμη σαν να είχε πρόσβαση σε ένα αρχείο σε σκληρό δίσκο. Το .Net 4.0 παρουσιάζει το System.IO. Χώρος ονομάτων MemoryMappedFiles, μια κλάση που ενσωματώνει τα API που σχετίζονται με την κοινόχρηστη μνήμη των Windows, διευκολύνοντας τους προγραμματιστές .Net να χρησιμοποιούν αρχεία αντιστοίχισης μνήμης. Χρησιμοποιήστε κοινόχρηστη μνήμη σε C#. Ο ακόλουθος κώδικας για το App1 επιτρέπει στο χρήστη να εισάγει μια γραμμή κειμένου στην κοινόχρηστη μνήμη. Το App2 ανανεώνει συνεχώς την κονσόλα και εξάγει το πιο πρόσφατο περιεχόμενο κοινόχρηστης μνήμης. Το App3 υλοποιεί τις ίδιες λειτουργίες με το App2, αλλά η μέθοδος ανάγνωσης είναι διαφορετική.
Χρησιμοποιήθηκαν δύο μέθοδοι για την ανάγνωση των δεδομένων. Δεδομένου ότι η επικοινωνία μεταξύ των διαδικασιών χρησιμοποιήθηκε σπάνια στο παρελθόν, αυτή η μέθοδος είναι μόνο μια προκαταρκτική κατανόηση. Το πρόγραμμα είναι πολύ υποτυπώδες και υπάρχουν πολλά πράγματα που δεν κρίνονται. Για παράδειγμα, πώς να δημιουργήσετε μια κοινόχρηστη μνήμη, πώς να την ανακτήσετε και να τη διαγράψετε κ.λπ.
|