La memoria es un recurso importante que debe ser cuidadosamente
gestionado. A todo programador le gustara poder contar con una memoria infinitamente grande, infinitamente rpida y que fuese adems no voltil, esto es, que no perdiese su contenido en ausencia de energa elctrica. Pero al no poder contar con algunas de estas caracteristicas han surgido tcnicas y algoritmos capaces de administrar de una forma ptima la memoria de nuestra computadora.
Qu es la Administracin de Memoria?
Es una tarea realizada por el sistema operativo que consiste en gestionar
la jerarqua de memoria, en cargar y descargar procesos en memoria principal para que sean ejecutados. Para ello el sistema operativo gestiona lo que se conoce como MMU o Unidad de Administracin de Memoria, el cual es un dispositivo hardware que transforma las direcciones lgicas en fsicas.
Su trabajo es seguir la pista de qu partes de la memoria estn en uso
y cules no lo estn, con el fin de poder asignar memoria a los procesos cuando la necesiten, y recuperar esa memoria cuando dejen de necesitarla, as como gestionar el intercambio entre memoria principal y el disco cuando la memoria principal resulte demasiado pequea para contener a todos los procesos
Objetivos de la Gestin de Memoria
Ofrecer a cada proceso un espacio lgico propio.
Proporcionar proteccin entre los procesos. Permitir que los procesos compartan memoria. Maximizar el rendimiento del sistema.
Requisitos de la Gestin de Memoria
Reubicacin: En un sistema multiprogramado la memoria se encuentra compartida por varios procesos, por lo tanto, los procesos deben ser cargados y descargados de memoria.
Proteccin: En un sistema con multiprogramacin es necesario
proteger al sistema operativo y a los otros procesos de posibles accesos que se puedan realizar a sus espacios de direcciones.
Comparticin: En ciertas situaciones, bajo la supervisin y
control del sistema operativo, puede ser provechoso que los procesos puedan compartir memoria.
Organizacin Lgica: Tanto la memoria principal como la
secundaria presentan una organizacin fsica similar, como un espacio de direcciones lineal y unidimensional. Debe existir una cierta correspondencia entre el sistema operativo y el hardware al tratar los datos y los programas de los usuarios de acuerdo a la estructura lgica que ellos presenten.
Organizacin Fsica: Debe ser parte de la administracin de
memoria, la organizacin del flujo de informacin entre la memoria principal y la memoria secundaria.
Tcnicas de Administracin de Memoria (Asignacin Contigua)
Ejemplo de particiones estticas
Asignacin de Memoria con particiones estticas Con particiones estticas surgen dos dificultades:
Un programa puede ser demasiado grande para caber en una
particin, por lo tanto si el programa no se ha diseado mediante superposicin, simplemente no se puede ejecutar. De otro modo, podrn estar en memoria aquellos mdulos del programa que se necesiten, pero se requerir que estos mdulos sean intercambiados a medida que la ejecucin progresa. Se malgasta el espacio interno a cada particin cuando el bloque cargado es ms pequeo, lo que se conoce como fragmentacin interna. Es decir, cualquier proceso por pequeo que sea, ocupar una particin completa.
Ejemplo de particiones dinmicas
En este ejemplo, partimos de la memoria libre completamente en (a), luego se cargan "P1" [20 MB], (b), "P2" [14 MB] (c) y "P3" [18 MB] (d). Se libera "P2" (e) y se carga "P4" [8 MB] (f), se libera "P1" (g) y se carga nuevamente "P2" [14 MB] (h). Notemos como se van reestructurando las particiones en base al tamao de los procesos que se van cargando, esto sucede por ser particiones dinmicas. La asignacin de memoria en un esquema con particiones dinmicas, consiste en determinar en qu hueco ubicar un nuevo proceso. Para esto existen tres algoritmos: mejor ajuste, primer ajuste o prximo ajuste.
Mejor ajuste: consiste en ubicar el proceso en el espacio de
memoria que ms se ajuste a su tamao. Primer ajuste: consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamao sea suficiente para el proceso. Prximo ajuste: consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la ltima asignacin de memoria.
Con particiones dinmicas surgen las siguientes dificultades:
Producto de la entrada y salida de procesos en la memoria, se van
generando porciones cada vez ms pequeas de la memoria sin utilizar, lo que se conoce como fragmentacin externa. Para solucionar este problema se debe recurrir a la compactacin de la memoria de manera de eliminar los espacios (huecos) entre procesos. Esto significa que los procesos deben ser reubicados en memoria en forma dinmica.
Tcnicas de Administracin de Memoria (Asignacin no Contigua)
Dentro de la asignacin no contigua, la administracin de memoria
implementa tcnicas como Paginacin y Segmentacin
Paginacin
Esta tcnica consiste en dividir la memoria en espacios de igual tamao
llamados pginas, en la memoria lgica y marcos de pgina en la memoria fsica. Mostramos una imagen de como se relacionan la memoria lgica con la memoria fsica a traves de la Tabla de Pginas. Segmentacin
Consiste en dividir la memoria en espacios al igual que la Paginacin
pero a diferencia de esta, la divide en espacios de diferente tamao. Mostramos en la imagen la relacion entre la memoria lgica y la fsica a traves de la Tabla de Descriptores de Segmento (TDS). Conclusiones
Una de las tareas ms complejas e importantes que lleva a cabo el
sistema operativo es la de administrar la memoria. Todos los mtodos aqu presentados, suponen que para ejecutar un proceso es necesario tenerlo completamente en memoria principal, ya sea en espacios contiguos o no. La paginacin es un esquema similar al de las particiones estticas, con la ventaja de que un proceso puede ser cargado en ms de una particin y en espacios de memoria no contiguos, lo que reduce la fragmentacin interna a la que se produce en la ltima pgina. La segmentacin es un esquema similar al de las particiones dinmicas con ventajas similares a la paginacin. Tanto en las particiones estticas, como en la paginacin, es necesario determinar el tamao que tendrn los bloques de memoria.