Gabriel Astudillo Muñoz 1. Administración de Memoria 1.1. Introducción La parte del sistema operativo que se encarga del manejo de la memoria se denomina administrador de la memoria. Su labor consiste en llevar un registro de qué partes de la memoria se están utilizando y qué partes no, con el fin de asignar espacio a los procesos cuando estos hagan requerimientos, liberarlo cuando terminen, así como administrar el intercambio entre la memoria principal y el disco, en el caso en que esta no pueda albergar a todos los procesos. También facilita los mecanismos de protección para que un proceso no invada el espacio de otros procesos. 1.2. Conceptos: Gabriel Astudillo Muñoz 1.4. Puntos clave en la organización de la memoria. • ¿Cuándo poner un nuevo programa en memoria? • ¿Se anticipa, a las peticiones de los procesos, en la carga de programas? • ¿En qué lugar de la memoria se instala un programa? • ¿Se debe optimizar el tiempo de ejecución o el espacio en la memoria principal? • 1.5. Esquema general • La organización y la administración de la memoria principal , memoria primaria o memoria real es uno de los factores más importantes que influyen en el diseño de los Sistemas Operativos. • Históricamente la memoria ha sido un recurso caro, por lo que se desea optimizar su uso, aunque en la actualidad ha bajado de precio, los programa han aumentado su tamaño Î el problema de la escasez de memoria continúa. 1.3. Puntos claves de la administración de memoria. • ¿Se debe permitir la multiprogramación? • ¿Se deben asignar particiones fijas o variables? • ¿Las particiones pueden crecer en forma dinámica? • ¿Los programas podrán ser relocalizables? • ¿La ejecución de trabajos se hará en bloques de memoria adyacentes o en cualquier lugar disponible? 1 En el cuadro se muestra un resumen de las técnicas de administración de memoria 2 Gabriel Astudillo Muñoz 1.6. Monoprogramación. Gabriel Astudillo Muñoz 1.7. Multiprogramación en memoria real. • El sistema más simple de administración, consiste en tener sólo un programa cargado en la memoria a la vez. • Este esquema deriva en la creación de un sistema operativo, permitiendo aislar las rutinas que manejan los dispositivos de I/O de los procesos de usuario • Bajo este esquema, la memoria real es tomada para almacenar el programa que se esté ejecutando en un momento dado, con la visible desventaja de que se está limitado a la cantidad de RAM disponible. • La organización física bajo este esquema es muy simple: El sistema operativo se ubica en las localidades superiores o inferiores de la memoria, seguido por algunos manejadores de dispositivos ( `drivers' ). Esto deja un espacio contiguo de memoria disponible que es tomado por los programas del usuario, dejando generalmente la ubicación de la pila (` stack' ) al último, con el objetivo de que ésta pueda crecer hasta el máximo posible. 3 • Multiprogramación: consiste en poner en la memoria física más de un proceso al mismo tiempo, de manera que si el que se está ejecutando en este momento entraba en un período de entrada/salida, se puede tomar otro proceso para que usara la unidad central de procesamiento. Î De esta forma, la memoria física se divide en secciones de tamaño suficiente para contener a varios programas 1.7.1. Modelo de multiprogramación. • Desde un punto de vista probabilístico, sea p la fracción de tiempo en que un proceso espera por I/O. • La probabilidad de que n procesos esperen simultáneamente por I/O es : pn • La utilización de CPU es por lo tanto: 1-pn • n es denominado “grado de multiprogramación”. 4 Gabriel Astudillo Muñoz 1.7.2. Multiprogramación con particiones fijas. • Es la manera más simple de administrar la memoria cuando estamos en sistemas multiprogramados es con particiones fijas. • Consiste en dividir la memoria en en n partes de tamaño fijo. De esta forma es posible tener multiprogramación ya que a cada proceso se le asigna una partición. Gabriel Astudillo Muñoz 1.7.3. Multiprogramación con particiones variables. • 1.7.3.1. Ventajas • 1.7.2.1. Desventajas. • Se hace una mala utilización de la memoria debido a la poca flexibilidad del método. • Es complicado correr programas más grandes que el tamaño de la partición. • Se presenta fragmentación interna. Este fenómeno ocurre cuando un proceso no ocupa toda la memoria asignada y sin embargo el espacio libre no puede ser utilizado por ningún otro proceso. La memoria se divide en bloques de diferente tamaño de acuerdo a las necesidades del proceso. La gran ventaja de este método es su flexibilidad, pues permite definir bloques del tamaño requerido, terminando así con la fragmentación interna y permitiendo hacer un mejor uso de la memoria y por ende del procesador. 1.7.3.2. Desventajas. • fragmentación externa. o Como la memoria se dividió en bloques de tamaño diferente, puede ocurrir que el bloque más grande no pueda contener un programa dado, a pesar que la suma de los espacios libres sea mayor que el tamaño del programa. 1.7.2.2. Ventajas. o Cuando se libera una partición y ésta no se puede ocupar. Se originan huecos de memoria. • Su administración es relativamente simple, pues para guardar información del estado del recurso se debe tener un registro de cada zona (libre u ocupada). • La protección entre procesos se puede realizar mediante el mecanismo de llaves de memoria o utilizando el registro base y la longitud de la zona. 5 1.7.4. Estrategias para el llenado de los espacios de memoria. • Primer Ajuste (first fit): Se asigna el primer hueco que sea mayor al tamaño deseado. • Mejor Ajuste (best fit): Se asigna el hueco cuyo tamaño exceda en la menor cantidad al tamaño deseado. Requiere de una búsqueda exhaustiva. • Peor Ajuste (worst fit): Se asigna el hueco cuyo tamaño exceda en la mayor cantidad al tamaño deseado. Requiere también de una búsqueda exhaustiva. • El Siguiente Ajuste: Es igual que el `primer ajuste' con la diferencia que se deja un apuntador allugar en donde se asignó el último hueco para realizar la siguiente búsqueda a partir de él. • Ajuste Rápido: Se mantienen listas ligadas separadas de acuerdo a los tamaños de los huecos, paraasí buscarle a los procesos un hueco más rápido en la cola correspondiente. 6