Los pools de memoria , también llamados asignación de bloques de tamaño fijo , son el uso de pools para la gestión de memoria que permiten la asignación dinámica de memoria . La asignación dinámica de memoria puede, y se ha logrado mediante el uso de técnicas como malloc y el operador new de C++ ; aunque son implementaciones establecidas y confiables, estas sufren de fragmentación debido a tamaños de bloque variables, no es recomendable usarlas en un sistema de tiempo real debido al rendimiento. Una solución más eficiente es preasignar una cantidad de bloques de memoria con el mismo tamaño llamado pool de memoria . La aplicación puede asignar, acceder y liberar bloques representados por manejadores en tiempo de ejecución .
Muchos sistemas operativos en tiempo real utilizan grupos de memoria, como Transaction Processing Facility .
Algunos sistemas, como el servidor web Nginx , utilizan el término "pool de memoria" para referirse a un grupo de asignaciones de tamaño variable que luego se pueden desasignar todas a la vez. Esto también se conoce como región ; consulte administración de memoria basada en regiones .
Un módulo de memoria de grupo simple puede asignar, por ejemplo, tres grupos en tiempo de compilación con tamaños de bloque optimizados para la aplicación que implementa el módulo. La aplicación puede asignar, acceder y liberar memoria a través de la siguiente interfaz:
unsigned int
. El módulo puede interpretar el identificador internamente dividiéndolo en índice de pool, índice de bloque de memoria y una versión. El índice de pool y de bloque de memoria permiten un acceso rápido al bloque correspondiente con el identificador, mientras que la versión, que se incrementa en cada nueva asignación, permite la detección de identificadores cuyo bloque de memoria ya está liberado (debido a identificadores retenidos durante demasiado tiempo).Beneficios
Desventajas