Está en la página 1de 25

Sistemas Operativos

Introducción a los Sistemas Operativos


Memoria Virtual
Memoria Virtual
• Memoria Virtual es la técnica que permite que un
programa (y sus datos) no necesite estar
completo en memoria para ejecutarse.
• Esto es necesario por dos motivos:
– Los programas suelen ser muy grandes y no caben
enteros en memoria física.
– En un sistema multiusuario/multitarea, varios
programas comparten la misma CPU: es necesario que
todos ellos esten en memoria física al mismo tiempo, y
obviamente, no caben.
Memoria Virtual
• Solución:
– Todos los programas que están ejecutándose en un
momento determinado del tiempo, están en disco. Sólo
sus partes actualmente accedidas están en memoria
principal.
– La memoria principal actúa como una caché del disco
donde están los programas completos que se están
ejecutando.
– La técnica de memoria virtual ofrece además, un
mecanismo de protección entre programas: asegura que
ningún programa lee/escribe los datos de otro programa
Espacios de Direcciones
• La memoria física tiene un espacio de direcciones igual a
2n bytes, siendo n el número de bits (señales) que el
procesador tiene para direccionar memoria. La memoria
física (DRAM) se accede con direcciones físicas.
• La memoria virtual tiene un espacio de direcciones igual a
2m, siendo m la cantidad de bits que los programas utilizan
para especificar una dirección (de una instrucción o de un
dato). Estas direcciones se llaman direcciones virtuales.

Memoria Memoria
virtual física
dirección dirección
virtual física (DRAM)
Espacios de Direcciones
• Cuando un programa es compilado, sus direcciones son
direcciones del espacio virtual.
• Cuando un programa es ejecutado, las direcciones con las
que se accede a memoria son direcciones del espacio
físico.
• En el medio, debe haber un proceso que traduzca una
dirección virtual a una dirección física.
• El proceso de traducción permite que un programa cambie
muchas veces su mapeo entre dirección virtual y dirección
física durante su ejecución.
• La técnica de memoria virtual la implementa:
– El sistema operativo con soporte de hardware
– La traducción de direcciones virtuales a físicas, la realiza el
hardware (en casi todos los procesadores actuales)
Memoria Virtual

V irtu a l a d d r e s s e s P h y s ic a l a d d re s s e s

A d d re s s tra n s la tio n
• La unidad (bloque)
de transferencia se
llama página.
• Fallo: Fallo de
página (Page Fault)
• El mapeo se realiza
entre las páginas
de memoria virtual
D is k a d d r e s s e s y las páginas de
memoria física.
Traducción
• Una dirección de memoria virtual se compone de:
– Número de página
– Offset dentro de la página
• La función de traducción asigna un número de página
física a la página virtual.
• La traducción se realiza cada vez que se accede a un
dato.
Virtual address
31 30 29 28 27 15 14 13 12 11 10 9 8 3210

Virtual page number Page offset

Translation

29 28 27 15 14 13 12 11 10 9 8 3210

Physical page number Page offset

Physical address
Páginas
• Cuando la función de traducción encuentra que
no hay mapeo para una dirección virtualfallo
de página
• El fallo de página tiene una penalización
enorme: acceder al disco cuesta millones de
ciclos de proceso
• Los sistemas de memoria virtual se diseñan de
forma de reducir esta penalización.
Páginas
– Las páginas deben ser lo suficientemente grandes para
amortizar el tiempo de acceso: de 4KB, 16KB, 32KB y 64 KB.
– Se usa un esquema totalmente asociativo para colocar las
páginas en memoria.
– El software gestiona los fallos de página: el hardware avisa
que hay fallo, el SO toma el control, transfiere la página y
utiliza algún algoritmo para decidir a quien reemplaza.
– Cuando se escribe en memoria principal, no se actualiza el
disco: se utiliza la política de escritura diferida. El disco se
actualiza cuando la página se elimina de memoria.
Como ubicar y encontrar una página

• SO gestiona la localización de las páginas:


– Algoritmos sofisticados que llevan la cuenta de las
páginas que no se necesitarán por mucho
tiempo totalmente asociativo
– Dificultad: localizar la página. Una búsqueda total
es impracticable.
– Se utiliza una Tabla de Páginas.
Tablas de Página
• Tabla de Páginas
Virtual page
number reside en Memoria
Page table

Valid
Physical page or
disk address
Physical memory
• Se indexa con el
1
número de página
1
1 virtual.
• Contiene el número
1
0
1
1
0
de página física o bien
1
1
Disk storage una indicación de que
0
1
no está.
• Cada programa tiene
su propia Tabla de
• Un registro del procesador apunta
Páginas.
a la dirección en memoria de la
Tabla de Páginas
Tabla de Páginas
Page table register
• Tamaño de página: 212 bytes
Virtual address
(4K bytes)
31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0 • Espacio virtual de
Virtual page number Page offset direcciones: 232 bytes
20 12 • Espacio físico de
Valid Physical page number direcciones: 230 bytes
• Tamaño de la Tabla de
Páginas: 220 entradas, de 19
bits.
Page table
• O sea: un millón de entradas
de 32 bits (redondeando
para hacer mas fácil el
If 0 then page is not
18
acceso)
present in memory

29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Physical page number Page offset

Physical address
Programas y Procesos
• La Tabla de Páginas, junto con el PC y los registros
representan el estado del programa que se está
ejecutando.
• La Tabla de Páginas define el estado de la
memoria del programa.
• Si se quiere compartir la CPU, se deberá salvar el
estado del programa.
• El programa y su estado se denomina proceso.
• Un proceso está activo si está en posesión de la
CPU : de lo contrario está inactivo.
• El S.O es el que pasa los procesos del estado
inactivo a activo y viceversa
¿Donde está la página en disco?
Virtual page • Un fallo de página provoca
una excepción que le da
number
Page table
Physical memory
Physical page or
Valid disk address
control al S.O
1
1
• Este debe localizar el lugar
1
1
del disco donde se encuentra
0
1
la página que falló.
1
0 • Utiliza una estructura similar
1
1
Disk storage
a la Tabla de Páginas, o bien
0
1 la misma Tabla de Páginas
para almacenar la
ubicaciónde la página en
disco.
• El S.O también tiene una tabla por proceso
donde guarda información de sus páginas
mapeadas.
• Reemplaza, utilizando LRU.
Problema
• Calcular el tamaño de la Tabla de Páginas
necesaria para soportar un sistema con páginas
de 4KB, 4 bytes por entrada en la TP y direcciones
virtuales de 32 bits.
• Respuesta: 4MB!!!!!!!!!!

• Es decir: se necesita en memoria por cada


programa que está corriendo una tabla de 4MB
• En una máquina con varios cientos de programas
activos ............toda la memoria de la máquina
estaría ocupada por las Tablas de Páginas!
Soluciones
1. Limitar el tamaño de la TP por proceso, de manera que esta crezca
solo si el proceso lo necesita. Registro Límite.
2. Idem que el anterior pero permitiendo que las direcciones crezcan
en los dos sentidos: de abajo hacia arriba (heap) y de arriba hacia
abajo (pila). De esta forma las direcciones virtuales pertenecen a
dos segmentos: el bit de mayor peso de la dirección identifica a
cual. Cada segmento tiene una Tabla de Páginas diferente. MIPS
3. Aplicar una función de hashing a la dirección virtual de forma que
el tamaño de la Tabla de Páginas escale al tamaño de la memoria
física y no al de la memoria virtual. Tabla de Páginas Invertida.
4. Utilizar múltiples niveles de tablas de páginas. Un directorio que
contiene direcciones de Tablas de páginas y las Tablas de Páginas
que están en el segundo nivel. Tablas Jerárquicas. INTEL
5. Paginar la Tabla de Páginas: es decir, permitir que las Tablas de
Páginas residan en el espacio virtual.
Escrituras
• Escritura diferida: además solo se escribe si la
página fue modificada. Bit de sucio. (dirty).
• El bit de dirty se activa cuando se realiza una
escritura en la página
Traducción de direcciones
• Si la Tabla está en MP: un acceso a un dato requiere dos
accesos (al menos!):
– Uno para acceder a la dirección
– Otro para acceder al dato
• Se puede acelerar basándose en el principio de
localidad de las referencia:
– Si una página fue recientemente referenciada es probable
que lo vuelva a ser pronto porque los datos tienen localidad
espacial y temporal
• Solución: poner una pequeña caché de las últimas
referencias traducidas a direcciones físicas: TLB
• Translation LookAside Buffer
TLB: caché de direcciones
• La TLB es una pequeña caché, por
Virtual page
number Valid Tag
TLB
Physical page lo tanto cada entrada contiene un
address
tag: el número de página virtual.
1
1 Physical memory
• Cuando hay un fallo en la TLB,
1
1
puede o no haber fallo de página.
0 • Los fallos en la TLB los sirve el
1
hardware por lo general.

Page table
Physical page La TLB contiene también los bits de
Valid or disk address
referencia y sucio. Si hay
1
1
reemplazo, se copian en memoria.
1 Disk storage (escritura diferida)
1
0
1
1
0
1
1
0
1
TLB
• Algunos valores normales para la TLB:
– Tamaño: 32 a 4096 entradas
– Bloque: 1 o 2 entradas de Tabla de Página de 4-8 bytes
cada una.
– Tiempo de acierto: 0,5-1 ciclo
– Penalización por fallo: 10-30 ciclos
– Tasa de fallos: 0,01%-1%
– Asociatividad:
• totalmente asociativa difícil el reemplazo. Pocas entradas.
• Poca asociatividad (2,4)
Integración: memoria virtual, cachés y TLB’s

Caché TLB M.Virtual Posible?


acierto acierto acierto SI. Situación Ideal!
fallo acierto acierto SI. Si hay hit en TLB, no se comprueba la Tabla de Páginas
acierto fallo acierto SI. La entrada se busca de la TP y luego se accede a la caché
fallo fallo acierto SI. La entrada se busca de la TP y luego se falla en la caché
fallo fallo fallo SI. Fallo de TLB y Fallo de Página: despues de reintentar la caché tiene que fallar
fallo acierto fallo NO. No puede haber una traducción para una página que no está en memoria
acierto acierto fallo NO. No puede haber una traducción ni dato para una página que no está en memoria
acierto fallo fallo NO. No puede haber datos en caché que no estén en memoria
Integración
• Sistemas con direcciones físicas traducidas ANTES de acceder a la
caché:
– Cachés indexadas físicamente y etiquetadas físicamente
– El tiempo necesario para acceder al dato es la suma de los
tiempos de acceso a la TLB y a la Caché.
• Sistemas con direcciones físicas traducidas DESPUES de acceder a
la caché:
– Cachés indexadas virtualmente y etiquetadas virtualmente
– Se accede en paralelo a la TLB y a la Caché
– Solo en caso de miss en caché se usa la dirección física
obtenida en la TLB
– Problema: una misma dirección física puede tener varias
direcciones virtuales estar contenida en varias líneas de la
caché. (páginas compartidas entre programas)
Integración

• Sistemas mixtos:
– Las cachés se indexan con la dirección virtual (se
pueden usar los bits de desplazamiento de página
que no se cambian en la traducción), pero se
comparan con la dirección física.
– La caché y la TLB se acceden en paralelo. La TLB
suministra la etiqueta para los comparadores
Protección
• Es una de las funciones del sistema de memoria
virtual: permitir la compartición de la memoria
única entre múltiples procesos: protección entre
procesos y con el SO.
• En la TLB, el bit de escritura protege contra
accesos de escritura no deseados.
• Lecturas:
– El SO debe garantizar que las páginas virtuales de dos
procesos independientes se asignen a páginas físicas
disjuntas.
– También debe garantizar que un proceso no pueda
cambiar su Tabla de Páginas, sin embargo el SO si debe
poder cambiar las Tablas de Páginas.
Protección
• El hardware debe proporcionar:
– Al menos dos modos de ejecución: proceso usuario y
proceso kernel (supervisor, ejecutivo)
– Instrucciones que solo puedan ser usadas por el
proceso kernel (para actualizar las estructuras de
datos)
– Mecanismos para pasar de un modo a otro
• De usario a kernel excepciones, llamadas al sistema (syscall)
• De kernel a usuarioretorno de excepción: restaura el estado
del proceso.

También podría gustarte