title: File mappato in memoria
text: # File mappato in memoria
  
  In informatica, un file mappato in memoria (in inglese memory-mapped file) è una funzione offerta da alcuni sistemi operativi che permette ai processi di accedere direttamente ad alcuni buffer del sistema operativo come se fossero buffer privati del processo. Può essere considerato un tipo di input-output mappato in memoria.
  
  Gli utilizzi più importanti sono due:
  
  * Accedere a un file come se fosse un array di caratteri. È l'utilizzo che ha dato il nome alla funzione; infatti il contenuto del file viene mappato nello spazio di indirizzamento del processo. Viene usato per accedere rapidamente a porzioni di un file o per ottimizzare l'accesso a un file da parte di più processi. Per esempio, quando il sistema operativo crea un processo, esegue una mappatura in memoria del file contenente il programma.
  * Condividere con altri processi un'area di memoria. Nei moderni sistemi operativi lo spazio di indirizzamento alla memoria è virtuale e locale al processo, quindi ogni processo ha una sua area di memoria privata. Tramite un file mappato in memoria è possibile ottenere un indirizzo di memoria virtuale locale al processo, che punta ad una area di memoria condivisibile con altri processi. Ogni processo avrà la mappatura del file nel proprio spazio di indirizzamento privato. Questa è una della tecniche di comunicazione tra processi più efficienti, proprio perché si accede all'area di memoria come si accede a qualunque area di memoria del processo. Bisogna però fare particolare attenzione a come sincronizzare gli accessi da parte dei processi, un accesso simultaneo da parte di più processi ad una stessa locazione di memoria è facilmente soggetto ad errori.
  
  I file mappati in memoria sono implementati dai sistemi operativi Posix, con la chiamata di sistema "mmap", e dai sistemi operativi Microsoft Windows di tipo Win32 e successive, con le chiamate di sistema "CreateFileMapping", "OpenFileMapping", "MapViewOfFileEx", "UnmapViewOfFile", e "FlushViewOfFile".
  
  