Que sont les fichiers mappés en mémoire? décrire avec un exemple simple?


Réponses:


2

"Memory-mapped" n'est pas un type de fichier, c'est un moyen d'y accéder. Le même type de fichier peut être lu normalement par le programme A, mais mappé en mémoire par le programme B.

Normalement (dans la plupart des langages de programmation), chaque accès aux fichiers nécessite un appel séparé:

  • vous commencez par openle fichier (en obtenant un "descripteur de fichier"),
  • seek à la position souhaitée (si nécessaire),
  • read une certaine quantité d'octets (qui les copie du fichier dans la RAM),
  • ... seek, read, read, seek, write, read, et ainsi de suite.

Ainsi, si vous travaillez avec, par exemple, un fichier de base de données, de nombreux appels système sont impliqués, sans parler de toutes les données copiées. (Il y a généralement des appels de convenance chercher + lire et chercher + écrire, par exemple preadet pwritesur Linux, mais ils n'aident pas beaucoup.)

Le mappage de la mémoire, quant à lui, permet au programme d'accéder à un fichier comme s'il s'agissait de RAM . Une fois openle fichier mmapcréé , un programme n'a besoin que d'un appel pour configurer une zone mémoire, après quoi il peut accéder immédiatement au contenu du fichier via cette "fenêtre" - en utilisant une variable lue à partir du fichier, en modifiant une variable écrite dans le fichier.

Cela peut grandement simplifier le code et accélérer le chargement et la sauvegarde des fichiers, car le programme sait que les données seront là, mais le système d'exploitation ne doit pas réellement les charger avant de les utiliser.


S'il
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.