Escolar Documentos
Profissional Documentos
Cultura Documentos
Administracin de Memoria
U3-C20
Enlaces (Binding)
Las direcciones en el programa fuente son generalmente simblicas, por ejemplo contador Un compilador generalmente ligar esas direcciones simblicas a direcciones reubicables El editor de enlaces o cargador enlazar las direcciones reubicables a direcciones absolutas
Enlace de instrucciones y datos a direcciones de memoria El enlace de instrucciones y datos a direcciones de memoria puede ocurrir en tres etapas
Tiempo de compilacin. Si conociramos en tiempo de compilacin donde el proceso residir en memoria, entonces se puede generar cdigo absoluto. Tiempo de carga. Si no se conoce en tiempo de compilacin donde el proceso residir en memoria, entonces el compilador debe generar un cdigo reubicable. En este caso, el enlace final se demora hasta el tiempo de carga Tiempo de ejecucin. Si el proceso puede ser movido durante su ejecucin de un segmento de memoria a otro, entonces el enlace debe retrasarse hasta el tiempo de ejecucin
Mientras que una direccin vista por la unidad de memoria, es decir, una direccin cargada en el registro de direccin de memoria de la memoria es llamada direccin fsica
Los mtodos de enlace de direcciones por tiempo de compilacin y tiempo de carga generan direcciones idnticas fsicas y lgicas
Espacio de direcciones
Sin embargo, el esquema de enlace de direccin en tiempo de ejecucin produce direcciones fsicas y lgicas diferentes
En este caso, nos referimos a las direcciones lgicas como direccin virtual
El conjunto de todas las direcciones lgicas generadas por un programa se llama espacio de direcciones lgicas El conjunto de todas las direcciones fsicas correspondientes al espacio de direcciones lgicas es el espacio de direcciones fsicas
MMU
Entonces, en tiempo de ejecucin el esquema de enlace de direcciones, fsico y lgico difieren. La correspondencia en tiempo de ejecucin de direcciones virtuales a fsicas es llevada a cabo por un dispositivo de hardware llamado unidad de administracin de memoria (MMU). Existen diferentes mtodos para llevar establecer tal correspondencia.
MMU
El registro base ahora es llamado registro de reubicacin El valor en el registro de reubicacin se agrega a cada direccin generada por el proceso de usuario en el momento que se enva a memoria
Carga dinmica
Con la carga dinmica una rutina no se carga hasta que es llamada Todas las rutinas se mantienen en disco en un formato de carga relocalizable El programa principal es cargado en memoria y es ejecutado Cuando una rutina necesita llamar a otra, la rutina que llama verifica si la otra rutina ha sido cargada. Si no ha sido cargada, el cargador de enlace relocalizable es llamado para cargar la rutina deseada en memoria y actualizar las tablas de direcciones del programa. Entonces el control es pasado a la nueva rutina cargada
Carga dinmica
La ventaja de la carga dinmica es que una rutina que nunca se utiliza nunca se carga a memoria. Esta tcnica no requiere de soporte especial del SO.
Es trabajo del usuario disear sus programas de tal manera que tome las ventajas de esta tcnica
Enlace dinmico
El concepto de enlace dinmico es similar a la carga dinmica, pero en lugar de que la carga se posponga hasta el tiempo de ejecucin se pospone el enlace Esta caracterstica permite a todos los programas en el sistema NO mantener una copia de sus bibliotecas en el archivo binario ejecutable Un pequeo programa llamado Stub indica cmo localizar la rutina de biblioteca residente en memoria o cmo cargar la biblioteca si no esta en memoria A diferencia de la carga dinmica, el enlace dinmico requiere del soporte del SO.
Swapping
Un proceso puede ser llevado a un almacenamiento secundario durante su ejecucin
Round Robin (Swapping) Prioridad ms baja entonces swap out
(Roll out, Roll In)
Normalmente un proceso que sali de la memoria regresar al mismo espacio de memoria que ocupaba con anterioridad
No obstante quien determina este comportamiento es el mtodo de correspondencia de direcciones que se utiliza Si la correspondencia es hecha en tiempo de compilacin o de carga entonces el proceso no puede ser movido a diferentes direcciones Si la correspondencia es hecha en tiempo de ejecucin el proceso puede ocupar diferentes espacios de memoria
Swapping
Swapping requiere de un almacn de respaldo, el cual es comnmente un disco rpido Este almacn debe proporcionar espacio suficiente para las copias de las imgenes de memoria para todos los usuarios Adems debe proporcionar acceso directo a esas imgenes de memoria
Ejemplo de Swapping
Sistemas Operativos
U3-C21
Proteccin de la memoria
Antes de estudiar la asignacin de la memoria es necesario saber cmo se protege a la memoria
Proteccin de los procesos del S.O. de los procesos de usuario Proteccin de los procesos de usuario entre ellos
La proteccin de memoria se puede establecer utilizando un registro de relocalizacin con un registro lmite El registro de relocalizacin tiene el valor de la direccin fsica ms pequea, el registro lmite tiene el valor del rango de direcciones lgicas
Proteccin de la memoria
Con los registros de reubicacin y lmite, cada direccin lgica debe ser menor que el registro lmite La MMU establece la correspondencia de las direcciones lgicas con las direcciones fsicas de manera dinmica agregndoles el valor del registro de reubicacin
Asignacin de memoria
Uno de los mtodos ms sencillos para asignar memoria consiste en dividir la memoria en varias particiones de tamao fijo Cada particin puede contener exactamente un proceso Entonces el grado de multiprogramacin est limitado por el nmero de particiones
Asignacin de memoria
Este proceso de buscar el bloque que mejor puede satisfacer la demanda de un proceso es un problema particular de la asignacin dinmica de almacenamiento, el cual consiste en cmo cumplir una peticin de tamao N de una lista de bloques Existen muchas soluciones a este problema, las estrategias ms comunes son
El primer ajuste El mejor ajuste El peor ajuste
El primer ajuste
Asigna el primer espacio que sea suficientemente grande La bsqueda de este espacio puede empezar al inicio del conjunto de espacios o inmediatamente despus del espacio anterior de primer ajuste Se termina de buscar tan pronto se encuentra el primer espacio suficientemente grande
El mejor ajuste
Asigna el bloque ms pequeo pero suficiente Se debe buscar a travs de la lista completa de bloques. A menos que la lista est ordenada por tamao. Esta tcnica produce lo menores residuos de bloques
El peor ajuste
Asigna el bloque ms grande. Tambin se debe buscar en toda la lista. Esta tcnica puede producir los residuos de bloques ms grandes que el espacio asignado El objetivo es que el espacio residual que se genera puede ser ms fcilmente asignado que el espacio residual creado por la tcnica de mejor ajuste.
Sistemas Operativos
U3-C22
Fragmentacin externa
Estos tres algoritmos sufren de fragmentacin externa
Conforme los procesos se cargan y remueven de la memoria, el espacio de memoria libre queda en partes pequeas La fragmentacin externa se presenta cuando existe el suficiente espacio de memoria libre pero no se encuentra contigua El almacenamiento se divide en una gran cantidad de segmentos pequeos
Fragmentacin
El problema de la fragmentacin puede ser severo
En el peor caso se tiene un fragmento (desperdiciado) de memoria entre cada proceso
Dependiendo del total de la memoria y el tamao promedio de proceso la fragmentacin externa puede ser un problema mayor o menor
Fragmentacin interna
La fragmentacin de la memoria puede ser interna o externa
La diferencia que puede existir entre la memoria asignada y la solicitada es la fragmentacin interna
Compactacin
Una solucin al problema de la fragmentacin externa es la compactacin
Compactacin
Otra posible solucin a la fragmentacin externa es permitir al espacio de direcciones lgicos de un proceso ser no contiguos De esta manera a un proceso puede asignrsele memoria fsica mientas exista disponible Has dos tcnicas complementarias para lograr esta solucin
Paginacin (paging) Segmentacin
Paginacin (paging)
La paginacin es un esquema de administracin de la memoria que permite al espacio de direcciones fsico de un proceso NO ser contiguo La paginacin elimina el problema de ajustar pedazos de memoria en el disco
Cuando algunos fragmentos de cdigo o datos residentes en memoria principal necesitan ser swapped out se debe encontrar primero espacio en el disco Los problemas de fragmentacin discutidos, relacionados con la memoria principal equivalen con el disco
Paginacin
No obstante, el acceso al disco es mucho ms lento por lo que la compactacin es imposible.
Dadas las ventajas que presenta la paginacin respecto a los esquemas ya visto, es una de las tcnicas utilizadas en los SO modernos Tradicionalmente el soporte para la paginacin ha sido provista por el hardware
Los diseos recientes han implementado la paginacin integrando al hardware con el SO sobre todos en microprocesadores de 64 bits
Mtodo bsico
Cada direccin generada por el CPU se divide en dos partes
Nmero de pgina Corrimiento de la pgina
El nmero de pgina. Se utiliza como un ndice dentro de la tabla de pgina. La tabla de pginas contiene la direccin base de cada pgina en memoria fsica Esta direccin base, se combina con el corrimiento de la pgina para definir la direccin de memoria fsica que es enviada a la unidad de memoria
Mtodo bsico
El tamao de la pgina (como el tamao del marco) es definido por el hardware El tamao de una pgina es normalmente una potencia de 2, variando entre 512B y 16MB por pgina La seleccin del tamao de pgina en potencia de 2 hace a la traduccin de la direccin lgica en un nmero de pgina y un corrimiento de pgina relativamente sencillo
Mtodo bsico
Si el tamao del espacio lgico de direcciones es 2m y el tamao de la pgina es de 2n unidades de direccionamiento, entonces
(m-n) bits de mayor prioridad de una direccin lgica designan el nmero de pgina Y los n bits restantes designan el corrimiento de la pgina
Corrimiento de pgina d n
Ejemplo
Considere un tamao de pgina de 4B y una memoria fsica de 32B (8 pginas) La direccin lgica 0 es la pgina 0, corrimiento 0. Suponga que al indizar en la tabla de pginas la pgina 0 est en el marco 5 Entonces la direccin lgica
0 corresponde a direccin fsica 20 = (5x4)+0 3, (pgina 0, corrimiento 3) corresponde a la direccin fsica 23 = (5x4)+3 4, est en la pgina 1, corrimiento 0 y de acuerdo a la tabla de pginas la pgina 1 corresponde al marco 6. entonces la direccin lgica 4 corresponde a la direccin fsica 24 (6x4)+0
Sistemas Operativos
U3-C23
Repaso
Fragmentacin
Interna Externa
Compactacin
Memoria fsica
marcos
Segmentacin
Paginacin
La paginacin es una forma de reubicacin dinmica
Cada direccin lgica est limitada por el hardware de paginacin a una direccin fsica
Cuado se utiliza paginacin no se tiene fragmentacin externa, cualquier marco puede asignarse a un proceso que lo necesite Sin embargo se puede tener fragmentacin interna. Los marcos son asignados como unidades, por lo que si los requerimientos de memoria de un proceso no encajan en unidades exactas, el ltimo marco asignado puede no estar completamente lleno
Se pensara que reduciendo el tamao de la pgina se puede disminuir la fragmentacin interna. Pero si tenemos pginas pequeas entonces tenemos ms registros en la tabla de pginas lo que implica un mayor costo (overhead) en su funcionamiento
Por otro lado, las operaciones de E/S con el disco son ms rpidas cuando se tienen pginas grandes
Paginacin y el usuario
Un aspecto importante de la paginacin es la separacin clara que existe entre la perspectiva del usuario de la memoria y la disposicin fsica real de la memoria El programa del usuario ve a la memoria como un solo espacio contiguo y en l solo su programa
La traduccin del hardware de memoria lgica a la fsica es la que se encarga de permitir est visualizacin
Paginacin y el usuario
El proceso de usuario no tiene manera de direccionar memoria fuera de la tabla de pgina y la tabla incluye solamente las pginas que el proceso posee Dado que el S.O. administra la memoria fsica debe estar conciente de los detalles de asignacin
Qu marcos estn asignados Qu marcos estn libres Cuntos marcos existen, etc
No obstante, el uso de registros para la tabla de pginas es satisfactoria para una tabla razonablemente pequea La mayora de las computadoras actuales utilizan tablas de pginas muy grandes y el uso de registros rpidos ya no es conveniente
Bit vlido-invlido
Sistemas Operativos
U3-C24
Segmentacin
Ya mencionamos que existe una clara separacin de la perspectiva del usuario de la memoria de la disposicin real de la misma Sin embargo, el usuario no piensa en la memoria como un arreglo lineal de bytes, donde algunos contienen instrucciones y otros datos. Los usuarios ven a la memoria como una coleccin de segmentos de tamao variable sin un orden particular
Segmentacin
Segmentacin es un esquema de administracin de la memoria que soporta la perspectiva que tiene el usuario de la memoria El espacio de direcciones lgicas es una coleccin de segmentos. Cada segmentos tiene un nombre y una longitud En las direcciones especifican tanto el nombre del segmento y su corrimiento dentro del segmento El usuario especifica cada direccin mediante un nombre de segmento y un corrimiento
Segmentacin
En la paginacin, el usuario slo especifica una direccin, la cual es particionada por el hardware en un nmero de pgina y un corrimiento, todo invisible para el programador Por simplicidad los segmentos son numerados y referenciados por un nmero de segmento, entonces una direccin lgica consiste de un tupla
<nmero de segmento, corrimiento>
Seguimiento de la segmentacin
A pesar de que el usuario puede referirse a los objetos del programa mediante una direccin bidimensional, la memoria fsica sigue siendo una secuencia de bytes unidimensional
Se debe implementar la correspondencia de las direcciones bidimensionales del usuario a las direcciones fsicas unidimensionales
Esta correspondencia es tratada por una tabla de segmentos. Cada registro de la tabla de segmentos tiene un segmento base y un segmento lmite
El nmero de segmento se utiliza como un ndice en la tabla de segmentos El corrimiento d de una direccin lgica debe estar entre 0 y el lmite del segmento
Ejemplo
Segmento 2 es de 400B de longitud y comienza en la direccin 4300
Entonces la referencia al byte 53 del segmento 2 corresponde a la direccin fsica 4300+53 La referencia al segmento 3, byte 852 corresponde a la direccin fsica 3200+852
Fragmentacin
Sistemas Operativos
U3-C25
Repaso
Segmentacin
Direccin lgica (# segmento, corrimiento) Segmentos base y lmite Tabla de segmentos
Tarea
Inv segmentacin con paginacin
Memoria virtual
Hasta ahora hemos visto tcnicas de administracin de la memoria con el mismo objetivo
Mantener procesos en la memoria simultneamente para permitir la multiprogramacin
Sin embargo, estas tcnicas tienden a requerir que todo el proceso sea cargado en memoria antes de su ejecucin La memoria virtual es una tcnica que permite la ejecucin de un proceso que no est completamente en la memoria
Memoria virtual
Una de las principales ventajas de este esquema es que los programas pueden ser ms grandes que la memoria fsica Adems la memoria virtual abstrae la memoria principal en un gran arreglo uniforme de almacenamiento, separando la memoria lgica vista por el usuario de la memoria fsica. No obstante, la memoria virtual no es fcil de implementar y puede ocasionar la disminucin del rendimiento si se utiliza sin cuidado.
Se requiere menos operaciones de E/S para cargar o swap cada programa de usuario a la memoria
Memoria virtual
Comnmente se implementa la memoria virtual con paginacin bajo demanda Tambin se puede implementar en un sistema de segmentacin
Varios sistemas proporcionan un esquema de segmentacin con paginacin, donde los segmentos son divididos en pginas, entonces la vista de usuario es de segmentos, pero el S.O. implementa esta vista con paginacin bajo demanda
Memoria virtual
Dado que ahora un proceso est en una secuencia de pginas en vez de un solo espacio largo continuo, en paginacin bajo demanda se utiliza entonces un paginador
Tabla de pginas
5. Cuando se termina de leer del disco, se modifica la tabla interna para indicar que la pgina ahora esta en memoria
6. Se reinicia la instruccin que fue interrumpida por el trap de direccin ilegal
Sistemas Operativos
U3-C26
Repaso
Memoria virtual
Paginacin
Paginacin bajo demanda Bit vlido-invlido Paginacin bajo demanda pura
Segmentacin Segmentacin con paginacin Permite procesos ms grandes que la memoria fsica Permite que se ejecute un proceso sin estar completamente cargado en la memoria principal
Reemplazo de pginas
Hasta ahora page-fault no ha sido un problema, por que cada pgina cuando mucho lanza una trap una vez, cuando es referenciada por primera vez Qu pasa cuando ocurre un pagefault y no existen marcos de memoria libres El reemplazo de pginas acta de la siguiente manera
Si ningn marco est libre, se busca alguno que no est siendo utilizado y lo libera(vctima). Se puede liberar un marco, escribiendo su contenido al espacio de swap y cambiando la tabla de pginas para indicar que la pgina ya no es utilizada Entonces se puede utilizar el marco libre
Reemplazo de pginas
Rutina de fault-page con reemplazo de pginas 1. Encontrar la ubicacin de la pgina deseada en el disco
Encontrar un marco libre
2.
Si existe un marco libre, utilizarlo Si no existe un marco libre, utilice algoritmo de reemplazo de pginas para seleccionar un marco vctima Escriba la pgina vctima al disco, cambie las tablas de marcos y pginas
3.
Cargue la pgina deseada al marco recin liberado, cambie las tablas de pginas y marcos Reinicie el proceso del usuario
4.
Reemplazo de pginas
Note que si no hay marcos libres, se requieren de dos transferencias de pginas (in & out)
Reemplazo de pginas
Cada pgina o marco puede tener un bit de modificacin asociado a l en el hardware
El bit de modificacin de una pgina es establecido por el hardware cuando cualquier palabra o byte en la pgina es escrito, indicando que la pgina ha sido modificada Cuando se selecciona un pgina para su reemplazo se examina su bit de modificacin
Si el bit se ha establecido entonces la pgina ha sido modificada desde que se cargo del disco, en ese caso debe guardarse la pgina en el disco. Si el bit no se ha establecido entonces la pgina no ha sido modificada desde que se carg. Por lo tanto si la copia de la pgina en el disco no ha sido sobreescrita se puede evitar la escritura de la pgina al disco
Algoritmos de reemplazo
Existen diferentes algoritmos de reemplazo de pginas. Cmo seleccionamos un algoritmo de reemplazo?
Se desea uno con la menor tasa de fallas de pginas (fault-page)
Se evala un algoritmo ejecutndolo en una cadena de referencias de memoria particular y calcula el nmero de fallas de pginas.
Cadena de referencia
Para generar las cadenas de referencia podemos:
1. 2. Consideramos nicamente el nmero de pgina, en lugar de la direccin completa Si tenemos una referencia a la pgina p entonces cualquier referencia siguiente inmediata a la misma pgina p nunca causar una falla de pgina
0100,0432,0101,0612,0102,0103,0101,0611,0102,0103,0104, 0101,0610,0102,0103,0104,0101,0609 Con pginas de 100 bytes se produce la cadena de referencia 1,4,1,6,1,6,1,6,1,6
Ejemplo FIFO
Las primeras 3 referencias causan 3 page-fault (inicialmente estn vacos los marcos) La siguiente referencia (2) reemplaza la pgina 7 Dado que 0 es la siguiente referencia y 0 ya est en memoria no se tiene fault-page para esta referencia La primera referencia a 3 causa que la pgina 0 sea reemplazada
FIFO
El algoritmo de reemplazo de pginas FIFO es fcil de implementar sin embargo no tiene un muy buen rendimiento
La pgina reemplazado puede haber estado en desuso mucho tiempo pero tambin puede contener variables de uso constante
Note que cuando se saca una pgina que es constantemente utilizada para cargar una pgina nueva casi de inmediato se volver a cargar la pgina anterior Entonces, malas decisiones de reemplazo aumentan la tasa de fallas de pginas y retrasan la ejecucin del proceso, pero no causan una ejecucin incorrecta
4 Marcos
1 2 3 1 2 5 1 2 4 5 10 page faults
3
4
Anomala de Belady
Sistemas Operativos
U3-C27
Repaso
Reemplazo de pginas
No hay memoria principal libre
El uso de este algoritmo garantiza la tasa ms baja posible de fallas de pgina para un nmero fijo de marcos
Ejemplo OPT
4 marcos 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 2 3 4 5
4
6 page faults
ptimo
Para el ejemplo, con solamente 9 fallas de pgina, OPT es mejor que FIFO. De hecho ningn algoritmo de reemplazo puede hacerlo mejor que OPT Desafortunadamente el algoritmo OPT es difcil de implementar por que necesita del conocimiento futuro de la cadena de referencia En consecuencia, OPT es utilizado principalmente para estudios comparativos
Algoritmo LRU
Menos-Recientemente-Utilizada (LeastRecently-Used, LRU) La diferencia entre FIFO y OPT (adems de ver hacia atrs o hacia delante en el tiempo) es que FIFO utiliza el tiempo transcurrido desde que una pgina se carg a memoria y OPT utiliza el tiempo que una pgina pasar en memoria sin ser utilizada LRU entonces reemplaza la pgina que no ha sido utilizada por el periodo de tiempo ms largo
LRU
LRU asocia con cada pgina el tiempo que ha transcurrido desde que se utiliz esa pgina Cuando una pgina debe ser reemplazada LRU escoge la pgina que no se ha utilizado el mayor periodo de tiempo Este es el algoritmo ptimo de los que buscan hacia atrs en el tiempo
Los primeros 5 fallas de pgina son iguales que en OPT Cuando ocurre la referencia a la pgina 4, LRU ve que de las 3 marcos en memoria la pgina 2 se utiliz menos recientemente. La pgina ms recientemente utilizada es la pgina 0 y despus de ella la pgina 3 Entonces LRU reemplaza la pgina 2, sin saber que la pgina 2 est por ser utilizada de nuevo
LRU ejemplo