Asignación Dinámica de Memoria: Métodos (Primer, Mejor, Peor Ajuste) y Tipos de Fragmentación
Clasificado en Informática
Escrito el en
español con un tamaño de 4,62 KB
Asignación Dinámica de Memoria
El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica. Este problema se centra en cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen múltiples soluciones para este desafío. El conjunto de huecos disponibles es evaluado para determinar cuál es el más indicado para la asignación. Las estrategias más comunes para asignar un hueco de la tabla son:
Estrategias de Asignación de Huecos
- Primer Ajuste (First Fit): Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar al comienzo o al final del conjunto de huecos, o donde terminó la última búsqueda. La búsqueda finaliza inmediatamente al encontrar un hueco lo suficientemente grande.
- Mejor Ajuste (Best Fit): Busca asignar el espacio más pequeño de entre todos los espacios con capacidad suficiente. La búsqueda debe realizarse en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible.
- Peor Ajuste (Worst Fit): Asigna el hueco más grande disponible. Una vez más, se debe buscar en toda la tabla de huecos, a menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales podrían ser más útiles si llegan procesos de tamaño mediano que quepan en ellos.
Comparación de Estrategias
Se ha demostrado mediante simulacros que tanto el Primer Ajuste como el Mejor Ajuste son superiores al Peor Ajuste en cuanto a minimizar el tiempo de almacenamiento. Ninguno de los dos (Primer o Mejor Ajuste) es claramente el mejor en términos de uso de espacio, pero por lo general, el Primer Ajuste es más rápido.
Métodos de Administración de Memoria
Administración por Mapa de Bits
Este tipo de administración divide la memoria en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y 1 si está ocupada (o viceversa).
Administración de la Memoria con Listas Ligadas
Otra forma de mantener un registro de la memoria es mediante una lista ligada de los segmentos de memoria asignados o libres, donde un segmento puede ser un proceso o un hueco entre dos procesos.
Asignación del Hueco de Intercambio (Swap Space)
La asignación del hueco de intercambio se refiere a cómo se gestiona el espacio en disco destinado al intercambio de procesos (swapping).
- Sistemas con Asignación Dinámica de Swap: En algunos sistemas, cuando el proceso se encuentra en la memoria principal, no hay un hueco en el disco asignado a él. Cuando deba intercambiarse, se deberá asignar un hueco para él en el área de intercambio del disco. Los algoritmos para la administración del hueco de intercambio son los mismos que se utilizan para la administración de la memoria principal.
- Sistemas con Asignación Fija de Swap: En otros sistemas, al crearse un proceso, se le asigna un hueco de intercambio en el disco. Cuando el proceso sea intercambiado, siempre pasará al hueco asignado, en lugar de ir a otro lugar cada vez. Cuando el proceso concluye, se libera el hueco de intercambio. La única diferencia es que el hueco en disco necesario para un proceso debe representarse como un número entero de bloques del disco.
Fragmentación de Memoria
La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria previamente descritos. Tanto el Primer Ajuste, como el Mejor y el Peor Ajuste producen fragmentación externa.
Fragmentación Externa
La fragmentación externa se genera cuando, durante el reemplazo de procesos, quedan huecos entre dos o más procesos de manera no contigua, y cada hueco individual no es capaz de soportar ningún proceso de la lista de espera. Tal vez en conjunto sí haya espacio suficiente, pero se requeriría de un proceso de desfragmentación de memoria o compactación para lograrlo.
Fragmentación Interna
Existe otro tipo de fragmentación conocida como fragmentación interna, la cual es generada cuando se reserva más memoria de la que el proceso va realmente a usar. Sin embargo, a diferencia de la externa, estos huecos no se pueden compactar para ser utilizados. Se debe esperar a la finalización del proceso para que se libere el bloque completo de la memoria.