Trucos de Programacion "C" y "C++" en castellano
Entornos Linux y Windows

Mapear archivos en memoria

Archivos de mapeo en memoria

Los archivos mapeados en memoria son una copia idéntica en memoria de un archivo de disco. A pesar de que en linux se utiliza un sistema de caché complejo, y avanzado, un archivo en memoria siempre será más rápido que un acceso a disco, puesto que al utilizar la cache de linux, se ejecutarán de manera automática sincronizaciones, mientras que con los archivos en memoria, podremos decidir cuando hacerlo (Es decir, tendremos el mismo efecto de utilizar un Ramdisk, sin necesidad de configuraciones avanzadas en el sistema).

Sobra decir, que la utilización de estas funciones esta pensada para tareas críticas, y no debe ser empleado "a la ligera", pues el empleo de estas funciones merma considerablemente la memoria del sistema (Es decir, esta bien para utilizarlo con unos índices de una base de datos, pero no para guardar un fichero de configuración).

Las llamadas a las funciones que se utilizan para administrar estos ficheros, se encuentran en <sys/mman.h>. Estas funciones son:

  • mmap; Esta función es la que mapea un archivo en memoria
  • mumap; Elimina el mapeo del archivo.
  • msync; Actualiza el archivo físico con lo datos de la memoria
  • mremap; Cambia el tamaño de la imagen
  • mprotect; limita el acceso al fichero en memoria
  • mlock; Bloquea una parte del archivo en memoria
  • munlock; Suprime el bloqueo creado con la función mlock
  • mlockall; Evita que se sincronice con el disco
  • munloackall; Elimina el anterior bloqueo

Todas las funciones previamente mencionadas vienen en los man, por lo que no me voy a extender explicandolas individualmente, y me limito a poner un ejemplo de como se usarían:

 

 

Webmaster

Hiperion Pozuelo, Madrid, ES
Soy una persona sencilla, quizas demasiado seria, que disfruto de la vida.
Actualmente busco pareja.