Ventajas
La principal ventaja de un archivo proyectado en memoria es aumentar las prestaciones de lectura y escritura, especialmente cuando se utilizan archivos de un tamaño reducido.[cita requerida] Acceder a archivos de mapa de memoria es más rápido que usar operaciones de lectura / escritura por dos motivos. En primer lugar, una llamada del sistema es varios órdenes de magnitud más lenta que un simple cambio en la memoria local del programa; en segundo lugar, en la mayoría de sistemas operativos la región de memoria proyectada es, de hecho, la caché de página (caché de archivo), lo que implica que no se necesitan copias en el espacio de usuario.Algunas operaciones de archivos proyectados en memoria dentro de las aplicaciones presentan también ventajas de rendimiento con respecto a sus variantes sobre archivos físicos. Las aplicaciones pueden acceder y actualizar los datos en el archivo directamente, en lugar de buscar desde el comienzo del archivo o reescribir el contenido modificado en un lugar transitorio. Dado que el archivo proyectado en memoria se maneja de forma interna en páginas, el acceso lineal de archivos (como por ejemplo en el caso de almacenamiento de datos en el modelo de tabla o archivos de configuración) requiere acceso de disco sólo cuando se cruza una nueva frontera, y puede escribir secciones mayores del archivo en el disco en una única operación.
Un posible beneficio de los archivos proyectados en memoria es la "carga vaga", utilizando por tanto pequeñas cantidades de RAM incluso para un archivo de tamaño grande. Tratar de cargar el contenido completo de un archivo que es significativamente más grande que la cantidad de memoria disponible puede provocar una hiperpaginación severa cuando el sistema operativo lee desde el disco en la memoria y, simultáneamente, escribe páginas de memoria al disco. La proyección en memoria permite no sólo evitar completamente el archivo de página, sino también que el sistema únicamente requiera cargar secciones de paginación de menor tamaño cuando se editan los datos, un concepto similar a la paginación por demanda utilizada en los programas.
El proceso de proyección en memoria lo ejecuta el administrador virtual de memoria, el mismo subsistema responsable de la paginación de memoria. Los archivos proyectados en memoria cargan en la memoria una paginación completa de una vez. El tamaño de la paginación es determinado por el sistema operativo para conseguir un rendimiento óptimo. Dado que la administración de archivos de páginas es uno de los elementos más críticos de un sistema de memoria virtual, cargar secciones del tamaño de una página en memoria física es normalmente una función de sistema altamente optimizada.1
Desventajas
La razón principal para utilizar archivos proyectados en memoria para la lectura y escritura es la mejora en rendimiento, aunque pueden darse situaciones de compromiso. El planteamiento convencional de lectura y escritura de datos es costoso debido a los excesos de llamadas a funciones del sistema y las operaciones de copia de memoria. La estrategia de proyección en memoria tiene su punto débil en la aparición de fallos de página menores, que pueden ocurrir cuando un bloque de datos se ha cargado en la caché de paginación, pero aún no está cargado en el espacio de memoria virtual del proceso. En determinadas circunstancias, la lectura y escritura de archivos proyectados en memoria puede ser considerablemente más lenta que la lectura y escritura convencional de archivos.2Otra desventaja de los archivos proyectados en memoria está relacionada con el espacio de direcciones de ciertas arquitecturas: un archivo de tamaño mayor que el espacio direccionable solo puede proyectarse en memoria por trozos, lo cual complica su lectura. Un ejemplo de esto se da en una arquitectura de 32 bits como la IA-32 de Intel, que solo puede establecer direcciones en memoria para un máximo de 4 GiB del tamaño del archivo. Esta desventaja desaparece en aquellos dispositivos dotados de una unidad de gestión de memoria de lectura y escritura de datos (IOMMU, input/output memory management unit en inglés).

No hay comentarios:
Publicar un comentario