Vous êtes sur la page 1sur 61

Memoria Virtual

Prof. Giovana Garrido

Respecto a la Memoria Principal


GENERALIDADES:
Memoria Ram: matriz grande de palabras o bytes.
Cada palabra tiene su propia direccin.
Permite acceso rpido, compartido por la CPU y los
perifricos.
nico dispositivo de almacenamiento que la CPU puede
direccionar y acceder directamente.
El programa debe cargarse en Mem. Ram para poder
ejecutarse.
Almacenamiento voltil.

TAREAS DEL S.O.


Seguimiento de espacio y
direcciones de memoria
utilizadas y por quin.
Decidir qu procesos se
cargarn en la memoria.
Asignar y liberar espacio de
memoria.

Memoria virtual

Es un mtodo mediante el cual, un sistema operativo


simula tener mas memoria principal que la que existe
fsicamente. Para implementar la memoria virtual se
utiliza un medio de almacenamiento secundario de alta
velocidad de acceso, generalmente en disco duro de la
maquina.
Mtodos:

Tcnicas de paginacin.
Tcnicas de segmentacin.
Una combinacin de ambas tcnicas.

Se utiliza la paginacin como mtodo de administracin


de memoria bsica y algn mecanismo de intercambio.

Memoria virtual

En las tablas de paginas se agrega un campo mas a cada


entrada: el bit valido/invalido (p).

En los procesadores 80386 y posteriores, que indica si la


pgina a la que se est haciendo referencia en un
momento dado se encuentra en la memoria principal
(vlido) o en el disco duro (invlido). Cuando el sistema
operativo haga referencia a una pgina invlida, deber ir
al disco duro y cargarla a memoria principal para
continuar el procesamiento.

Fundamentos

El cdigo y los datos de los procesos en ejecucin han de


estar en memoria principal

Es imprescindible?...

Limitando el tamao de los programas


Empleo de mecanismos de carga dinmica

Un proceso no utiliza todo su cdigo/datos (al mismo tiempo)


Podemos tener en memoria nicamente aquello que sea
imprescindible
El resto puede permanecer en el rea de intercambio

Los programas pueden no estar completamente en memoria


La memoria virtual supone una separacin entre memoria
lgica y fsica

El proceso ve un espacio de direcciones virtual


Este espacio es tan grande como desee

Esquema de la memoria virtual

Espacio de direcciones virtual

Soporte hardware
Como sabemos si una pagina esta en memoria o en disco?
Empleamos el bit de validez de las paginas
Valido => pagina residente en memoria
Invalido...
Pagina invalida
Pagina en disco
En ambos casos => interrupcin hardware de fallo de
pagina

Tratamiento de fallo de pagina


Comprobamos la direccin de la pagina en el PCB

1.

2.
3.
4.
5.

Valida => continuamos


Invalida =ZSIGSEGV

Buscamos un marco libre en memoria para alojar la


pagina
Cargamos la pagina desde el disco al marco
seleccionado
Marcamos la pagina como valida en la tabla de paginas
Reiniciamos la instruccin interrumpida

Espacio de direcciones virtual

Copia durante escritura: ejemplo

Ciclo de vida de pgina compartida y en


fichero

Ciclo de vida de pgina privada y en fichero

Ciclo de vida de pgina annima

Paginacin

Consiste en considerar el espacio de direcciones lgicas de


cada proceso como un conjunto de bloques de tamao
consistente llamados paginas. Cada direccin lgica manejada
para un proceso estar conformada por un par de valores
[pagina: desplazamiento].

Implementacin de mecanismos de
paginacin

La tabla de paginas se implementa completamente en


hardware (ventaja: se obtiene una alta velocidad de
acceso a memoria. Desventaja: resulta problemtica
cuando la tabla de pginas debe ser grande).

Implementar la tabla de pginas en la memoria principal


(ventaja: la tabla de paginas puede crecer segn se
requiera. Desventaja: la velocidad de acceder a memoria
es relativamente baja, dado que cada referencia a
memoria involucra 2 accesos.

Paginacin

La memoria fsica se divide en marcos de igual tamao

La memoria de los procesos se divide en paginas del mismo


tamao que los marcos
El SO carga las paginas en marcos no necesariamente contiguos

El SO mantiene una tabla de marcos

Emplea la tabla de marcos para identificar marcos libres

Fragmentacin externa... no hay


Fragmentacin interna...

Promedio de media pagina desperdiciada


Si reducimos el tamao de pagina, reducimos la fragmentacin...
Pero necesitamos mas espacio para la meta informacin de paginas!

Paginacin

Las direcciones lgicas se dividen en

Numero de pagina (p)


Desplazamiento de pagina (d)

Los nmeros de pagina (p) representan ndices en una


tabla de paginas

Sus entradas contienen la direccin fsica de la pagina


El hardware traduce la direccin lgica en fsica consultndola

Paginacin
dir. lgica: n

Tabla

pgina + desplazamiento

de pginas (TP):

Relaciona cada pgina con el marco que la contiene

Nmero de pgina

Desplazamiento

0 1 ................ 15 16 17 .............................................................................. 63

Nmero de pgina

0
...
N
...

...
...
Nmero Marco Pgina
...

Direccionamiento

Tamao de pgina potencia de 2


Direccionamiento ms sencillo
Fcil Traduccin

Direccin lgica y relativa (respecto al inicio ) coinciden

10

Traduccin hardware

Modelo de traduccin

11

Ejemplo

Tabla de paginas

Se almacena en la memoria principal


Su ubicacin se determina por el registro base de la tabla
de paginas (PTBR)
En los cambios de contexto...

Se cambia el valor de PTBR para que emplee la tabla de paginas


del proceso en ejecucin
As cambiamos rpidamente el espacio de direcciones de un
proceso a otro

12

Tabla de pginas (TLB)

Problema: la tabla de paginas esta en memoria...

Dos accesos a memoria por cada operacin sobre la misma

Solution: Translation Look-aside Buer (TLB)

Memoria asociativa de consulta de traduccin


Almacena el resultado de las ultimas traducciones
Si acierta (se encuentra la pagina) se obtiene el marco fsico
Si falla (no se encuentra la pagina) se recurre a la tabla de
paginas

TLB: esquema

13

TLB: cambios de contexto

Si se produce un cambio de contexto...

Las entradas de la TLB contienen traducciones de otros


procesos
Si las usaremos sin mas, tendremos traducciones validas pero
incorrectas

Soluciones

Borrar la TLB en cada cambio de contexto


TLB con identificadores de espacio de direcciones (ASID)

Proteccin de memoria
Las entradas de la tabla de paginas incluyen bits de
proteccin
Lectura y escritura" o solo lectura": indica si se puede
escribir en la pagina
Ejecucin: indica si se puede ejecutar el cdigo de la
pagina
Valido o invalido": indica si la pagina se encuentra o no
en el espacio de direcciones del proceso

14

Validez de paginas

Lmite de tabla de paginas

Problema

Los procesos rara vez emplean todo el rango de direcciones


disponible
No es til crear tablas de pagina con todas las traducciones
posibles (validas e invalidas)

Solucin

Tener un registro de longitud de tabla de paginas (PTLR)


Indica el tamao de la tabla de paginas
Las paginas que no estn en la tabla, se consideran invalidas

15

Estructura de la tabla de paginas

Las tablas de paginas pueden ser realmente grandes


Ej: direcciones de 32 bits, paginas de 4KB, 4 bytes por
entrada
232=212 = 1048576 marcos
1048576 marcos 4 bytes = 4MB
Hay que dividir la tabla de paginas

Paginacin jerrquica

Paginamos la tabla de paginas obteniendo dos niveles

p1 indexa la tabla de paginas externa; el valor resultante indica


la pagina donde se encuentra la parte de la tabla de paginas
interna que buscamos
p2 es un desplazamiento en la pagina indicada por la tabla de
paginas externa; su valor es un ndice relativo a esa regin de
la tabla de paginas interna que indica el marco de pagina final
d indica el desplazamiento respecto al marco de pagina final

16

Paginacin jerrquica: esquema

Paginacin jerrquica: traduccin

17

Tablas de paginas invertidas

Alternativa a la paginacin multinivel


Una nica tabla de paginas

Cada entrada almacena...

Una entrada por cada marco de pagina


El ndice indica la direccin del marco
ASID
Numero de pagina
Desplazamiento

La traduccin se realiza mediante bsqueda


Problema

Rendimiento
Memoria compartida...

Tablas de paginas invertidas: traduccin

18

Segmentacin

Un mtodo de asignacin de memoria es la manera mediante la cual


el Sistema Operativo lleva el control de la memoria tratando de que
sea lo ms eficiente posible. Los mtodos de asignacin ms
comunes son:

Segmentacin: Este mtodo consiste en la asignacin de bloques de


memoria de tamao variable, llamados segmentos. El tamao de
cada segmento ser el requerido segn la peticin, por ejemplo el
tamao del proceso a cargar.

Visin multidimensional de la memoria


La memoria se divide en segmentos de tamao variable
Cada uno tiene una secuencia lineal de direcciones
Direcciones lgicas en forma de tuplas
<num segmento, desplazamiento>

Mtodos de asignacin de memoria

El tamao mximo para un segmento estar determinado


por la capacidad de direccionamiento del hardware de la
computadora, esto es, de cuantos bits se dispone para
almacenar una direccin.

El acceso a cada elemento individual en la memoria se


hace mediante una direccin de memoria que se integra
por dos elementos: una direccin de segmento y una de
desplazamiento.

19

Segmentacin

La combinacin (suma) de la direccin de segmento y la de


desplazamiento generan la direccin de memoria absoluta a
acceder.

Dado que en cada proceso se manejan direcciones lgicas, el


sistema operativo debe obtener una direccin lgica. El
sistema operativo debe tambin asegurarse de que cada
direccin lgica est dentro del rango de direcciones
empleado por el proceso.

Direccionamiento
La memoria real es unidimensional
Necesitamos traducir las tuplas lgicas a direcciones
fsicas
Usamos una tabla de segmentos

Una entrada por cada segmento


El ndice indica el numero de segmento

Cada entrada contiene

Direccin base del segmento


Tamao del segmento
Bits de proteccin

20

Segmentacin: traduccin

Segmentacion: ejemplo

21

Paginacin: Esquema de traduccin


direccin
lgica
CPU

direccin
fsica
d

Memoria

Pgina
(virtual)

desplazamiento
Tabla de pginas

Pgina
(fsica)
-marco-

Paginacin: Fragmentacin interna


T. Pginas Pr. 1
Pgina 0

Marco 2

Pgina 1

Marco N
..............

Pgina M

Marco 3

T. Pginas Pr. 2
Pgina 0
Pgina 1

Marco 4
Marco 0
..............

Pgina P

Memoria
Pg. 1 Pr. 2

Marco 0

Pg. P Pr. 2

Marco 1

Pg. 0 Pr. 1

Marco 2

Pg. M Pr. 1

Marco 3

Pg. 0 Pr. 2

Marco 4

............
Pg. 1 Pr. 1

Marco N

Marco 1

memoria asignada > memoria requerida


Puede desperdiciarse parte de un marco asignado.
Espacio desperdiciado medio (por regin de proceso) es de
pgina.

22

Ejemplo de comparticin

ed 1

0
3

ed 2

4
6

ed 3

datos 1

datos 3

ed 1

ed 2

1
datos 1
proceso

tabla de pginas
para P1

ed 1

3
ed 2

4
6

ed 3

7
datos 2
ed 1

proceso
3

ed 2

tabla de pginas
para P 2
2

ed 3

datos 2

4
6

ed 3

2
datos 3
proceso

9
10

tabla de pginas
para P3
3

Paginacin: Tamao de pgina


Condicionado por diversos factores contrapuestos:
Potencia de 2 y mltiplo del tamao del bloque de disco
Mejor pequeo por:

Mejor grande por:

Menor fragmentacin
Se ajusta mejor al conjunto de trabajo
Tablas ms pequeas
Mejor rendimiento del dispositivo de E/S

Compromiso (entre 2K y 16K)


Restricciones hardware (MMU).

23

El tamao de pgina viene definido por el hardware y suele ser una potencia
de 2 que vara entre 512 y 16M Ej simplificado: Direccionamiento de un
espacio virtual de 64K, distribuido en 16 pginas de 4K:
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0

pgina
virtual

pgina
fsica

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

010
001
110
000
100
011
000
000
000
101
000
111
000
000
000
000

bit presente/ausente

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

Desplazamiento
(12 bits)

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

Ejemplo de Paginacin

Direcciones virtuales de 16
bits
Espacio de direcciones virtual
de 64KB
32KB de memoria fsica
Pginas de 4KB

16 pginas virtuales
8 marcos de pgina

24

Implantacin de mecanismos de
memoria virtual
Existen 2 mtodos para cargar programas en memoria:
Demanda de pgina: consiste en iniciar la ejecucin de
los procesos sin pginas cargadas, estas se irn cargando
conforme el proceso las demande.
Prepaginacin: consiste en que el sistema operativo
predice cuales pginas se ocuparn durante la ejecucin
de un proceso.

Paginacin bajo demanda

Cargamos las paginas en memoria cuando sean necesarias


Empleamos un intercambiador (paginador) perezoso

Ya no intercambiamos la memoria completa de los procesos


En su lugar, intercambiamos solo paginas

Reducimos...

Uso de memoria
Uso de E/S
Tiempo de intercambio

25

Paginacin por demanda


Segmentacin

pura no adecuada para memoria virtual


tamao de segmentos variable
Paginacin y segmentacin paginada s lo son:

Bloque transferido Pgina


M. virtual + Paginacin Paginacin por demanda

Estrategia

de implementacin: Uso del bit de validez


Pgina no residente se marca como no vlida
En acceso: Excepcin de fallo de pgina

S.O. trae la pgina correspondiente de mem. secundaria


S.O. debe diferenciar entre pg. no residente y pg. invlida

Prepaginacin: Traer

pginas por anticipado (no por demanda)

En fallo de pgina se traen adems otras pginas que se considera que


necesitar el proceso
Beneficiosa dependiendo de si hay acierto en la prediccin

Rendimiento en paginacin bajo demanda


El rendimiento del sistema se ve fuertemente influenciado
por
Algoritmo de sustitucin de paginas => Como
seleccionamos las paginas a sustituir?
Algoritmo de asignacin de marcos => Como repartimos
los marcos libres?

26

Fallo de pgina

Problema: espacio de direcciones virtual ms grande que la


memoria fsica
Bit presente/ausente ) controlar qu pginas estn
presentes en memoria
Qu sucede si no hay asociacin pgina/marco? ) =>
Fallo de pgina
1. La MMU detecta que la pgina no tiene correspondencia
2. La MMU provoca un fallo de pgina (interrupcin)
3. S.O. escoge un marco que no se est usando mucho (si es
necesario vuelve a escribir su contenido en disco)
4. Trae la nueva pgina a ese marco
5. Modifica la tabla de pginas
6. Reinicia la instruccin

Fallo de pgina

27

Tratamiento del fallo de pgina


Tratamiento

reg.)

Si direccin invlida Aborta proceso o le manda seal


Si no hay ningn marco libre (consulta T. marcos)
Seleccin de vctima (Alg. de reemplazo): pg P marco M

Marca P como invlida

Si P modificada (bit Mod de P activo)

de excepcin (direccin de fallo disponible en

Inicia escritura P en mem. secundaria

Hay marco libre (se ha liberado o lo haba previamente):


Inicia lectura de pgina en marco M
Marca entrada de pgina vlida referenciando a M
Pone M como ocupado en T. marcos (si no lo estaba)

Fallo

de pgina puede implicar dos operaciones en disco

Estructuras Hardware
Dado que ante un fallo de pgina el Hardware simplemente produce un
error (trap), bastar simplemente con aadir dos bits en la tabla de
pginas.
El bit p que indica si la pgina referenciada est o no cargada en
memoria principal (0 no cargada, 1 si).
El bit m que indica si la pgina cargada ha sido o no modificada, y por
tanto debe salvarse en caso de ser seleccionada para reemplazo ante un
fallo de pgina (0 no modificada, 1 si).
De esta forma la entrada en la Tabla de Pginas queda:

P M C Marco (F)

28

Estructuras Hardware
Trap (SO debe
reemplazar)

Dir Lgica
No

P?

STPtr

C B L

Si

<

C P M F

Dir. Fsica

No
Segmentation
Error

Tablas de Pginas

Son tablas que contienen (para cada proceso) el nmero de marco que
corresponde a cada pgina virtual del proceso.

Establece la correspondencia entre direcciones virtuales y fsicas (entre las


pginas virtuales y los marcos de pgina):

Para un funcionamiento ptimo el tamao de la pgina y el marco debe ser potencia


de 2
La direccin virtual se divide en nmero de pgina virtual y desplazamiento

El nmero de pgina virtual se usa como ndice para consultar la tabla de pginas
La entrada correspondiente de la tabla de pginas indica el nmero de marco de
pgina (si est en memoria)
El nmero de marco de pgina se anexa al desplazamiento para formar una direccin
fsica

29

Tablas de Pginas

4 bits de pgina y 12 bits de ajuste

Tablas de Pginas
- Estructura de una entrada de la Tabla de Procesos
Nmero de marco
bit presente (1) ausente (0)
proteccin (permisos) del marco (RWX)
bit Modificado (1) o no (0) -lo usa el intercambiador
para saber si debe copiar el marco a disco o nobit Referenciado (1) o no (0) -lo usa el manejador para
decidir qu entrada de la Tabla liberar- Se actualiza
peridicamente
Caching Desactivado/Activado (lo veremos en E/S)
No usado

30

Paginacin con TLBs (HW)

D
P

Procesador

M
Marco 5

TLB
A
X
V
C
P
T
S
R

Tabla de pginas
RPBTP

P
RLTP

Marco 1
Marco 2
Marco 3
Marco 4
Marco 5
Marco 6
Marco 7
Marco 8

Memoria

3
24
89
19
5
18
5
10

Paginacin de la TDP
Direccin virtual

D
Dir

Memoria

Directorio de pginas
RPBTP

Dir
RLTP

Tabla 1
Tabla 2
Tabla 3
Tabla 4
Tabla 5
Tabla 6
Tabla 7
Tabla 8

Tabla de pginas

Marco 1
Marco 2
Marco 3
Marco 4
Marco 5
Marco 6
Marco 7
Marco 8

31

Traduccin de direcciones lgicas a fsicas mediante tabla de pginas

Bsqueda directa y asociativa en entradas en la tabla de pginas

Fundamento de la memoria virtual

M. virtual: SO gestiona niveles de m. principal y m. secundaria

Aplicable por proximidad de referencias

Procesos slo usan parte de su mapa en intervalo de tiempo


Parte usada (cjto de trabajo) en m. principal (cjto residente)

Beneficios:

Sube por demanda; Baja por expulsin

Aumenta el grado de multiprogramacin


Permite ejecucin de programas que no quepan en mem. Ppal

No adecuada para sistemas de tiempo real


Basada en paginacin: Uso del bit de validez

Pgina no residente se marca como no vlida


En acceso: Excepcin de fallo de pgina

32

Polticas de administracin

Localizacin
Extraccin
Ubicacin:

Reemplazo
Actualizacin

Cualquiera, aunque puede usarse coloracin de pginas

Escritura diferida

Reparto de espacio

Poltica de localizacin: posibles ubicaciones

33

Poltica de extraccin: Fallo de pgina

Si direccin invlida Aborta proceso o le manda seal


Si no hay ningn marco libre (consulta T. marcos)

Reemplazo: pg P marco M P invlida

Hay marco libre (se ha liberado o lo haba previamente):

Inicia lectura de pgina en marco M


Conecta entrada de TP a M

Fallo de pgina en modo sistema no siempre es error:

Si mod escribir fichero o swap

Acceso a pgina de usuario no residente

Prepaginacin: trae pginas por anticipado (no por


demanda)

Creacin de tablas de pginas por demanda

34

Algoritmos de descarga (Reemplazo)

Se utiliza para determinar cuales pginas sern descargadas


hacia el disco duro cuando se quiera cargar nuevas paginas y
no haya memoria libre. Existen 3 algoritmos bsicos: FIFO,
LRU y Optimo.
Tipo de reemplazo: local o global
Tambin en cach de sistemas de ficheros
Objetivo: Minimizar la tasa de fallos de pgina.

Poca sobrecarga y MMU estndar

Reemplazo de paginas
Ante un fallo de pagina

Podemos encontrarnos sin marcos libres

Debemos sustituir alguna pagina


1. Seleccionamos una pagina a descargar y la movemos a
disco
2. Marcamos dicha pagina como invalida en las tablas de
pagina
3. Cargamos la pagina fallida en el marco liberado
4. Marcamos la pagina fallida como valida en las tablas de
paginas
5. Reiniciamos el proceso de usuario

35

Reemplazo de paginas: procedimiento

Algoritmos de Reemplazo FIFO

FIFO: Consiste en tener un contador de tiempo para cada


pagina para descargar las mas viejas.
Mantenemos el orden de carga de las paginas
Seleccionamos la pagina mas antigua para sustituir
Sencillo de implementar, pero el rendimiento...

La pagina mas antigua podr ser la mas frecuentemente


referenciada

Anmala de Belady => La tasa de fallos puede incrementarse


segn aumenta la cantidad de memoria

36

Algoritmos de Reemplazo optima de paginas

Algoritmo Optimo (MIN): Consiste en descargar la o las pginas


que no se necesitarn en el periodo de tiempo ms largo en el
futuro. Esta implementacin es imposible.

Se sustituye la pagina que tarde mas en volver a ser utilizada


Garantiza la tasa de fallos mas baja posible
No esta sujeto a la anmala de Belady
Problemas...

Es imposible saber cuanto tardara una pagina en ser referenciada


Se emplea como referencia para medir la calidad de los algoritmos

Reemplazo de paginas: optimizacin

La sustitucin implica dos transferencias de paginas

Una transferencia de descarga


Una transferencia de carga

Podemos evitarlo?

Si la pagina no ha sufrido modificacin y aun esta en disco?


Nuevo bit de control en la tabla de paginas: pagina modificada
(o sucia)
Pagina de solo lectura
Podemos obviar la descarga

37

Algoritmos de Reemplazo de paginas LRU

LRU (Least Recently Used): Consiste en descargar las


ltimas pginas usadas (se usa el pasado para predecir el
futuro). Lo utiliza Windows.

Se sustituye la pagina menos utilizada


Se trata de una estimacin de la sustitucin optima
No esta sujeta a la anmala de Belady (algoritmo de pila)
Problemas...

Como mantener un orden LRU?

Hiperpaginacin (Thrashing)

Tasa excesiva de fallos de pgina de proceso o de sistema


Con asignacin fija: Hiperpaginacin en proceso
Con asignacin variable: Hiperpaginacin en el sistema

38

Sobrepaginacion (thrashing)
Si un paginador global reduce mucho el numero de marcos de un
proceso...
Se alcanza el numero mnimo de marcos; proceso suspendido
Se queda con pocos marcos

Empieza a generar fallos de pagina = roba marcos


El resto de procesos pierden paginas = roban marcos
La CPU comienza a estar desocupada = aumenta el nivel de
multiprogramacin
Los nuevos procesos requieren marcos = roban marcos

Resultado

Se invierte mas tiempo en paginar que en procesamiento


Degradacion total del sistema

MEMORIA ASOCIATIVA/TLB
(translation lookaside buffer)
Solucin para acelerar el acceso a los marcos cuando las tablas
de procesos son muy grandes (bsqueda lenta) y/o estn
organizadas en niveles (requiere mltiples accesos a memoria)
Se basa en la observacin de que los procesos acceden
normalmente a un nmero pequeo de pginas (y
espordicamente al resto)
Solucin: dotar a los ordenadores con hardware (Memoria
Asociativa) para asociar algunas pginas de uso frecuente con
pginas fsicas sin necesidad de acceder a la tabla de pginas. El
tamao de la memoria asociativa suele ser de 8 a 32 entradas.
Proporcin de encuentros: Proporcin de accesos a la
Memoria Asociativa que son exitosos (la Pgina Virtual buscada
se encuentra en la Memoria)

39

MEMORIA ASOCIATIVA/TLB (translation


lookaside buffer)

Dispositivo hardware que traduce direcciones virtuales a


fsicas sin acceder a la tabla de pginas.
Est en el interior de la MMU
Consiste en un nmero pequeo de entradas (casi nunca ms
de 64)
Cada entrada contiene informacin sobre una pgina:

No de pgina
Bit de modificado
Bit de proteccin
No de marco de pgina
Bit de validez

Memoria asociativa/TLB

Funcionamiento:

Direccin virtual ) se comprueba, en paralelo, si su


nmero de pgina est presente en el TLB
Si est:

Si no est ) Fallo del TLB

Si no viola los bits de proteccin ) el nmero de marco se toma del


TLB
Si viola los bits de proteccin ) Fallo de proteccin
La MMU consulta la tabla de pginas
Desaloja una entrada del TLB
La sustituye por la nueva entrada

Qu pasa con el TLB en los cambio de contexto?

40

direccin
fsica

direccin
lgica

CPU

Vlido? Modificado?
(0,1)
(0,1)

Memoria

1 #pgina 0 proteccin #marco


encontrada

Memoria Asociativa

fallo

Tabla de pginas

Acciones del Manejador de Memoria:


(viene de abajo)
PV
presente

no

Fallo de
pgina

s
Vlido?

no

s
no

Extrae entrada
antigua

Busca en tabla
de Pginas

PV
presente

Permiso?

Introduce la nueva
PV en la memoria
asociativa

no

no

permiso

Fallo de
pgina

accede marco
s
Trampa al SO
por error
de acceso

Trampa al SO
por error
de acceso

Lee marco

Intercambio
desde disco

(sigue arriba)

41

Tablas de pginas multinivel

Fundamento

Tablas de pginas organizadas en M niveles:

Entrada de TP de nivel K apunta a TP de nivel K+1


Entrada de ltimo nivel apunta a marco de pgina

Direccin lgica especifica la entrada a usar en cada nivel:

Tablas de pginas muy grandes con muchas entradas nulas


Fragmentar tabla y acceder mediante tabla maestra

1 campo por nivel + desplazamiento

Si todas las entradas de una TP son invlidas

No se almacena esa TP e invlida entrada de TP superior

Esquema de traduccin con 2 niveles

42

Ventajas de Tablas de pginas multinivel

Si proceso usa una parte pequea de su espacio lgico

Ahorro en espacio para almacenar TPs

Ejemplo: Proceso que usa 12MB superiores y 4MB


inferiores

2 niveles, pg. 4K, dir. lgica 32 bits (10 bits/nivel), 4B/entrada

Ventajas adicionales:

Tamao: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)

Permite compartir TPs intermedias


Slo se requiere que est en memoria la TP de nivel superior

Facilita implementacin de superpginas

Entrada de primer nivel de superpgina apunta a m. fsica

Ventajas de Tablas de pginas multinivel

43

Tablas de pginas invertidas

En una arquitectura de 64 bits, las tablas de pginas


pueden ser enormes:

Con pginas de 4 KB ) => tablas de 2^52 entradas !!


Si pginas muy grandes ) => demasiada fragmentacin interna
Si cada entrada 8 bytes (64 bits) ) => 32 Petabytes para la
tabla de pginas !!
Tablas de pginas multinivel demasiado complejas por la gran
cantidad de niveles necesarios
Solucin: tabla de pginas invertida

Tablas de pginas invertidas

Caractersticas:

Una entrada por cada marco de pgina de la memoria fsica

Cada entrada indica qu proceso y qu pgina virtual de dicho


proceso estn en el marco correspondiente
Problema: la traduccin de direcciones virtuales a fsicas es
mucho ms difcil:

Con direcciones virtuales de 64 bits, 4KB/pgina y 512 MB de RAM,


slo se necesitan 131.072 entradas

Cada vez que un proceso n referencia a su pgina p, hay que


buscar una entrada (n, p) en toda la tabla invertida para averiguar el
marco

Solucin: TLB + tabla de dispersin

44

Tablas de pginas invertidas

Aspectos de diseo para los sistemas de


paginacin
Tamao de pginas:
Si son pequeas se evita la fragmentacin interna, pero
el tamao de la tabla crece, y con l
los tiempos de bsqueda al tener que buscar en tablas ms
grandes y por no optimizar la copia de pginas a/desde disco
y las necesidades de almacenamiento (cada proceso tiene una
tabla de proceso propia).
Ej: direccionamiento con 32 bits (memoria lgica de
232=4Gb),tamao de pgina: 4Kb (212)1 milln (232 /212) de
pginas. Tama de la tabla: 4(bytes) x 220 = 4Mb
En la actualidad se usan tamaos de pgina de 2-4 Kb
El tiempo de asociacin debe ser reducido.
Soluciones basadas completamente en hardware (utilizando registros)
son las ms rpidas, pero esto slo es vlido
si las tablas son pequeas

45

Aspectos de diseo para los sistemas de


paginacin

Gestin del conjunto de trabajo

Paginacin por demanda: las pginas slo se cargan


cuando se necesitan, y no por adelantado (paginacin pura)
Localidad de referencia: en cualquier fase de su
ejecucin, un proceso slo referencia a una fraccin
relativamente pequea de sus pginas
Proceso hiperpaginado: proceso que pasa ms tiempo
resolviendo fallos de pgina que ejecutando instrucciones
Conjunto de trabajo: conjunto de pginas que un
proceso ha usado en las ltimas N instrucciones o unidades
de tiempo
Prepaginacin o paginacin anticipada: la carga de
pginas antes de ser solicitadas

Aspectos de diseo para los sistemas de


paginacin

Gestin del conjunto de trabajo, continuacin:

Modelo de conjunto de trabajo ) establece que el


conjunto de trabajo de un proceso debe estar en memoria
antes de ejecutarlo: prepaginacin
Algoritmo de reemplazo de pginas del conjunto de
trabajo:

Para cada pgina hay (al menos) dos elementos de


informacin: el tiempo aproximado del ltimo acceso y el bit R
Cada tic de reloj se limpia el bit R
En un fallo de pgina, para cada pgina:

Si R=1, se actualiza el tiempo del ltimo acceso


Si R=0 y edad > => reemplazar (pero contina el recorrido)
Si R=0 y edad < => recordar el tiempo ms pequeo y seguir
Si no xito: la ms antigua con R=0; sino cualquiera con R=1

46

Aspectos de diseo para los sistemas de


paginacin

Polticas de asignacin local y global

Cmo repartir la memoria entre los procesos ejecutables ?


Local: se asigna un nmero de marcos fijo a cada
proceso
Global: se asignan, dinmicamente, los marcos de
pgina entre los distintos procesos ejecutables

Aspectos de diseo para los sistemas de


paginacin

Polticas de asignacin local y global

Los algoritmos locales son ms propensos a la hiperpaginacin y


pueden desperdiciar memoria
Los algoritmos globales funcionar mejor. Ahora bien cmo se decide
cuntos marcos se asignan a cada proceso?
Algoritmo de frecuencia de fallos de pgina ) cundo hay
que reducir o aumentar el no de marcos asignados a un proceso

Calcula la tasa de fallos de pgina de cada proceso


Trata de mantener la tasa de fallos de pgina dentro de unos lmites
razonables
Observacin: no dice nada sobre qu paginas sustituir

Otros aspectos:

Decidir el nmero mnimo de marcos a asignar a un proceso


Cmo realizar el reparto de marcos entre los procesos

47

Aspectos de diseo para los sistemas de


paginacin

Tamao de pgina

Pginas pequeas

Pginas grandes

Menos fragmentacin interna


Tablas de pginas ms grandes
Ms fragmentacin interna
Tablas de pginas ms pequeas

Factor a tener en cuenta: velocidad de lectura/escritura de disco


Tamaos tpicos: 4KB u 8KB

Aspectos de diseo para los sistemas de


paginacin

Comparticin de pginas

Compartir cdigo (ej.: varios usuarios ejecutan el mismo


programa):

Llevar control de pginas compartidas para saber qu hacer si un


proceso termina o una pgina se reemplaza

Compartir datos:

Como mecanismo de comunicacin entre procesos


Cuando slo se leen. Se pueden modificar tambin, pero entonces =>
mecanismo de copia en escritura (ej.: creacin de procesos con fork en
UNIX):

Pginas de datos se comparten en modo slo lectura


Si escritura => fallo de proteccin => S.O. hace copia de la pgina de
datos para el que escribe, activa permiso de copia y reinicia la instruccin

48

Aspectos de diseo para los sistemas de


paginacin

Polticas de lectura y escritura de pginas

Lectura (ya visto)

Por demanda: cuando se produce un fallo de pgina (paginacin por


demanda)
Por adelantado: en un fallo de pgina se leen varias pginas, incluida la
que produjo el fallo (prepaginacin o paginacin anticipada)

Escritura

Por demanda: cuando se expulsa una pgina que est modificada


Por anticipado: por ejemplo, cada X segundos (demonio de
paginacin)

Si, adems, se liberan pginas => Cach de pginas

Aspectos de diseo para los sistemas de


paginacin

Control de carga

Anclaje de marcos de memoria

A veces no es posible evitar la hiperpaginacin (todos los


procesos piden ms memoria y no se puede asignar a uno sin
perjudicar a otro)
Solucin: intercambio ) suspender procesos y liberar sus
pginas, pero sin dejar la CPU inactiva ) Hay que controlar el grado
de multiprogramacin
Cuando intervienen en una operacin de E/S por DMA que no ha
finalizado
A tener en cuenta, sobre todo, en algoritmos globales

Administracin del espacio de intercambio

Asignacin esttica por proceso, cuando ste se inicia


Asignacin dinmica (los procesos pueden crecer)

49

Poltica de reparto de espacio

Estrategia de asignacin fija (reemplazo local)

N marcos asignados a proceso (cjto residente) es constante


No se adapta a las distintas fases del programa
Comportamiento relativamente predecible
Arquitectura impone n mnimo

Estrategia de asignacin dinmica

N marcos vara segn evolucin de proceso(s)


Asignacin dinmica + reemplazo local

comportamiento relativamente predecible

Asignacin dinmica + reemplazo global

comportamiento difcilmente predecible

Polticas de control de carga

Estrategia del conjunto de trabajo

Pginas usadas por proceso en ltimas N referencias


Si conjunto de trabajo decrece se liberan marcos
Si conjunto de trabajo crece se asignan nuevos marcos

si no hay disponibles: suspender proceso(s)

Requiere MMU especfica

Estrategia basada en frecuencia de fallos de pgina (PFF)


Control de carga y reemplazo global

No control de hiperpaginacin
Algoritmo de control de carga emprico

Si n marcos frecuentemente debajo de umbral

50

Estrategia basada en frecuencia de fallos

Si tasa < inferior se liberan marcos aplicando reemplazo


Si tasa > lmite superior se asignan nuevos marcos

Si no marcos libres se suspende algn proceso

Memoria virtual con segmentacin


Segmentacin
Proporciona a un proceso varios espacios de direcciones
completamente independientes => Segmentos
Cada segmento:

Una sucesin lineal de direcciones, desde 0 hasta un mximo


Tiene una longitud distinta y variable
Puede crecer o disminuir independientemente
Puede tener una proteccin diferente (lectura, ejecucin,. . . )

Direcciones de dos dimensiones => Tabla de segmentos

Nmero del segmento


Direccin del segmento

51

Segmentacin: Esquema de traduccin


1.

La MMU toma la parte


asociada al nmero de
segmento y lo busca
en la TS.

2.

Se verifica si el
desplazamiento est
dentro de los lmites

3.

Indexa el byte dentro


de la memoria fsica.
Sumando el
desplazamiento base.

direccin lgica
s

d
tabla de segmentos

base

lmite

>

NO

3
+

memoria

SI

Excepcin

Facilita la proteccin y la comparticin de objetos =>


procedimientos, funciones, estructuras de datos, etc.) de forma
individual
Problema: Fragmentacin externa

segmentacin

52

Direccionamiento
Direccin lgica = N Segmento + desplazamiento
Traduccin de direcciones
Se realiza dinmicamente en cada referencia a memoria
Necesita un hardware especial que realiza la traduccin
N segmento direccin lgica ndice tabla segmentos
Direccin fsica = Direccin base de la entrada + desplazamiento de la
direccin lgica

Facilita la comparticin

Facilita la proteccin

Se comparten unidades lgicas, segmentos, permitiendo compartir datos,


programas, subrutinas, etc.
El uso compartido es uno de los argumentos ms importantes en favor de
la segmentacin
Cmo pueden dos o ms procesos compartir un segmento?

Se puede asociar a cada segmento uno o varios bits de proteccin ( basada


en los registros base y lmite)
Se pueden establecer distintos derechos de acceso (rwx) a cada mdulo del
proceso
Estos derechos suelen guardarse en la TDS

Facilita la ampliacin de memoria.

Si esta estructura se encuentra en un segmento especfico para ella,


basta con ampliar el tamao del segmento

53

Segmentacin (HW)
D
S

Procesador

Memoria

Error !!!

<

Tabla de segmentos
RPBTS

S
RLTS

Base 1
Base 2
Base 3
Base 4
Base 5
Base 6
Base 7
Base 8

Lmite 1
Lmite 2
Lmite 3
Lmite 4
Lmite 5
Lmite 6
Lmite 7
Lmite 8
Base 5

tabla de segmentos
s
lmite base
cpu

(s, d)
si
<

no
error de direccionamiento

memoria fsica

54

Segmentacin

Segmentacin paginada

Cada segmento se pagina internamente => ventajas de la


paginacin y de la segmentacin
Direccin formada por dos partes: segmento y direccin
dentro del segmento:

Segmento => entrada en la tabla de segmentos que nos da la


direccin de la tabla de pginas
Direccin dentro del segmento => dividida en 2 partes:

Nmero de pgina =>entrada de la tabla de pginas que da el marco


de pgina correspondiente
Desplazamiento dentro de la pgina

55

Segmentacin paginada

Ejemplos prcticos Algoritmos de reemplazo


de pginas

Algoritmo FIFO: Primero en entrar, primero en


salir

Reemplaza la pgina que entr hace ms tiempo en memoria


(la primera que entr)
Es muy malo, al no tener en cuenta el uso de las pginas

56

Ejemplos prcticos Algoritmos de reemplazo


de pginas

Algoritmo ptimo

Reemplaza la pgina que ms tiempo va a tardar en necesitarse


Irreal: el orden de las referencias a memoria no se uede
saber de antemano

Ejemplos prcticos Algoritmos de reemplazo


de pginas

Algoritmo LRU (Least Recently Used)

Buena aproximacin al algoritmo ptimo


Selecciona la pgina que no ha sido utilizada hace ms tiempo

57

Resumen

Paginacin
Elimina fragmentacin externa
Aprovecha eficientemente la memoria
Segmentacin
Visible al programador
Soporte para comparticin y proteccin
Segmentacin con paginacin
Combina las ventajas de ambas
Mtodo bsico

Divisin del espacio de direcciones del usuario en segmentos


Divisin de cada segmento en pginas

Direccin lgica

Desde el punto de vista del usuario

Desde el punto de vista de la mquina


N segmento | n pgina | desplazamiento

Nmero de segmento | desplazamiento

Estructuras de datos utilizadas para cada proceso


Una tabla de segmentos
Una tabla de pginas por segmento

Traduccin de
direcciones

58

Ejemplo de Segmentacin con Paginacin (MULTICS)


Cada programa dispone de una memoria virtual de hasta 218 segmentos, cada uno
de hasta 64K (218) palabras. Cada segmento es un espacio virtual independiente
que puede paginarse, con 64 (26) pginas de 1K (210)
Las direcciones fsicas son de 24 bits, con las pginas alineadas con fronteras de 64
bytes
Una direccin virtual en MULTICS sera

18
N segmento

6
N pgina

10
Ajuste

Direccin dentro
del segmento

Cada programa mantiene una tabla de segmentos, que a su vez reside en un


segmento que puede estar paginado. Cada entrada de la tabla se segmentos
tiene los siguientes campos.

18
Direccin de la
tabla de pginas
en la memoria fsica

9
111 3
Lngitud
de segmento
en pginas

Tamao de pgina:
0 = 1024 palabras
1 = 64 palabras
0 = segmento paginado
1 = segmento no paginado

Bits de proteccin

Bits diversos

59

Conversin de direcciones:
18
N segmento

6
N pgina

10
Ajuste

ajuste
palabra

N pgina

N segmento

#marco

Memoria

descriptor

Tabla de Segmentos

Tabla de pginas

Casos

Gestin de Memoria en

LINUX
WINDOWS

60

Referencia

Sistemas Operativos. ITIG. Alvaro Valdenebro. GSyC


Sistemas operativos. Pilar Gonzlez. Departamento de
Ingeniera y Tecnologa de Computadores. DITEC.
Sistemas Operativos una visin aplicada. Jess Carretero.
2da Edicin.

61