Gestión de la memoria


La administración de memoria es una forma de administración de recursos aplicada a la memoria de la computadora . El requisito esencial de la gestión de la memoria es proporcionar formas de asignar dinámicamente porciones de memoria a los programas que lo soliciten y liberarla para su reutilización cuando ya no se necesite. Esto es fundamental para cualquier sistema informático avanzado en el que pueda estar en marcha más de un proceso en cualquier momento. [1]

Se han ideado varios métodos que aumentan la eficacia de la gestión de la memoria. Los sistemas de memoria virtual separan las direcciones de memoria utilizadas por un proceso de las direcciones físicas reales, lo que permite la separación de procesos y aumenta el tamaño del espacio de direcciones virtuales más allá de la cantidad disponible de RAM mediante paginación o intercambio a almacenamiento secundario . La calidad del administrador de memoria virtual puede tener un efecto importante en el rendimiento general del sistema .

En algunos sistemas operativos , por ejemplo, OS/360 y sucesores , [2] la memoria es administrada por el sistema operativo. [nota 1] En otros sistemas operativos, por ejemplo, sistemas operativos similares a Unix, la memoria se gestiona a nivel de aplicación.

La gestión de memoria dentro de un espacio de direcciones generalmente se clasifica como gestión de memoria manual o gestión de memoria automática .

La tarea de cumplir con una solicitud de asignación consiste en ubicar un bloque de memoria no utilizada de tamaño suficiente. Las solicitudes de memoria se satisfacen mediante la asignación de porciones de un gran grupo [nota 2] de memoria llamado montón o almacenamiento libre . [nota 3] En un momento dado, algunas partes del almacenamiento dinámico están en uso, mientras que otras están "libres" (sin usar) y, por lo tanto, están disponibles para asignaciones futuras.

Varios problemas complican la implementación, como la fragmentación externa , que surge cuando hay muchos espacios pequeños entre los bloques de memoria asignados, lo que invalida su uso para una solicitud de asignación. Los metadatos del asignador también pueden inflar el tamaño de asignaciones pequeñas (individualmente). Esto a menudo se gestiona mediante fragmentación . El sistema de administración de memoria debe rastrear las asignaciones pendientes para garantizar que no se superpongan y que nunca se "pierda" memoria (es decir, que no haya " fugas de memoria ").


Un ejemplo de fragmentación externa