Gestión de Memoria en Sistemas Operativos: Conceptos Clave y Algoritmos
Clasificado en Informática
Escrito el en español con un tamaño de 3,95 KB
Gestión de Memoria en Sistemas Operativos: Conceptos Fundamentales
1. Asignación de Memoria
1.1. Particiones Fijas
Consisten en dividir la memoria en partes de tamaño fijo antes de la ejecución de los procesos. Estos se van cargando en las distintas particiones. El número y tamaño de las particiones se determinan teniendo en cuenta la memoria física disponible y el tamaño de los procesos a ejecutar.
1.2. Particiones Variables
Para evitar los problemas de las particiones fijas, se utiliza una asignación dinámica de la memoria. Para ello, el sistema mantiene una tabla que indica las partes de memoria disponibles y ocupadas. Se toma solo el espacio necesario para cargar el proceso, dejando libre el resto.
2. Problemas Comunes en la Gestión de Memoria
2.1. Fragmentación
Se produce un desaprovechamiento de la memoria, lo que empeora el funcionamiento del sistema. Existen dos tipos principales:
- Fragmentación Interna: Parte de la memoria que no se está utilizando es interna a una partición que contiene un proceso.
- Fragmentación Externa: Una partición no se emplea porque es demasiado pequeña para los procesos que ejecuta el sistema.
2.2. Registro de Uso de Memoria
Se utilizan para registrar las particiones libres y ocupadas. Para ello, se emplean los mapas de bits: si el valor es 0, la partición está libre; si es 1, está ocupada.
3. Técnicas Avanzadas de Gestión de Memoria
3.1. Intercambio (Swapping)
Cuando un proceso permanece suspendido en memoria y se necesita espacio para la ejecución de otros, es necesario eliminar los procesos terminados de la memoria, llevarlos al disco y cargar el nuevo proceso. Este trabajo lo realiza el intercambiador de procesos, que tiene en cuenta la prioridad de los procesos, el tiempo de espera, entre otros factores.
3.2. Reubicación
Permite que un proceso se cargue en diferentes ubicaciones de memoria en distintos momentos. Se clasifica en:
- Estática: Las direcciones que se van a utilizar se calculan sumando las direcciones que tienen los operandos al inicio de la partición.
- Dinámica: Se utiliza un registro base que contiene la dirección de inicio de la partición donde se ha cargado el proceso. Este registro tendrá valores distintos dependiendo del lugar donde se encuentre la partición y donde haya sido cargado el proceso.
3.3. Paginación
La memoria física se divide en bloques de tamaño fijo, denominados marcos de página. Los procesos también se dividen en bloques de tamaño fijo, llamados páginas, del mismo tamaño que los marcos de página.
3.4. Segmentación
El compilador divide el programa en segmentos, cada uno de los cuales se corresponde con un módulo principal, subrutinas, funciones, etc. Estos segmentos son asignados con un número de segmento.
4. Algoritmos de Sustitución de Páginas
Cuando la memoria está llena y se necesita cargar una nueva página, se debe elegir cuál de las páginas existentes se eliminará. Algunos algoritmos comunes son:
- FIFO (First In, First Out): Según este método, cuando hay que sustituir una página, se elige la primera que entró en la cola. La página que entra se coloca al final de la cola.
- LRU (Least Recently Used): Sustituye la página que ha sido utilizada con menos frecuencia o hace más tiempo. A cada página se le asocia el tiempo en que se utilizó por última vez.
- FIFO2 (Algoritmo de Sustitución de Segunda Oportunidad): Consiste en incluir un bit que indica si la página ha sido utilizada recientemente. Si el bit es 0, ha estado mucho tiempo sin utilizarse; si es 1, indica que se ha utilizado hace poco.