Diferencia entre MMAP y Malloc

Diferencia entre MMAP y Malloc

mmap vs malloc

Hay memoria dinámica en C y esto apunta a la asignación de la memoria en el lenguaje de programación C a través de un conjunto de funciones presentes en la biblioteca estándar C. Uno de estos es Malloc, que se refiere a la asignación de memoria. En el sistema Unix hay MMAP, que se refiere a un sistema mapeado de memoria que viene con su propia E/S única. Estos dos (MMAP y MALLOC) al valor nominal realizarán la misma función, pero un escrutinio adicional revela algunas diferencias. Estas diferencias, que surgen de la funcionalidad, se describen a continuación.

Diferencias

En primer lugar, es importante establecer si hay alguna evidencia que indique que hay una sofocación significativa de la memoria disponible. Esto se hace mediante la medición del rendimiento del programa contra la gestión de la memoria .

La interfaz de asignación de memoria principal es MALLOC. Este es el más grande de la biblioteca C. Parte del código de administración contenido en él es MMAP.  Cuando Malloc se está ejecutando, reúne todas las instalaciones del sistema disponibles. Se pueden movilizar instalaciones del sistema adicionales a través del núcleo, que es una de las estrategias de gestión de memoria que los sistemas usan para garantizar que haya una asignación de memoria satisfactoria. Sin embargo, el proceso no es sencillo y se ha hecho complicado por la única razón de evitar que las personas creen programas simples que puedan desorganizar la asignación de memoria y, por lo tanto, crear un bajo rendimiento.

'MMAP', por otro lado, es una llamada del sistema que se hace cargo y solicita al núcleo que encuentre una región no utilizada y contigua en la dirección de una aplicación que sea lo suficientemente grande como para permitir la asignación de varias páginas de memoria. También existe la creación de estructuras de gestión de memoria virtual que, en efecto, no pueden dar lugar a un segfault.

Malloc generalmente funciona en la mayoría del proceso de gestión de memoria. En caso de que el programa requiere memoria adicional, esto se toma prestado del sistema operativo. MMAP, por otro lado, utiliza un interruptor de contexto que se convierte en tierra del núcleo.

MALLOC es más adecuado para asignar memoria en cualquier aplicación que se ejecute en el sistema en lugar del uso de MMAP. Esto es lo que se requiere que suceda de forma predeterminada, aparte de casos especiales en los que se puede permitir.

MMAP se puede utilizar para acelerar la respuesta dada por las aplicaciones. Sin embargo, esto no es aconsejable, ya que termina sacrificando algunos bytes a las páginas para que la aplicación pueda ejecutarse sin problemas. Aunque el contenido de datos puede parecer pequeño al principio, extrapolarlo cuando numerosas aplicaciones quieran ejecutar pueden disminuir aún más el sistema.

Después de medir el rendimiento y el uso de los recursos, se debe realizar una evaluación exhaustiva del uso de datos por todas las aplicaciones que se ejecutan en el sistema.  Si se pueden demostrar la vida útil de las aplicaciones que se ejecutan, puede mejorar.

El uso de MMAP para la asignación de la memoria viene con la desventaja de que la asignación y la desacuerdo de datos en fragmentos es costoso. Esto se debe a que los datos se dividen en numerosas áreas y también niega que MMAP realice llamadas al sistema.

MMAP es ventajoso sobre Malloc porque la memoria utilizada por MMAP se devuelve inmediatamente al sistema operativo.   La memoria utilizada por Malloc nunca se devuelve a menos que haya una ruptura del segmento de datos. Este recuerdo se mantiene especialmente para ser reutilizado.

Resumen

'Malloc' significa el punto de asignación de memoria principal

Un sistema MMAP llama y solicita un núcleo para encontrar regiones no utilizadas en las direcciones de aplicaciones que pueden acomodar el mapeo de varias páginas de memoria

No se recomienda MMAP para asignar la memoria, ya que divide la memoria disponible y no puede hacer llamadas al sistema

Un beneficio de MMAP sobre MALLOC es la disponibilidad de la memoria, a diferencia de la memoria de malloc, que se reutiliza.