Leçon 14 : mmap() — Fichiers mappés en mémoire
mmap() mappe un fichier ou une mémoire anonyme directement dans le VAS. Cela permet de lire un fichier volumineux comme s'il s'agissait d'un tableau en mémoire, sans appels explicites à read(). Dans cette leçon, tu apprends l'API, la différence entre MAP_PRIVATE et MAP_SHARED, et le lien avec CUDA I
mmap, c'est comme ouvrir un livre directement sur ton bureau au lieu d'en recopier les chapitres à chaque fois. Tu lis directement depuis la source.
- mmap
- Un appel système qui mappe un fichier ou une mémoire anonyme directement dans le VAS du processus. Renvoie un pointeur vers le début de la région.
- page fault
- Une exception qui se produit lorsqu'un processus accède à une page mémoire absente de la RAM. L'OS charge la page (depuis le fichier ou le swap) et reprend l'exécution.
- MAP_SHARED
- Les écritures sont répercutées dans le fichier et visibles par les autres processus qui mappent le même fichier. Utilisé pour l'IPC.
- MAP_PRIVATE
- Copy-on-write : les écritures sont privées au processus courant et ne sont pas réécrites dans le fichier. Les fichiers ELF sont chargés avec MAP_PRIVATE.
- mapping adossé à un fichier
- Un mmap dont la source de données est un fichier. Les page faults chargent les données depuis le fichier. À l'opposé du mmap anonyme, dont la source est composée de zéros.