Un MappedFile, o Memory-Mapped File, es una técnica de gestión de memoria que permite a un proceso acceder a un archivo en disco como si fuera un segmento de su espacio de direcciones virtual. En lugar de realizar operaciones de lectura/escritura explícitas (como `read()` o `write()`), el sistema operativo carga automáticamente las páginas del archivo en la memoria física a medida que el proceso las accede (on-demand paging). Esto elimina la necesidad de copiar datos entre el kernel space y el user space, ya que el archivo se "proyecta" directamente en la memoria del proceso, y cualquier modificación en la memoria mapeada se sincroniza automáticamente con el archivo en disco (eventualmente).

Esta técnica es fundamental en muchos sistemas de alto rendimiento. Bases de datos como MongoDB (con el motor MMAPv1, aunque ahora obsoleto en favor de WiredTiger) y Apache Cassandra (para sus SSTables) la utilizan para gestionar el acceso a sus archivos de datos. Sistemas operativos como Windows y Linux la emplean para cargar ejecutables y bibliotecas compartidas (DLLs/SOs), así como para implementar la memoria compartida entre procesos. Herramientas como `mmap()` en sistemas POSIX y `CreateFileMapping()`/`MapViewOfFile()` en Windows son las APIs subyacentes que permiten a los desarrolladores implementar MappedFiles.

Para un arquitecto de sistemas, comprender los MappedFiles es crucial debido a sus implicaciones en rendimiento, concurrencia y resiliencia. Ofrecen un rendimiento superior para el acceso a archivos grandes al reducir las copias de datos y aprovechar el page cache del sistema operativo. Sin embargo, introducen complejidades en la gestión de la consistencia de datos (especialmente en entornos concurrentes o distribuidos), la sincronización con el disco (dirty pages, `fsync()`), y el manejo de errores de I/O (por ejemplo, disco lleno o fallos de hardware que se manifiestan como excepciones de memoria). La elección de usar MappedFiles implica un trade-off entre la simplicidad de acceso a datos y la necesidad de gestionar cuidadosamente la persistencia, la integridad y la concurrencia, lo que puede requerir mecanismos de bloqueo o journaling adicionales a nivel de aplicación.