Sistemas Operativos Clase 8: administración de memoria. Administración de memoria En forma física, el manejo de memoria es: • Segmentación. Segmentación pura o simple. Segmentación con descriptores. • Paginación. Administración de la memoria El gestor o administrador de memoria se encarga de repartir de forma optima y transparente la memoria entre los procesos; para ello debe cumplir: • Reubicación. • Protección. • Compartición. Administración de la memoria El gestor de memoria emplea diversos mecanismos de asignación, entre los que se tiene: • • • • • • Partición fija. Partición dinámica. Paginación simple. Segmentación simple. Memoria virtual paginada. Memoria virtual segmentada. Administración de la memoria En partición dinámica, debido a los huecos que pueden ir quedando en memoria (fragmentación externa), es necesario implementar mecanismos de asignación: • Mejor ajuste. • Primer ajuste. • Peor ajuste. Administración de la memoria Memoria virtual La paginación y la segmentación características importantes: poseen dos • El uso de direcciones lógicas. • Un proceso puede dividirse en varios bloques de memoria, sin necesidad de que estos sean contiguos. La traducción se realiza en tiempo ejecución. Administración de la memoria Memoria virtual Como hay ocasiones en que un proceso no se encuentra en ejecución, entonces es posible que en esos instantes no necesite usar sus segmentos o páginas, y que por lo tanto deberían liberar el recurso de memoria. Administración de la memoria Memoria virtual Liberar la memoria proporciona ciertas mejoras: • Se pueden conservar más procesos en memoria. Con ello, es posible hacer un uso más eficiente del procesador. • Los procesos pueden ser tan grandes como se necesite. Administración de la memoria Memoria virtual Principio de cercanía: establece que las referencias a memoria tienden a estar agrupadas. • En la ejecución de un programa, generalmente la siguiente instrucción estará a continuación de la ultima instrucción accedida. • No es común tener una secuencia larga de llamadas a procedimientos. Administración de la memoria • Cuando se trata de instrucciones iterativas, su ejecución esta limitada a una pequeña sección de programa. • En general, al hacer referencia a datos, estos están cerca unos de otros. Lo anterior permite que la memoria virtual sea un buen método para mejorar el sistema. Administración de la memoria Memoria virtual Un inconveniente de la memoria virtual es el fallo de página; es decir, cuando un proceso no encuentra sus datos ya que estos están en la memoria virtual. Cuando sucede un fallo de página, el proceso que genero el problema es interrumpido para colocar la pagina que necesita en memoria. Administración de la memoria Memoria virtual Otro problema que puede surgir al emplear memoria virtual, es lo que se conoce como hiperpaginación. La hiperpaginación se presenta cuando suceden muchos fallos de página, como consecuencia de una mala organización en los fragmentos de un programa. Administración de la memoria Memoria virtual paginada Generalmente la memoria virtual se asocia a la paginación, sin embargo, también puede ser empleada la segmentación. En la memoria virtual paginada se emplea el mismo esquema de paginación simple, con la diferencia que ahora la tabla de paginas requiere de mayor información. Administración de la memoria Memoria virtual segmentada Nuevamente, aquí se maneja el mismo esquema que el método de segmentación simple; sin embargo, descargar un segmento de memoria puede ser un proceso costoso, por lo que es más común emplear memoria virtual paginada. Administración de la memoria Al diseñar un SO, en el aspecto de la memoria, es necesario considerar tres puntos: • ¿Se usará paginación, segmentación o ambas? • Uso de memoria virtual. • Los algoritmos empleados en la gestión de memoria. Administración de la memoria • La decisión de las dos primeras depende en gran medida del hardware a donde será ejecutado el SO. • En el tercer caso, los sistemas están orientados a la paginación en general por el uso de memoria virtual, por lo que los algoritmos de gestión estarán encaminados a considerar estas características. • Por lo tanto, la idea de los gestores de memoria, será disminuir el número de fallos de página. Para ello se deben tomar decisiones sobre qué páginas se pueden remplazar. Administración de la memoria Para los algoritmos hay que considerar: • • • • Políticas de lectura. Políticas de ubicación. Políticas de reemplazo. Políticas de vaciado. Administración de la memoria Políticas de lectura Se refiere a la manera en que se van a cargar las páginas en la memoria; se tienen dos casos: • Paginación por demanda: la página solo se carga cuando se utiliza. Al principio los fallos son muchos, pero estos disminuyen con el tiempo. • Paginación previa: Ante un fallo de página, se cargan todas las páginas relacionadas con la del primer fallo. Administración de la memoria Políticas de ubicación Consiste en determinar en que área de la memoria residirá un proceso. En paginación, debido a su manera de organización, no es muy importante este aspecto; sin embargo, cuando se habla de segmentación, esto es un aspecto muy importante; generalmente se emplean las políticas del mejor ajuste o el primer ajuste. Administración de la memoria Políticas de reemplazo • La idea es determinar que página se va a reemplazar para colocar otra. • El objetivo es reemplazar la página que en el futuro tenga la menor posibilidad de ser referenciada. • Son necesarias estadísticas a fin de predecir el futuro. • Sin embargo, no es deseable algo muy sofisticado, para no saturar el hardware. Administración de la memoria Políticas de reemplazo • Problema: las páginas bloqueadas. • En esta política, se considera el número de marcos que se debe asignar a cada proceso. • En función de lo anterior, si hay un fallo de página, se deberán considerar las páginas dentro de los marcos asignados, o se usaran otros marcos. Administración de la memoria Políticas de reemplazo Algunos algoritmos de reemplazo son los siguientes: • • • • Optimo (ideal). Least Recently Used LRU (menos usada). FIFO. Reloj (o algoritmo de segunda oportunidad). Administración de la memoria Políticas de reemplazo: optimo • Selecciona la página que tiene que esperar el mayor tiempo a ser referenciada. • Este es el caso ideal, ya que requiere que el SO conozca de manera completa el comportamiento de las páginas de un determinado proceso. • Este algoritmo sirve de base para los demás. Administración de la memoria Políticas de reemplazo: LRU • En este caso se reemplaza la página que no ha sido usada por más tiempo. • Haciendo uso del principio de cercanía, esta sería la página con menor probabilidad der ser usada. • Su implementación es costosa, cada página requiere de asignar una etiqueta de tiempo para determinar cuando fue usada por ultima vez. Administración de la memoria Políticas de reemplazo: FIFO • En este caso, las paginas se descargan de memoria según una política tipo “Round-Robin”, ya que se emplea una especie de buffer circular. • Esta política es muy sencilla de implementar, solo se quita la página que lleva más tiempo. • Sin embargo su rendimiento es muy pobre. • Se requieren marcas de tiempo. Administración de la memoria Políticas de reemplazo: de reloj • Esta política requiere de un bit de uso, el cual se modifica como sigue: se pone a 0 cuando se carga la página, y se coloca a 1 cuando se hace referencia a la página en una segunda vez. • El algoritmo recorre las paginas, como en una especie de buffer circular, hasta que encuentra una pagina con el bit de uso igual a cero; en caso de que el bit de uso sea 1, lo cambia a 0 y continua. Administración de la memoria Consideremos las siguientes solicitudes con 4 marcos de página: 5 1 2 3 5 9 2 7 1 3 2 7 9 1 3 6 5 7 9 Administración de la memoria Sin embargo, hay algunos puntos a considerar: • Entre menos marcos se asignen, el número de procesos aumenta. • Pero si es menor, el número de fallos de página aumenta. • Después de un determinado tamaño, la asignación de más marcos no tendrá efectos notables. Administración de la memoria A lo anterior se le conoce como Gestión del conjunto residente, y es la manera en que se van asignar marcos de página a los procesos. En este sentido, se implementan dos políticas: • Asignación fija. • Asignación variable. Administración de la memoria Política de vaciado Es en cierto sentido contraria a la política de lectura, ya que se preocupa por determinar en que momento se va a escribir al medio secundario una página que ha sido modificada. De igual manera existen dos casos: • Estático. • Dinámico. Administración de la memoria Política de vaciado: estático • En este caso, la página se escribe en el medio secundario solo cuando ha sido seleccionada para ser reemplazada. • Minimiza las escrituras, pero hace que un proceso tenga que esperar más tiempo. • Una solución es implementar una memoria intermedia, que posea dos listas: modificadas y no modificadas. Administración de la memoria Política de vaciado: dinámico • Escribe las páginas modificadas antes de que se empleen sus marcos. • Este método genera un malgasto de operaciones que en ocasiones son innecesarias. • Como la escritura es en lotes, se tienen que escribir muchas páginas al mismo tiempo. Fin de clase 8