Lección 14: mmap() — archivos mapeados en memoria
mmap() mapea un archivo o memoria anónima directamente dentro del VAS. Esto permite leer un archivo grande como si fuera un array en memoria, sin llamadas explícitas a read(). En esta lección aprendemos la API, la diferencia entre MAP_PRIVATE y MAP_SHARED, y la relación con CUDA IPC.
mmap es como abrir un libro directamente sobre tu escritorio en lugar de copiar capítulos cada vez. Lees directamente desde la fuente.
- mmap
- Una llamada al sistema que mapea un archivo o memoria anónima directamente dentro del VAS del proceso. Devuelve un puntero al inicio de la región.
- page fault
- Una excepción que ocurre cuando un proceso accede a una página de memoria que no está en RAM. El sistema operativo carga la página (desde el archivo o desde swap) y reanuda la ejecución.
- MAP_SHARED
- Las escrituras se propagan de vuelta al archivo y son visibles para otros procesos que mapean el mismo archivo. Se usa para IPC.
- MAP_PRIVATE
- Copy-on-write: las escrituras son privadas para el proceso actual y no se escriben de vuelta al archivo. Los archivos ELF se cargan con MAP_PRIVATE.
- mapeo respaldado por archivo
- Un mmap respaldado por un archivo como fuente de datos. Los page faults cargan los datos desde el archivo. Contrasta con el mmap anónimo, respaldado por ceros.