Sei sulla pagina 1di 40

UNIVERSIDAD METROPOLITANA CARRERA: INGENIERA DE SISTEMAS ASIGNATURA: Arquitectura de Computadoras TEMA: Polticas de bsqueda en memoria virtual NOMBRE: JUAN

CARLOS SARANGO C. CEDULA: 1716368707

Los programas pueden ser ms grandes que la memoria Solucin adoptada:


Dividir el programa en partes llamadas overlays (capas)
La ejecucin se empieza en el primer overlay Cuando termina se llama al siguiente y as Se pueden tener en memoria varios overlays

El SO se encarga del intercambio De la particin del programa el programador

Hace que esta operacin sea transparente Permite que un proceso sea mayor que la cantidad de memoria disponible En memoria estn las partes del programa que se estn utilizando, el resto en disco

MP

Disco

En multiprogramacin:

En memoria slo una parte del programa


Se pueden tener ms programa Memoria de 2M:
2 programas de 1M completamente en memoria 8 programas con 1/4 de M cada uno en memoria

Cuando un programa est a la espera de que se cargue en memoria una porcin del mismo, est esperando una E/S y se puede seguir con otro programa Es usual utilizar paginacin

Direccin virtual: direccin generada por un programa. Espacio de direcciones virtuales: direcciones que puede generar un programa.

Se divide en unidades llamadas pginas Las unidades correspondientes en memoria fsica se llaman marcos de pgina (512bytes, 1K, 2K, 4K) Las pginas y los marcos tienen idntico tamao. La transferencia entre memoria y disco se realizan siempre en unidades de pginas.

Si no hay memoria virtual, las direcciones generadas por un programa son direcciones fsicas Con memoria virtual, las direcciones se mandan a la unidad de gestin de memoria (MMU)
Dispositivo que se encarga de traducir dinmicamente las direcciones virtuales en fsicas
Procesador MMU Bus Memoria

Direcciones de 16 bits/ memoria de 32 K:


Espacio de direcciones virtuales: 64K (216) Los programas de 64K no caben en memoria (se tiene una copia en disco)

Pginas (y marcos de pgina) de 4K:


16 pginas virtuales (16x4K=64K) 8 marcos de pgina (8x4K=32K)

Cuando se quiere acceder a una direccin:


El programa trabaja con dir. Virtuales Se mandan a la MMU que las convierte

Establece dnde se encuentra cada pgina virtual (en qu marco de pgina)


2 1 6 0 4 3 x x x 5 x 7 x x x x

0-4K 4-8K 8-12K 12-16K

0 1 2 3 4 5 6 7 32-36K 8 9 10 11 12 13 14 60-64K 15

0 1 2 3 4 5 6 7

0-4K 4-8K 8-12K 12-16K

28-32K

0-4095 => 8192-12287 20500 (byte 20 de la pgina 5) => 12288+20 32780 (byte 12 de la pgina 8) => ?

Trap generado por la MMU que captura el SO El SO:


Selecciona un marco de pgina Copia su contenido en disco Carga la pgina que se necesita en ese marco Cambia la tabla de traduccin de la MMU Comienza de nuevo esa instruccin interrumpida

Direccin Virtual => 8196

0
1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0

0 010 1 001 2 110 3 000 4 100 5 011 6 x 7 x 8 x 9 101 10 x 11111 12 x 13 x 14x 15x

Direccin Fsica => 24580

Bit de presente/ausente

La tabla de pginas puede ser muy grande (cada proceso cuenta con su propia tabla de pginas)
si dir. de 32 bits y pginas de 4K
1M de pginas (232 /212 = 220)

La asociacin/traduccin debe ser rpida


Se debe hacer la traduccin para cada referencia a memoria En una instruccin puede haber varias referencias

Vector de registros rpidos en hardware Tabla de pginas en memoria Tablas de pginas de varios niveles Memoria asociativa

Una entrada por pgina virtual Al iniciar el proceso se carga la tabla de pginas del proceso en estos registros Durante la asociacin no hay que acceder a memoria Costosa en recursos si la tabla de pginas es grande (1 registro por pgina) Costosa en tiempo
En el cambio de contexto habra que cargar la tabla de pginas

En hardware slo se necesita un registro que apunte al inicio de la tabla de pginas El cambio de contexto:
modifica un registro

Desventaja:
Hay que hacer una o ms referencias a memoria por cada instruccin para acceder a la tabla de pginas

No todo el espacio de direcciones virtuales es utilizado por todos los procesos


Con 32 bits:
se pueden direccionar 4GBytes (232 bytes) con pginas de 4K: 220 pginas (232/212) tabla de pginas con 1 Milln de entradas slo se utilizan si el proceso ocupa 4G

Para un proceso de 12M:


(12x220)/212=12x28 pginas= 3x210 pg (3K pg)

4M para programa, 4M para datos y 4M Tabla de pginas de 2 nivel para la pila


Tabla de pginas de nivel superior 0 1 1023 Vaco 0 1 1023

Tabla de pginas de programa Tabla de pginas de datos Tabla de pginas de pila

0 1

1023

0 1
1023

Permite acelerar la traduccin Se basa en la observacin de que la mayora de los programas hacen un gran nmero de referencias a un pequeo nmero de pginas Se equipa a la mquina con un dispositivo hardware que permite asociar direcciones virtuales con fsicas: la memoria asociativa
parte de la MMU nmero pequeo de entradas Bsqueda en todas las entradas en paralelo

Para la traduccin
Se comprueba si est la informacin en la memoria asociativa Si est: ya se puede hacer la traduccin En c.c.: bsqueda normal

Pgina Marco virtual de pgina 0

Proporcin de encuentros: proporcin de referencias a memoria que pueden ser satisfechas a partir de la memoria asociativa
Cuanto mayor, mayor el rendimiento

Cuando se produce un fallo de pgina: el SO debe decidir qu pgina que est en memoria debe pasar a disco para traer a memoria la pgina requerida. Si la pgina que sale ha sido modificada: se reescribe en disco. Se puede elegir aleatoriamente, pero es ms eficiente sacar una que no se vaya a utilizar pronto.

Buscar de todas las pginas de memoria aquella a la que se tardar ms en hacer una referencia a ella. Retarda todo lo posible el fallo de pgina. Irrealizable: no se dispone de esta informacin

2 bits asociados a cada pgina


bit R (bit de referencia): se pone a 1 cada vez que se lee o se escribe bit M (bit de modificacin): se pone a 1 cuando se escribe

Cuando se carga en memoria: ambos a 0 Con cada interrrupcin: se pone el bit R a 0 Con el fallo de pgina:
R M

0 0 1 1

0 1 0 1

Se toma aleatoriamente una pgina del grupo 0, si no hay del grupo 1, . Es mejor sustituir una pgina que no se haya usado recientemente aunque haya sido modificada, que una que se haya usado en el ltimo pulso de reloj, ya que tiene mucha probabilidad de usarse de nuevo. Ventaja:

fcil de entender Implementacin eficiente (rendimiento adecuado)

Lista con todas las pginas en memoria


Una pgina que entra se aade al final En el fallo de pgina se saca la pgina que est a la cabeza de la lista

Puede que se sustituya una pgina muy utilizada


Se mira el bit R y M Se sustituye la ms antigua a la que no se haya hecho referencia Segunda oportunidad: Si R a 1 se pone a 0 y se pone al final de la lista

Se sustituye la que lleve ms tiempo sin usarse


Probablemente no se use en las prximas instrucciones

Implementacin:
Lista de todas las pginas en memoria
Al principio: la usada ms recientemente Al final: la que lleve ms tiempo sin usarse Se actualiza con cada referencia a memoria. Se busca la pgina y se lleva al principio

Es costosa

Contador de 64 bits
Se incrementa despus de cada instruccin

Asociado a cada pgina:


un campo donde poder guardar el contador cada vez que se accede a la pgina se actualiza al contador

Con el fallo de pgina


Se examinan los contadores Se sustituye la pgina con un contador menor

N marcos de pgina Matriz de NxN a 0


Cada vez que se accede al marco K
fila K a 1; columna k a 0

Lleva ms tiempo sin utilizarse la pgina correspondiente a la fila de menor valor binario. Para: 0 1 2 3 2 1 0 3 2 3
1 2 3 2

0 0 0 0

1 0 0 0

1 0 0 0

1 0 0 0

0 1 0 0

0 0 0 0

1 1 0 0

1 1 0 0

0 1 1 0

0 0 1 0

0 0 0 0

1 1 1 0

0 1 1 1

0 0 1 1

0 0 0 1

0 0 0 0

0 1 1 1

0 0 1 1

0 0 0 0

0 0 1 0

Contador software asociado a cada pgina

Se sustituye la que tenga el contador ms bajo Problema: nunca olvida

con valor inicial 0 Con cada interrupcin de reloj se suma al contador el bit R lleva la cuenta del n de pulsos en los que se ha hecho referencia

Puede ser que al principio de un programa se utilicen algunas pginas muy frecuentemente y luego ya no se utilicen.

Modificacin para simular LRU


Antes de sumar R, los contadores se desplazan a la derecha El bit R se suma al bit ms a la izquierda Se sustituye la pgina con contador ms pequeo

Bit R 1 0 0 1

Contador 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Entre envejecimiento y LRU

si 0 0 1 0 0 0 0 0 y 0 0 1 0 1 0 0 0 0

Ya no es NFU

Como son contadores finitos, no es capaz de distinguir entre una pgina que se referenci hace 9 pulsos o una que hace 300 si 0 0 1 0 0 1 1 1 y 0 0 1 1 0 0 0 0

en LRU cualquiera de ellas, la que se referenciara antes en el pulso 3

Se sustituye la primera, pero la 2 es accedida menos frecuentemente

Conjunto operativo Polticas de asignacin global frente a local Tamao de pgina Aspectos de implementacin
Instrucciones reiniciables Inmovilizacin de pginas en memoria Pginas compartidas Demonios de paginacin

Estrategia de paginacin por peticin


Se arrancan los procesos sin ninguna pgina en memoria Cuando se inicia, se produce un fallo de pgina Transcurrido cierto tiempo, el proceso tiene en memoria todas las pginas que le hace falta

Mtodo del conjunto operativo


Vecindad de referencias:
Conjunto operativo Hiperpaginacin:
en una fase de la ejecucin de un programa, slo se hace referencia a un conjunto pequeo de sus pginas Si se produce un fallo de pgina cada pocas instrucciones

Prepaginacin: carga de pginas antes de empezar El S.O. se encarga de que el conjunto operativo quepa en memoria reduciendo el ndice de multiprogramacin si hace falta El S.O. lleva la cuenta de los conjuntos operativos

Local

Global

Se busca la pgina a ser sustituida entre las del proceso Se asigna una cantidad fija de memoria Si el conjunto operativo disminuye, se desperdicia memoria
Se busca la pgina a ser sustituida entre todas Se debe decidir cuanto asignar a cada proceso
Conjunto operativo Asignacin por frecuencia de fallos (PFF)
Se intenta mantener entre unos lmites mnimo y mximo

Si grandes
Se desperdicia en promedio la mitad de una pgina por proceso, por fragmentacin interna Ms espacio se desperdicia Ms porcin de programa en memoria sin utilizar

Si pequeas
Tablas de pginas ms grandes Se tarda prcticamente lo mismo en transferir

Cuando se accede a una pgina que no est en memoria, se genera un trap El S.O. carga esta pgina y la instruccin debe comenzar de nuevo Se debe saber dnde empieza la instruccin Puede haber problemas con el autoincremento y autodecremento

La E/S puede plantear problemas Ej: un proceso pide E/S del terminal

Solucin

Se queda bloqueado esperando Se produce fallo de pgina Se puede sustituir la pgina que contiene el buffer de E/S Los datos se leen o escriben en la pgina recin cargada Inmovilizar las pginas en memoria Realizar E/S en buffers del ncleo

Si hay ms de un usuario ejecutando el mismo programa es ms eficiente compartir pginas No todas las pginas se pueden compartir Si A se saca de memoria, no es eficiente expulsar todas las pginas si las est compartiendo con B, ya que se produciran muchos fallos de pginas Igual si A termina, sera fatal para B eliminar todas las pginas de A del disco

Proceso secundario Se despierta de forma peridica


Mira el estado de la memoria Asegura que haya un n mnimo de marcos de pgina libres Si hay menos, selecciona algunas pginas y las lleva a disco si han sido modificadas

Mejora el tiempo en cargar una nueva pgina El contenido de las pginas no se elimina

16 procesos Tabla de segmentos Pginas de 4K 0 1024 pginas por proceso Proceso 0 espacio de direcciones 63 virtuales del proceso de 4M Espacio de direcciones virtuales total de 64 M Entrada en la tabla de segmentos Longitud ProteccinP. A tabla de Pginas 64 segmentos por proceso 16 pginas por segmento 64 K por segmento 0
15

Direccin virtual de 22 bits (4 M) Registro especial de 4 bits indicando el proceso


6 4 12

Proceso N de segmento N de pgina Posicin dentro de la pgina Para cambiar de proceso se cambia el registro

Se puede compartir un segmento haciendo apuntar a la misma tabla de pginas

Potrebbero piacerti anche