Está en la página 1de 60

Sistemas Operativos

I
Memoria Virtual

Memoria Virtual
La memoria virtual es una tcnica de gestin de la memoria que permite
que el sistema operativo disponga, tanto para el software de usuario como
para s mismo, de mayor cantidad de memoria que est disponible
fsicamente. La mayora de los ordenadores tienen cuatro tipos de
memoria: registros en laCPU, lamemoria cach(tanto dentro como fuera
del CPU), la memoriaRAMy el disco duro. En ese orden, van de menor
capacidad y mayor velocidad a mayor capacidad y menor velocidad.

Memoria Virtual

Estructuras de hardware y de control


Todas las referencias a la memoria se traducirn
dinmicamente a direcciones fsicas durante la ejecucin:
Un proceso puede cargarse y descargarse de la memoria principal de
tal forma que ocupe regiones diferentes.

Un proceso puede dividirse en varias partes y no es


necesario que estas partes se encuentren contiguas en la
memoria principal durante la ejecucin:
No ser necesario que todas las pginas o todos los segmentos de
un proceso estn en la memoria durante la ejecucin.

Ejecucin de un programa
El sistema operativo comienza trayendo slo unos
pocos fragmentos del programa.
El conjunto residente es la parte de un proceso que
est realmente en la memoria principal.
Si el procesador encuentra una direccin lgica que no
est en la memoria principal, genera una interrupcin
que indica un fallo de acceso a la memoria.
El sistema operativo pone al proceso interrumpido en
estado Bloqueado.

Ejecucin de un programa
El sistema operativo necesita traer a la memoria
principal el fragmento del proceso que contiene la
direccin lgica que provoc el fallo de acceso:

El sistema operativo emite una solicitud de Lectura de E/S al


disco.
El sistema operativo puede expedir otro proceso para que se
ejecute mientras realiza la operacin de E/S.
Una vez que el fragmento deseado se ha trado a la memoria
principal y se ha emitido la interrupcin de E/S, se devuelve
el control al sistema operativo, que coloca el proceso
afectado en el estado de Listo.

Ventajas de dividir un proceso


Se pueden mantener ms procesos en la memoria principal:
Se cargan slo algunos fragmentos de un proceso particular.
Con tantos procesos en la memoria principal es muy probable que
uno de los procesos est en estado Listo en un instante
determinado.

Es posible que un proceso sea ms grande que toda la


memoria principal.

Tipos de memoria
Memoria real:
Memoria principal.

Memoria virtual:
Memoria situada en el disco.
Permite una multiprogramacin muy efectiva y releva al usuario
de las rgidas e innecesarias restricciones de la memoria principal.

Hiperpaginacin
El sistema operativo expulsa un fragmento de un proceso
justo antes de ser usado.
El procesador consume ms tiempo intercambiando
fragmentos que ejecutando instrucciones de usuario.

Principio de cercana
Las referencias a los datos y al programa dentro de un
proceso tienden a agruparse.
Durante cortos periodos de tiempo se necesitarn slo
unos pocos fragmentos de un proceso.
Sera posible hacer predicciones inteligentes sobre qu
fragmentos de un proceso se necesitarn en un futuro
cercano.
El principio de cercana sugiere que los esquemas de
memoria virtual pueden funcionar eficazmente.

Soportes de la memoria virtual


Tiene que existir un soporte de hardware para la paginacin
y la segmentacin.
El sistema operativo debe incluir un software para gestionar
el movimiento de pginas o segmentos entre memoria
secundaria y memoria principal.

Paginacin
Cada proceso tiene su propia tabla de pgina.
Cada entrada de la tabla de pginas contiene el nmero de
marco de la pgina correspondiente en la memoria
principal.
Se necesita un bit para indicar si la pgina correspondiente
est presente en la memoria principal o no lo est.

El bit de modificacin en la tabla de


pginas
Otro bit de control necesario en la entrada de la tabla de
pginas es el bit de modificacin para indicar si el
contenido de la pgina se ha alterado desde que la pgina
se carg en la memoria principal.
Si no ha habido cambios, no es necesario escribir la pgina
cuando sea sustituida en el marco que ocupa actualmente.

Entradas de la tabla de pginas


Formatos tpicos de gestin de memoria.

Traduccin de direcciones en un sistema de paginacin.

Esquema de dos niveles para


direcciones de 32 bits

Tablas de pginas
La tabla de pginas completa puede ocupar una cantidad
enorme de memoria principal.
Para solucionar este problema, las tablas de pginas se
almacenan en la memoria virtual.
Cuando un proceso se est ejecutando, al menos una parte
de su tabla de pginas se encuentra en la memoria
principal.

Buffer de traduccin adelantada


Cada referencia a la memoria virtual puede generar
dos accesos a la memoria:
Uno para obtener la entrada de la tabla de pginas
correspondiente.
Otro para obtener el dato deseado.

Para solucionar este problema, los esquemas de


memoria virtual hacen uso de un cache especial para
las entradas de la tabla de pginas:
Se trata de la buffer de traduccin adelantada (TLB,
Translation Lookaside Buffer).

Buffer de traduccin adelantada


Contiene aquellas entradas de la tabla de pginas usadas
hace menos tiempo.
Funciona del mismo modo que una memoria cache.

Buffer de traduccin adelantada


Dada una direccin virtual, el procesador examinar
primero la TLB.
Si la entrada de la tabla de pginas buscada est presente
(un acierto en la TLB), se obtiene el nmero de marco y
se forma la direccin real.
Si la entrada de la tabla de pginas no se encuentra (un
fallo en la TLB), el procesador emplea el nmero de
pgina como ndice para buscar en la tabla de pginas del
proceso y examinar la entrada correspondiente de la tabla
de pginas.

Buffer de traduccin adelantada


Primero comprueba que la pgina est en la memoria
principal:
Si no est, se produce un fallo en el acceso a la memoria, llamado
fallo de pgina.

El procesador actualiza la TLB para incluir esta nueva


entrada de la tabla de pginas.

Funcionamiento de la paginacin
con buffer de traduccin
adelantada (TLB)

Uso de un Buffer
de Traduccin
Adelantada.

Tamao de pgina
Cuanto menor sea el tamao de pgina, menor ser la cantidad
de fragmentacin interna.
Cuanto menor sea la pgina, mayor ser el nmero de pginas
que se necesitan por proceso.
Un nmero mayor de pginas por proceso significa que las tablas
de pginas sern mayores.
Esto puede significar que una gran parte de las tablas de pginas
de los procesos activos deben estar en la memoria virtual.
La memoria secundaria est diseada para transferir eficazmente
los bloques de datos de mayor tamao, de manera que es
propicia para tamaos de pgina mayores.

Tamao de pgina
Si el tamao de pgina es muy pequeo, estarn
disponibles en la memoria principal un gran nmero de
pginas para cada proceso.
Despus de un tiempo, todas las pginas de la memoria
contendrn parte de las referencias ms recientes del
proceso. La tasa de fallos de pgina ser menor.
Cuando se incrementa el tamao de la pgina, cada
pgina individual contendrn posiciones cada vez ms
distantes de cualquier referencia reciente. La tasa de

omportamiento tpico
e la paginacin en un programa.

Tamao de pgina
Mltiples tamaos de pgina proporcionan la flexibilidad
necesaria para usar una TLB eficazmente.
Las pginas grandes se pueden utilizar para traducir
instrucciones de programa.
Las pginas de pequeo tamao se pueden emplear para las
pilas de los hilos.
La mayora de los sistemas operativos favorecen el uso de un
solo tipo de pgina.

Ejemplos de tamaos de pginas

Segmentacin
Los segmentos pueden ser de distintos tamaos,
incluso de forma dinmica.
Simplifica la
crecientes.

gestin

de

Permite modificar y
independientemente.

estructuras

recopilar

los

de

programas

Se presta a la comparticin entre procesos.


Se presta a la proteccin.

datos

Tablas de segmentos
Segmento correspondiente de la memoria principal.
Cada entrada de la tabla de segmentos contiene la
longitud del segmento.
Se necesita un bit para indicar si el segmento
correspondiente est presente en la memoria principal.
Otro bit de control necesario es un bit de modificacin
que indique si el contenido del segmento
correspondiente ha sido modificado desde que se carg
por ltima vez en la memoria principal.

Entradas de las tablas de segmentos

ormatos tpicos de gestin de memoria.

Paginacin y segmentacin
combinadas
La paginacin es transparente al programador.
La paginacin elimina la fragmentacin externa.
La segmentacin es visible para el programador.
La segmentacin permite gestionar estructuras de datos
que pueden crecer, la modularidad y el soporte de la
comparticin y la proteccin.
Cada segmento se divide en varias pginas de tamao fijo.

Paginacin y segmentacin
combinadas
ormatos tpicos de gestin de memoria.

Relaciones de proteccin
entre segmentos.

Direcci Memoria
n
principal

Polticas de lectura
Poltica de lectura:
Est relacionada con la decisin de cundo se debe cargar una
pgina en la memoria principal.
Con la paginacin por demanda, se trae una pgina a la memoria
principal slo cuando se hace referencia a una posicin en dicha
pgina:
Cuando un proceso se ejecute por primera vez, se producirn muchos fallos
de pgina.

Con la paginacin previa, se cargan ms pginas de las necesarias:


Es ms eficiente traer a la memoria un nmero de pginas contiguas.

Polticas de reemplazo
Poltica de ubicacin:
Qu pgina se va a reemplazar.
La pgina que se va a reemplazar tiene que ser la que tenga una
menor posibilidad de ser referenciada en un futuro cercano.
La mayora de las polticas intentan predecir el comportamiento
futuro en funcin del comportamiento pasado.

Polticas de reemplazo
Bloqueo de marcos:
Cuando un marco est bloqueado, la pgina cargada en ese
marco no puede ser reemplazada.
La mayora del ncleo del sistema operativo est en marcos
bloqueados.
Estructuras de control.
Buffers de E/S.
El bloqueo se consigue asociando un bit de bloqueo a cada
marco.

Algoritmos bsicos de reemplazo


Poltica ptima:
Selecciona para reemplazar la pgina que tiene que esperar una
mayor cantidad de tiempo hasta que se produzca la referencia
siguiente.
Es imposible de implementar porque requiere que el sistema
operativo tenga un conocimiento exacto de los sucesos futuros.

Algoritmos bsicos de reemplazo


Poltica de la usada menos recientemente (LRU):
Reemplaza la pgina de memoria que no ha sido referenciada
desde hace ms tiempo.
Debido al principio de cercana, sta sera la pgina con menor
probabilidad de ser referenciada en un futuro cercano.
Una solucin sera etiquetar cada pgina con el momento de su
ltima referencia.

Algoritmos bsicos de reemplazo


Poltica de primera en entrar primera en salir (FIFO):
Trata los marcos asignados a un proceso como un buffer circular.
Las pginas se suprimen de la memoria segn la tcnica de turno
rotatorio (round-robin).
Es una de las polticas de reemplazo ms sencillas de
implementar.
Se reemplaza la pgina que ha estado ms tiempo en la memoria.
Estas pginas pueden necesitarse de nuevo y en un plazo de
tiempo corto.

Algoritmos bsicos de reemplazo


Poltica del reloj:
Requiere asociar un bit adicional a cada marco, denominado bit de
uso.
Cuando se carga una pgina por primera vez en un marco de
memoria, el bit de uso de dicho marco se pone a cero.
Cuando se hace referencia a la pgina posteriormente, el bit de
uso se pone a 1.
Cuando llega el momento de reemplazar una pgina, el primer
marco encontrado con el bit de uso a 0 es reemplazado.
Durante la bsqueda para realizar reemplazos cada bit de uso a 1
se cambia a 0.

Ejemplo de funcionamiento
de la poltica del reloj.

Ejemplo de funcionamiento
de la poltica del reloj.

Algoritmos bsicos de reemplazo


Almacenamiento intermedio de pginas:
La pista de la pgina reemplazada se asigna a una de las dos
listas siguientes:
La lista de pginas libres, si la pgina no ha sido modificada.
La lista de pginas modificadas, si lo ha sido.

Tamao del conjunto residente


Asignacin fija:
Otorga a cada proceso un nmero fijo de pginas en las que
ejecutar.
Cada vez que se produce un fallo de pgina en la ejecucin de un
proceso, se debe reemplazar una de las pginas de dicho proceso.

Asignacin variable:
Permite que el nmero de marcos asignados a un proceso cambie
a lo largo de su vida.

Asignacin variable y alcance global


Es la combinacin ms sencilla de implementar.
Ha sido adoptada por un buen nmero de sistemas operativos.
Normalmente el sistema operativo mantiene un lista de marcos
libres.
Cuando se produce un fallo de pgina, se aade un marco libre
al conjunto residente del proceso.
Cuando no hay marcos libres, el sistema operativo debe elegir
una pgina que est en la memoria para reemplazar.

Asignacin variable y alcance local


Cuando se carga un nuevo proceso en la memoria, se le
asigna cierto nmero de marcos en funcin del tipo de
aplicacin, las necesidades del programa u otros criterios.
Cuando se produce un fallo de pgina, se selecciona la
pgina a reemplazar de entre las del conjunto residente
del proceso que sufre el fallo.
Se vuelve a evaluar la asignacin de vez en cuando.

Polticas de vaciado
Vaciado por demanda:
Una pgina se escribir en la memoria secundaria slo cuando
haya sido elegida para reemplazarse.

Vaciado previo:
Escribe las pginas modificadas por lotes.

Polticas de vaciado
La mejor solucin es incorporar almacenamiento intermedio
de pginas:
Las pginas reemplazadas pueden situarse en dos listas:
Modificadas y no modificadas.

Las pginas de la lista de modificadas pueden escribirse


peridicamente por lotes.
Una pgina de la lista de no modificadas pueden reclamarse, si se
le hace de nuevo referencia o perderse, cuando se asigna su
marco a otra pgina.

Control de carga
Determina el nmero de procesos que pueden estar en la
memoria principal.
Cuando hay pocos procesos residentes en la memoria,
habr muchas ocasiones en las que todos los procesos
estn bloqueados y se gastar mucho tiempo en el
intercambio.
Si hay demasiados procesos residentes, el resultado ser la
hiperpaginacin.

Suspensin de procesos
Procesos con la prioridad ms baja.
Procesos con fallos de pgina:
Este proceso no tiene su conjunto de trabajo en la memoria
principal, por lo que quedar bloqueado de todas formas.

ltimo proceso activado:


Este es el proceso con menos posibilidades de tener su conjunto
de trabajo residente.

Suspensin de procesos
Proceso con el conjunto residente ms pequeo:
Este es el proceso que necesita el menor esfuerzo futuro para
volver a cargar el conjunto residente.

El proceso mayor:
Esta alternativa obtiene la mayor cantidad de marcos libres.

Procesos con la mayor ventana de ejecucin restante.

Gestin de memoria en UNIX y Solaris


Sistema de paginacin:

Tabla de pginas.
Descriptor de bloques de disco.
Tabla de marcos de pgina.
Tabla de uso de intercambios.

Estructuras de datos

Formatos de gestin
de memoria en UNIX SVR4.

Estructuras de datos
Formatos de gestin
de memoria en UNIX SVR4.

Gestin de memoria en UNIX y Solaris


Reemplazo de pginas:
Es un refinamiento de la poltica del reloj.

Asignador de memoria del ncleo:


La mayor parte de estos bloques son significativamente ms
pequeos que el tamao de pgina en las mquinas normales.

Gestin de memoria en Linux


Directorio de pginas.
Directorio intermedio de pginas.
Tabla de pginas.

Gestin de memoria en Windows 2000


Paginacin en W2K:
Disponible.
Reservada.
Confirmada.

pacio de direcciones virtuales


or defecto en Windows

Memoria Virtual
Configuracin Memoria Virtual en Windows

También podría gustarte