¿Cuándo debería usar mmap para acceder a archivos?



Answers

Un área donde encontré que mmap () no era una ventaja era cuando se leían archivos pequeños (menos de 16K). La sobrecarga de la página al leer todo el archivo fue muy alta en comparación con solo hacer una sola llamada al sistema de lectura (). Esto se debe a que el kernel a veces puede satisfacer una lectura completa en su porción de tiempo, lo que significa que su código no cambia. Con un error de página, parecía más probable que se programara otro programa, lo que hacía que la operación de archivo tuviera una latencia más alta.

Question

Los entornos POSIX proporcionan al menos dos formas de acceder a los archivos. Están las llamadas estándar del sistema open() , read() , write() y amigos, pero también existe la opción de usar mmap() para asignar el archivo a la memoria virtual.

¿Cuándo es preferible usar uno sobre el otro? ¿Cuáles son sus ventajas individuales que merecen incluir dos interfaces?




El mapeo de memoria tiene un potencial para una gran ventaja de velocidad en comparación con IO tradicional. Permite que el sistema operativo lea los datos del archivo fuente a medida que se tocan las páginas del archivo asignado a la memoria. Esto funciona creando páginas con fallas, que el SO detecta y luego el sistema operativo carga los datos correspondientes del archivo automáticamente.

Funciona de la misma manera que el mecanismo de búsqueda y generalmente está optimizado para E / S de alta velocidad leyendo datos en los límites y tamaños de la página del sistema (generalmente 4K), un tamaño para el cual la mayoría de los cachés del sistema de archivos están optimizados.




Links