Sommaire

Fichiers gérés en mémoire (mapping) Fichier:géré en mémoire

Le mécanisme de projection en mémoire (memory mapping) d’un fichier ouvert permet à un ou plusieurs processus de gérer son contenu (complet ou seulement certaines zones) directement en mémoire, sans avoir besoin d’utiliser les appels système vus dans ce chapitre (read(), write(), etc.).

Le fichier projeté en mémoire peut être en usage exclusif ou partagé pour le processus à l’origine du mapping.

C’est cette technique qui est utilisée pour partager les programmes exécutables chargés en mémoire (bibliothèques dynamiques).

1. Projection en mémoire : mmap() Projection en mémoire

L’appel système mmap() permet de projeter en mémoire tout ou partie d’un fichier.

Syntaxe

#include <sys/mman.h> 
void *mmap(void *addr, size_t length, int prot, int flags, int 
fd, off_t offset);

Arguments

addr

NULL ou adresse mémoire où projeter le fichier

length

Nombre d’octets à projeter

prot

Type de protection d’accès de la zone mémoire

flags

Type de projection : MAP_PRIVATE ou MAP_SHARED

fd

Descripteur du fichier à projeter

offset

Position de départ en octets du mapping dans le fichier

Valeur retournée

-1

Erreur, code erreur positionné dans la variable errno

!= -1

Succès, adresse de début de la projection

Description

En général, ...