Fișierele de mapare a memoriei folosesc memoria virtuală pentru a mapa fișierele la spațiul de adrese al procesului, după care procesul manipulează fișierul la fel ca adresa din spațiul procesului, de exemplu folosind memcpy și alte funcții de operare a memoriei în limbajul C. Această metodă poate fi folosită bine în situații în care un fișier sau un fișier mare trebuie procesat frecvent, iar eficiența procesării IO este mai mare decât cea a unui IO obișnuit Memoria partajată este un caz special al fișierelor mapate în memorie, care mapează o bucată de memorie în loc de un fișier pe disc. Subiectul memoriei partajate este Proces, iar sistemul de operare alocă un spațiu de memorie fiecărui proces în mod implicit, iar fiecărui proces i se permite accesarea doar unei bucăți de memorie alocate de sistemul de operare, dar nu și altor procese. Și uneori trebuie să accesezi aceeași bucată de memorie între procese diferite, ce ar trebui să faci? Sistemul de operare oferă un API pentru a crea acces la memoria partajată, iar procesele care trebuie să împartă memoria pot accesa memoria partajată de mai multe procese prin acest set de API-uri definite, iar fiecare proces accesează această memorie ca și cum ar accesa un fișier de pe un hard disk. .Net 4.0 introduce System.IO. Namespace-ul MemoryMappedFiles, o clasă care cuprinde API-urile legate de Windows Shared Memory, facilitând utilizarea fișierelor de mapare a memoriei pentru programatorii .Net. Folosește memorie partajată în C#. Codul următor pentru App1 permite utilizatorului să introducă o linie de text în memoria partajată; App2 reîmprospătează constant consola și afișează cele mai recente conținuturi de memorie partajată; App3 implementează aceleași funcții ca App2, dar metoda de citire este diferită.
Au fost folosite două metode pentru a citi datele. Deoarece comunicarea dintre procese era rar folosită anterior, această metodă este doar o înțelegere preliminară. Programul este prea rudimentar și sunt multe lucruri care nu sunt judecate. De exemplu, cum să creezi o memorie partajată, cum să o recuperezi și să o ștergi, etc.
|