Je ne comprends pas vraiment ce que sont les fichiers mappés en mémoire, ni pourquoi nous les utilisons, ni dans quelle partie du système d’exploitation ils s’intègrent. Veuillez expliquer avec un exemple simple.
Merci
operating-systems
Ahtisham Chishti
la source
la source
Réponses:
"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é:
open
le 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
pread
etpwrite
sur 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
open
le fichiermmap
créé , 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.
la source