You are on page 1of 113

Sistemas Operativos

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

Procesamiento de un programa de usuario

Espacio de direcciones fsico Vs lgico

Una direccin contenida en una instruccin es comnmente llamada direccin lgica

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

El programa de usuario nunca ve la direccin fsica real

Direcciones fsicas y lgicas


Entonces, el programa de usuario trata con las direcciones lgicas El hardware establece las correspondencias entre direcciones lgicas y fsicas Entonces existen dos tipos de direcciones: direcciones lgicas en el rango de 0 max y direcciones fsicas en el rango R+0 R+max, para una base R

Carga dinmica (Dynamic loading)


Hasta ahora hemos dicho que el programa entero y los datos de un proceso deben estar en memoria fsica para la ejecucin del proceso El tamao de un proceso est limitado por el tamao de la memoria fsica Para obtener una mejor utilizacin del espacio de memoria se utiliza la carga dinmica

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

Asignacin de memoria principal

Asignacin de memoria contigua


La memoria principal deba alojar proceso del SO como proceso de usuario La asignacin de memoria contigua es un mtodo que asigna diferentes partes de la memoria principal a los diferentes procesos La memoria principal generalmente se divide en dos grandes particiones
Una para el SO residente Otra para los procesos de usuario

Asignacin de memoria contigua


El problema de la asignacin de memoria consiste en permitir a varios procesos de usuario residir en memoria al mismo tiempo, asignndoles la memoria disponible Con la asignacin de memoria contigua, cada proceso est contenido en una seccin de memoria contigua

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

Soporte de Hardware para los registros lmite y 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

Este esquema de asignacin corresponde a los mtodos de particiones mltiples

Mtodo de particiones mltiples


En este mtodo cuando una particin est libre se selecciona un proceso de la cola de entrada y se carga a la particin libre Cuando el proceso termina, la particin queda libre para algn otro proceso Este mtodo es llamado MFT (Multiprogramming with a Fixed Number of Tasks)
Actualmente est en desuso

MVT - Multiprogramming with variable task-size


En este mtodo el S.O. mantiene una tabla indicando qu partes de la memoria estn disponible y cuales no lo estn Inicialmente, toda la memoria est disponible para los procesos de usuario y es considerada como un solo bloque grande de memoria (un rea libre o hole) Cuando un proceso llega y necesita memoria se busca el bloque de memoria suficientemente grande para este proceso

Asignacin de la memoria, MVT


Cuando se encuentra un bloque de tamao suficiente, entonces se asigna nicamente la cantidad necesaria, manteniendo el resto libre para futuras peticiones En cualquier momento dado se tiene una lista de los tamaos de bloques disponibles y de los procesos en la cola de entrada El S.O. puede ordenar la cola de entrada de acuerdo a un algoritmo de calendarizacin. Entonces la memoria se asigna a los procesos hasta que los requerimientos del siguiente proceso no pueden cumplirse

Asignacin de la memoria, MVT


Entonces el SO puede esperar hasta que exista un bloque disponible o puede buscar en la cola de procesos por alguno que requiere de menos memoria En general, un conjunto de bloques, espacios de diferentes tamaos se distribuyen a lo largo de la memoria principal Entonces, cuando un proceso llega, se busca el bloque que es suficientemente grande para ese proceso y si el bloque es muy grande se divide en dos
Una parte para el proceso La otra se regresa al conjunto de bloques

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.

Anlisis de las tres tcnicas


Simulaciones con las 3 tcnicas han mostrado
El primer ajuste y el mejor ajuste son mejores que el peor ajuste en trminos del decremento del tiempo y eficiencia de la asignacin de la memoria Generalmente el primer ajuste es ms rpido

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

Considere un esquema de particin mltiple con un hole de 18,464 bytes


Suponga que el proceso siguiente requiere de 18,462 bytes. Si se asigna exactamente el bloque requerido se tendr un residuo de 2 bytes
La idea general es dividir la memoria fsica en bloques de tamao fijo y asignar la memoria como unidades de bloques

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

El objetivo es reordenar el contenido de la memoria y colocar a la memoria libre en un solo bloque


Sin embargo la compactacin no siempre es posible
Si la reubicacin es esttica y se hace en tiempo de carga o ensamble no se puede llevar a cabo La compactacin solo es posible si la reubicacin es dinmica y es hecha en tiempo de ejecucin

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 de paginacin


La memoria fsica se divide en bloques de tamao fijo llamados marcos (bloques) La memoria lgica se divide en bloques del mismo tamao llamados pginas Cuando se va a ejecutar un proceso se cargan sus pginas a cualesquiera marcos disponibles
La RAM se divide en bloques fijos que son del mismo tamao que los marcos de memoria

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

Soporte de hardware para la paginacin

Modelo de paginacin de la Memoria Fsica y la Memoria Lgica

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

Nmero de pgina p m-n

Corrimiento de pgina d n

p = es un ndice en la tabla de pginas y d es el corrimiento dentro de la tabla

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

Asignacin dinmica de memoria no contigua


Paginacin
Memoria lgica
Pginas Direcciones lgicas: Nmero de pgina, corrimiento dentro de pgina

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

Fragmentacin interna con paginacin


Ejemplo:
Pginas de 2048b (2 Kb), proceso requiere 72,766b (72 Kb) entonces necesita 35 pginas ms 1086 b Se le asignan 36 pginas resultando una fragmentacin interna de 962B

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

Esta correspondencia se oculta al usuario y es controlada por el S.O.

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

Esta informacin generalmente se almacena en una estructura llamada tabla de marco

Soporte de HW para la paginacin


Cada S.O. tiene sus mtodos para almacenar la tabla de pginas La mayora asigna una tabla de pginas por proceso Un apuntador a la tabla de pginas se almacena con los valores de otros registros en el PCB Cuando el dispatcher inicia un proceso debe volver a cargar los registros del proceso y definir los valores de HW correctos de la tabla de pginas

Soporte de HW para la paginacin


La implementacin en hardware de una tabla de pginas se puede hacer de diferentes formas, la ms sencilla es utilizando registros dedicados Estos registros deben ser construidos de manera eficiente ya que cada acceso a la memoria se debe hacer a travs de la correspondencia de pginas

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

Proteccin de las pginas


La proteccin de la memoria en un ambiente de paginacin se lleva a cabo utilizando bits de proteccin que estn asociados con cada marco Estos bits se mantienen en la tabla de pginas

Un bit puede definir si una pgina es de solo lectura o lectura-escritura


De esta manera, al mismo tiempo que se calcula la direccin fsica se verifican los bits de proteccin

Bit vlido - invlido


Generalmente se agrega un bit ms a la tabla de pginas: bit vlido-invlido Cuando este bit est en vlido significa que la pgina asociada pertenece al espacio de direcciones lgicas del proceso y en consecuencia es una pgina vlida El S.O. controla este bit para permitir o restringir el acceso a una pgina

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

Perspectiva del usuario de un programa

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

Soporte de hardware para 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

Segmento base y lmite


El segmento base contiene la direccin fsica inicial donde el segmento reside en memoria

Mientras que el segmento lmite especifica la longitud del segmento


Una direccin lgica consiste de dos partes
Un nmero de segmento s Un corrimiento d dentro de ese segmento

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

Segmento base y lmite


Si no ocurre as, se crea un trap para el S.O. (direccin lgica termina ms all del segmento) Si el corrimiento es legal, entonces se agrega a la base de segmento para producir la direccin en memoria fsica deseada
La tabla de segmento es esencialmente un arreglo de pares de registros lmite-base

HW para la proteccin de Segmentacin

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.

Ventajas de la memoria virtual


Un programa ya no queda restringido por la cantidad de memoria fsica que est disponible. Los usuarios pueden escribir programas para un espacio grande de direcciones virtuales Dado que cada usuario puede ahora tomar menos memoria fsica, ms programas pueden correr al mismo tiempo, incrementando la utilizacin y la eficiencia pero sin incrementar en tiempo de respuesta o tiempo total

Se requiere menos operaciones de E/S para cargar o swap cada programa de usuario a la memoria

Ventajas de la memoria virtual


La memoria virtual es la separacin de la memoria lgica de la memoria fsica La memoria virtual hace que la programacin sea ms fcil, dado que el programador ya no se preocupa por la cantidad de memoria fsica disponible.

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

Paginacin bajo demanda


El sistema de paginacin bajo demanda es similar a un sistema de paginacin con swapping Los procesos residen en una memoria secundaria (usualmente disco)
Cuando se desea ejecutar un proceso se swapea a memoria En vez de cargar el proceso completo a la memoria se utiliza un swapper lento. Un swapper lento nunca carga una pgina a la memoria a menos que sta sea necesaria

Paginacin bajo demanda


Un swapper manipula al proceso entero mientras que un paginador maneja las paginas individuales de los procesos

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

Sistema de paginacin bajo demanda

Paginacin bajo demanda


En lugar de cargar en memoria el proceso completo, el paginador carga solamente aquellas pginas necesarias en memoria Entonces el paginador evita leer en pginas que no sern utilizadas decrementando el tiempo de swap y la cantidad de memoria fsica necesaria Con este esquema es necesario algn mecanismo de hardware para distinguir aquellas pginas que estn en memoria de aquellas que estn en disco

Paginacin bajo demanda


Esquema de bit vlido-invlido
Cuando el bit se establece a vlido el valor indica que la pgina asociada es legal y est en memoria Si el bit se establece a invlido indica que la pgina no es vlida, es decir no est en el espacio lgico de direcciones o es vlida pero est en el disco

Tabla de pginas

Paginacin bajo demanda


Marcar una pgina invalida no tiene ningn efecto si el proceso nunca utiliza esa pgina
Por lo que si se no son necesarias pginas adicionales, el proceso se ejecutar normalmente

Qu pasa si el proceso trata de acceder a una pgina que no se carg en memoria?


El acceso a una pgina marcada como invlida causa trap page-fault

Entonces cmo se soluciona

Si la pgina no est cargada


1. Se verifica una tabla interna normalmente en el PCB para verificar el acceso vlido o invlido
2. Si la referencia fue invlida, se termina el proceso. Si fue vlido pero no se ha cargado la pgina entonces se carga

3. Se busca un marco libre


4. Se calendariza una operacin de disco para leer la pgina deseada y cargarla al marco libre

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

Pasos para manejar una page fault

Paginacin bajo demanda pura


Esta tcnica consiste en que se inicie la ejecucin de un proceso del cual no se haya cargado ninguna pgina Cuando el S.O. establece el apuntador a la primera instruccin del proceso, la cual no est en una pgina residente en memoria, inmediatamente se arroja un trap Despus de que se carga la pgina a memoria se continua arrojando tantos trap como pginas necesarias para ejecutar el proceso completamente
Es decir, nunca carga una pgina a la memoria hasta que es requerida

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)

Se puede reducir la sobrecarga utilizando un bit de modificacin o bit sucio

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

Paginacin bajo demanda


Para implementar paginacin bajo demanda se debe desarrollar un algoritmo de asignacin de marco y uno de reemplazo de pgina

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

Si rastreamos un proceso en particular podemos registrar la siguiente secuencia de direcciones


1.
2.

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

Reemplazo de pginas FIFO


FIFO es el algoritmos ms sencillo para el reemplazo de pginas Asocia con cada pgina el tiempo cuando la pgina se carg a la memoria. Entonces cuando una pgina debe reemplazarse, se escoge la ms vieja Otra manera es crear un cola para mantener a las pginas en memoria. Se reemplaza la pgina en la cabeza de la cola. Cuando una pgina se carga a memoria se pone al final de la cola

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

Ejemplo FIFO (2)


Cadena de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

3 frames (3 pginas pueden estar en memoria por proceso)


1 2 3 1 2 3 4 1 2 5 3 4 9 page faults

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

Algoritmos de reemplazo de pginas


Menor tasa de reemplazo FIFO
Anomala de belady

Acelerar el proceso de reemplazo


Bit de modificacin

Reemplazo de pginas ptimo


Un algoritmo de reemplazo de pginas ptimo tiene la tasa de fallas de pgina ms baja de todos los algoritmos y nunca sufrir la anomala de Belady A este algoritmo se le llama OPT o MIN, es sencillo
Reemplaza la pgina que no se utilizar por el perodo de tiempo ms largo

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

Ejemplo OPT (2)


Las primeras 3 referencias causan falla de pgina La referencia a la pgina 2 reemplaza a 7 por que la 7 no se utiliza hasta la 18 referencia, mientras que la pgina 0 se utiliza hasta la referencia 5 y la pgina 1 hasta la 14 La referencia a la pgina 3 reemplaza la pgina 1 por que de las 3 en memoria la 1 es la ltima en ser referenciada de nuevo

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