Gestión de la memoria


La gestión de la memoria es una forma de gestió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 cuando lo soliciten y liberarlas para su reutilización cuando ya no se necesiten. 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 de RAM disponible 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. En otros sistemas operativos, por ejemplo, sistemas operativos similares a Unix, la memoria se gestiona a nivel de aplicación.

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

La tarea de cumplir con una solicitud de asignación consiste en localizar un bloque de memoria no utilizada de tamaño suficiente. Las solicitudes de memoria se satisfacen asignando partes de una gran cantidad de memoria denominada heap o free store . [nota 1] En un momento dado, algunas partes del montón están en uso, mientras que otras son "gratuitas" (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 muchas brechas pequeñas entre los bloques de memoria asignados, lo que invalida su uso para una solicitud de asignación. Los metadatos del asignador también pueden aumentar el tamaño de asignaciones pequeñas (individualmente). A menudo, esto se gestiona mediante fragmentación . El sistema de gestión de memoria debe realizar un seguimiento de las asignaciones pendientes para garantizar que no se superpongan y que nunca se "pierda" memoria (es decir, que no haya " pérdidas de memoria ").


Un ejemplo de fragmentación externa