Post on 14-Dec-2015
description
1
Memoria Virtual
Prof. Giovana Garrido
Respecto a la Memoria Principal
•TAREAS DEL S.O.
•Seguimiento de espacio y
direcciones de memoria
utilizadas y por quién.
•Decidir qué procesos se
cargarán en la memoria.
•Asignar y liberar espacio de
memoria.
GENERALIDADES:
Memoria Ram: matriz grande de palabras o bytes.
Cada palabra tiene su propia dirección.
Permite acceso rápido, compartido por la CPU y los
periféricos.
Único dispositivo de almacenamiento que la CPU puede
direccionar y acceder directamente.
El programa debe cargarse en Mem. Ram para poder
ejecutarse.
Almacenamiento volátil.
2
Memoria virtual
Es un método mediante el cual, un sistema operativo simula tener mas memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la maquina.
Métodos:
Técnicas de “paginación”.
Técnicas de “segmentación”.
Una combinación de ambas técnicas.
Se utiliza la paginación como método de administración de memoria básica y algún 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 página a la que se está haciendo referencia en un momento dado se encuentra en la memoria principal (válido) o en el disco duro (inválido). Cuando el sistema operativo haga referencia a una página inválida, deberá ir al disco duro y cargarla a memoria principal para continuar el procesamiento.
3
Fundamentos
El código y los datos de los procesos en ejecución han de estar en memoria principal Limitando el tamaño de los programas
Empleo de mecanismos de carga dinámica
Es imprescindible?... Un proceso no utiliza todo su código/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 separación entre memoria lógica y física El proceso ve un espacio de direcciones virtual
Este espacio es tan grande como desee
Esquema de la memoria virtual
4
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 => interrupción hardware de fallo de
pagina
5
Tratamiento de fallo de pagina
1. Comprobamos la dirección de la pagina en el PCB
Valida => continuamos
Invalida =ZSIGSEGV
2. Buscamos un marco libre en memoria para alojar la
pagina
3. Cargamos la pagina desde el disco al marco
seleccionado
4. Marcamos la pagina como valida en la tabla de paginas
5. Reiniciamos la instrucción interrumpida
Espacio de direcciones virtual
8
Paginación
Consiste en considerar el espacio de direcciones lógicas de
cada proceso como un conjunto de bloques de tamaño
consistente llamados paginas. Cada dirección lógica manejada
para un proceso estará conformada por un par de valores
[pagina: desplazamiento].
Implementación de mecanismos de
paginación
La tabla de paginas se implementa completamente en hardware (ventaja: se obtiene una alta velocidad de acceso a memoria. Desventaja: resulta problemática cuando la tabla de páginas debe ser grande).
Implementar la tabla de páginas en la memoria principal (ventaja: la tabla de paginas puede crecer según se requiera. Desventaja: la velocidad de acceder a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.
9
Paginación
La memoria física se divide en marcos de igual tamaño
El SO mantiene una tabla de marcos
La memoria de los procesos se divide en paginas del mismo
tamaño que los marcos
El SO carga las paginas en marcos no necesariamente contiguos
Emplea la tabla de marcos para identificar marcos libres
Fragmentación externa... no hay
Fragmentación interna...
Promedio de media pagina desperdiciada
Si reducimos el tamaño de pagina, reducimos la fragmentación...
Pero necesitamos mas espacio para la meta información de paginas!
Paginación
Las direcciones lógicas se dividen en
Numero de pagina (p)
Desplazamiento de pagina (d)
Los números de pagina (p) representan índices en una
tabla de paginas
Sus entradas contienen la dirección física de la pagina
El hardware traduce la dirección lógica en física consultándola
10
Paginación
dir. lógica: nº página + desplazamiento
Tabla de páginas (TP):
◘ Relaciona cada página con el marco que la contiene
Número de página Desplazamiento
0 1 ................ 15 16 17 .............................................................................. 63
0
...
N
...
Número de página ...
...
Número Marco Página
...
Direccionamiento
Tamaño de página potencia de 2
Direccionamiento más sencillo
Fácil Traducción
Dirección lógica y relativa (respecto al inicio ) coinciden
12
Ejemplo
Tabla de paginas
Se almacena en la memoria principal
Su ubicación 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 ejecución
As cambiamos rápidamente el espacio de direcciones de un
proceso a otro
13
Tabla de páginas (TLB)
Problema: la tabla de paginas esta en memoria...
Dos accesos a memoria por cada operación sobre la misma
Solution: Translation Look-aside Buer (TLB)
Memoria asociativa de consulta de traducción
Almacena el resultado de las ultimas traducciones
Si acierta (se encuentra la pagina) se obtiene el marco físico
Si falla (no se encuentra la pagina) se recurre a la tabla de
paginas
TLB: esquema
14
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)
Protección de memoria
Las entradas de la tabla de paginas incluyen bits de
protección
“Lectura y escritura" o “solo lectura": indica si se puede
escribir en la pagina
Ejecución: indica si se puede ejecutar el código de la
pagina
“Valido o invalido": indica si la pagina se encuentra o no
en el espacio de direcciones del proceso
15
Validez de paginas
Límite 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)
Solución
Tener un registro de longitud de tabla de paginas (PTLR)
Indica el tamaño de la tabla de paginas
Las paginas que no estén en la tabla, se consideran invalidas
16
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
Paginación jerárquica
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 región de la tabla de paginas interna que indica el marco de pagina final
d indica el desplazamiento respecto al marco de pagina final
18
Tablas de paginas invertidas
Alternativa a la paginación multinivel
Una única tabla de paginas
Una entrada por cada marco de pagina
El índice indica la dirección del marco
Cada entrada almacena...
ASID
Numero de pagina
Desplazamiento
La traducción se realiza mediante búsqueda
Problema
Rendimiento
Memoria compartida...
Tablas de paginas invertidas: traducción
19
Segmentación Un método de asignación de memoria es la manera mediante la cual
el Sistema Operativo lleva el control de la memoria tratando de que sea lo más eficiente posible. Los métodos de asignación más comunes son:
Segmentación: Este método consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos. El tamaño de cada segmento será el requerido según la petición, por ejemplo el tamaño del proceso a cargar.
Visión multidimensional de la memoria
La memoria se divide en segmentos de tamaño variable
Cada uno tiene una secuencia lineal de direcciones
Direcciones lógicas en forma de tuplas
<num segmento, desplazamiento>
Métodos de asignación de memoria
El tamaño máximo 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 dirección.
El acceso a cada elemento individual en la memoria se hace mediante una dirección de memoria que se integra por dos elementos: una dirección de segmento y una de desplazamiento.
20
Segmentación
La combinación (suma) de la dirección de segmento y la de desplazamiento generan la dirección de memoria absoluta a acceder.
Dado que en cada proceso se manejan direcciones lógicas, el sistema operativo debe obtener una dirección lógica. El sistema operativo debe también asegurarse de que cada dirección lógica esté dentro del rango de direcciones empleado por el proceso.
Direccionamiento
La memoria real es unidimensional
Necesitamos traducir las tuplas lógicas a direcciones
físicas
Usamos una tabla de segmentos
Una entrada por cada segmento
El índice indica el numero de segmento
Cada entrada contiene
Dirección base del segmento
Tamaño del segmento
Bits de protección
22
Paginación: Esquema de traducción
CPU
Tabla de páginas
dirección
lógica
dirección
física
Memoria
0
p d f d
Página
(virtual)
desplazamiento
Página
(física)
-marco-
p
f
Paginación: Fragmentación interna
memoria asignada > memoria requerida
◘Puede desperdiciarse parte de un marco asignado.
◘Espacio desperdiciado medio (por región de proceso) es de ½ página.
T. Páginas Pr. 1
Página 0
Página 1
Página M
Marco 2
Marco 3
Marco N
..............
T. Páginas Pr. 2
Página 0
Página 1
Página P
Marco 4
Marco 1
Marco 0
..............
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Pág. 1 Pr. 2
............
Pág. 0 Pr. 1
Pág. 1 Pr. 1
Pág. M Pr. 1
Pág. 0 Pr. 2
Pág. P Pr. 2
23
Ejemplo de compartición
datos 27
6
5
ed 24
ed 13
2
datos 11
0
3
4
6
1
tabla de páginas
para P
proceso 1
datos 1
ed 2
ed 3
ed 1
3
4
6
2
tabla de páginas
para P
proceso 3
datos 3
ed 2
ed 3
ed 1
3
4
6
7
tabla de páginas
para P2
proceso 2
datos 2
ed 2
ed 3
ed 1
8
9
10
datos 3
ed 3
3
1
Paginación: Tamaño de página
Condicionado por diversos factores contrapuestos:
◘ Potencia de 2 y múltiplo del tamaño del bloque de disco
◘ Mejor pequeño por:
◘ Menor fragmentación
◘ Se ajusta mejor al conjunto de trabajo
◘ Mejor grande por:
◘ Tablas más pequeñas
◘ Mejor rendimiento del dispositivo de E/S
◘ Compromiso (entre 2K y 16K)
◘ Restricciones hardware (MMU).
24
El tamaño de página viene definido por el hardware y suele ser una potencia
de 2 que varía entre 512 y 16M Ej simplificado: Direccionamiento de un
espacio virtual de 64K, distribuido en 16 páginas de 4K:
010001110000100011000000000101000111000000000000
1111110001010000
0123456789
101112131415
página
virtual
página
física
Desplazamiento
(12 bits)
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 1 0 01 1 0
bit presente/ausente
Ejemplo de Paginación
Direcciones virtuales de 16
bits
Espacio de direcciones virtual
de 64KB
32KB de memoria física
Páginas de 4KB
16 páginas virtuales
8 marcos de página
25
Implantación de mecanismos de
memoria virtual• Existen 2 métodos para cargar programas en memoria:
• Demanda de página: consiste en iniciar la ejecución de
los procesos sin páginas cargadas, estas se irán cargando
conforme el proceso las demande.
• Prepaginación: consiste en que el sistema operativo
predice cuales páginas se ocuparán durante la ejecución
de un proceso.
Paginación 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
26
Paginación por demanda
Segmentación pura no adecuada para memoria virtual
◘ tamaño de segmentos variable
Paginación y segmentación paginada sí lo son:◘ Bloque transferido –› Página
◘ M. virtual + Paginación –› Paginación por demanda
Estrategia de implementación: Uso del bit de validez
◘ Página no residente se marca como no válida
◘ En acceso: Excepción de fallo de página S.O. trae la página correspondiente de mem. secundaria
S.O. debe diferenciar entre pág. no residente y pág. inválida
Prepaginación: Traer páginas por anticipado (no por demanda)◘ En fallo de página se traen además otras páginas que se considera que
necesitará el proceso
◘ Beneficiosa dependiendo de si hay acierto en la predicción
Rendimiento en paginación bajo demanda
El rendimiento del sistema se ve fuertemente influenciado
por
Algoritmo de sustitución de paginas => Como
seleccionamos las paginas a sustituir?
Algoritmo de asignación de marcos => Como repartimos
los marcos libres?
27
Fallo de página
Problema: espacio de direcciones virtual más grande que la memoria física
Bit presente/ausente ) controlar qué páginas están presentes en memoria
¿Qué sucede si no hay asociación página/marco? ) =>
Fallo de página
1. La MMU detecta que la página no tiene correspondencia
2. La MMU provoca un fallo de página (interrupción)
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 página a ese marco
5. Modifica la tabla de páginas
6. Reinicia la instrucción
Fallo de página
28
Tratamiento del fallo de página
Tratamiento de excepción (dirección de fallo disponible en reg.)◘ Si dirección inválida –› Aborta proceso o le manda señal
◘ Si no hay ningún marco libre (consulta T. marcos)
Selección de víctima (Alg. de reemplazo): pág P marco M
Marca P como inválida
Si P modificada (bit Mod de P activo)
Inicia escritura P en mem. secundaria
◘ Hay marco libre (se ha liberado o lo había previamente):
Inicia lectura de página en marco M
Marca entrada de página válida referenciando a M
Pone M como ocupado en T. marcos (si no lo estaba)
Fallo de página puede implicar dos operaciones en disco
Estructuras Hardware
Dado que ante un fallo de página el Hardware simplemente produce un
error (trap), bastará simplemente con añadir dos bits en la tabla de
páginas.
El bit p que indica si la página referenciada está o no cargada en
memoria principal (0 no cargada, 1 si).
El bit m que indica si la página cargada ha sido o no modificada, y por
tanto debe salvarse en caso de ser seleccionada para reemplazo ante un
fallo de página (0 no modificada, 1 si).
De esta forma la entrada en la Tabla de Páginas queda:
P M Marco (F)C
29
Estructuras Hardware
Dir Lógica
S P D
STPtr
+ C B L <
No
Segmentation
Error
Si
+ C P M F
P?
No
Trap (SO debe
reemplazar)
+
Dir. Física
Tablas de Páginas
Son tablas que contienen (para cada proceso) el número de marco que
corresponde a cada página virtual del proceso.
Establece la correspondencia entre direcciones virtuales y físicas (entre las
páginas virtuales y los marcos de página):
Para un funcionamiento óptimo el tamaño de la página y el marco debe ser potencia
de 2
La dirección virtual se divide en número de página virtual y desplazamiento
El número de página virtual se usa como índice para consultar la tabla de páginas
La entrada correspondiente de la tabla de páginas indica el número de marco de
página (si está en memoria)
El número de marco de página se anexa al desplazamiento para formar una dirección
física
30
Tablas de Páginas
4 bits de página y 12 bits de ajuste
Tablas de Páginas
- Estructura de una entrada de la Tabla de Procesos
Número de marco
bit presente (1) ausente (0)
protección (permisos) del marco (RWX)
bit Modificado (1) o no (0) -lo usa el intercambiador
para saber si debe copiar el marco a disco o no-
bit Referenciado (1) o no (0) -lo usa el manejador para
decidir qué entrada de la Tabla liberar- Se actualiza
periódicamente
Caching Desactivado/Activado (lo veremos en E/S)
No usado
31
Paginación con TLBs (HW)
Marco 1
Marco 2
Marco 3
Marco 4
Marco 5
Marco 6
Marco 7
Marco 8
P
Memoria
Tabla de páginas
Marco 5
D
RPBTP
RLTP
M D
TLB
A
X
V
C
P
T
S
R
3
24
89
19
5
18
5
10
Procesador P D
Paginación de la TDP
P D
Tabla 1
Tabla 2
Tabla 3
Tabla 4
Tabla 5
Tabla 6
Tabla 7
Tabla 8
Dir
Memoria
Directorio de páginas
D
RPBTP
RLTP
M D
Dir
Tabla de páginas
Dirección virtual
Marco 1
Marco 2
Marco 3
Marco 4
Marco 5
Marco 6
Marco 7
Marco 8
P
32
Búsqueda directa y asociativa en entradas en la tabla de páginas
Traducción de direcciones lógicas a físicas mediante tabla de páginas
Fundamento de la memoria virtual
M. virtual: SO gestiona niveles de m. principal y m. secundaria
Sube por demanda; Baja por expulsión
Aplicable por proximidad de referencias
Procesos sólo usan parte de su mapa en intervalo de tiempo
Parte usada (cjto de trabajo) en m. principal (cjto residente)
Beneficios:
Aumenta el grado de multiprogramación
Permite ejecución de programas que no quepan en mem. Ppal
No adecuada para sistemas de tiempo real
Basada en paginación: Uso del bit de validez
Página no residente se marca como no válida
En acceso: Excepción de fallo de página
33
Políticas de administración
Localización
Extracción
Ubicación:
Cualquiera, aunque puede usarse coloración de páginas
Reemplazo
Actualización
Escritura diferida
Reparto de espacio
Política de localización: posibles ubicaciones
34
Política de extracción: Fallo de página
Si dirección inválida →Aborta proceso o le manda señal
Si no hay ningún marco libre (consulta T. marcos)
Reemplazo: pág P marco M → P inválida
Si mod → escribir fichero o swap
Hay marco libre (se ha liberado o lo había previamente):
Inicia lectura de página en marco M
Conecta entrada de TP a M
Fallo de página en modo sistema no siempre es error:
Acceso a página de usuario no residente
Prepaginación: trae páginas por anticipado (no por
demanda)
Creación de tablas de páginas por demanda
35
Algoritmos de descarga (Reemplazo)
Se utiliza para determinar cuales páginas serán descargadas hacia el disco duro cuando se quiera cargar nuevas paginas y no haya memoria libre. Existen 3 algoritmos básicos: FIFO, LRU y Optimo.
Tipo de reemplazo: local o global
También en caché de sistemas de ficheros
Objetivo: Minimizar la tasa de fallos de página.
Poca sobrecarga y MMU estándar
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
36
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
Anómala de Belady => La tasa de fallos puede incrementarse
según aumenta la cantidad de memoria
37
Algoritmos de Reemplazo optima de paginas
Algoritmo Optimo (MIN): Consiste en descargar la o las páginas
que no se necesitarán en el periodo de tiempo más largo en el
futuro. Esta implementación 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 anómala 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: optimización
La sustitución implica dos transferencias de paginas
Una transferencia de descarga
Una transferencia de carga
Podemos evitarlo?
Si la pagina no ha sufrido modificación 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
38
Algoritmos de Reemplazo de paginas LRU
LRU (Least Recently Used): Consiste en descargar las
últimas páginas usadas (se usa el pasado para predecir el
futuro). Lo utiliza Windows.
Se sustituye la pagina menos utilizada
Se trata de una estimación de la sustitución optima
No esta sujeta a la anómala de Belady (algoritmo de pila)
Problemas...
Como mantener un orden LRU?
Hiperpaginación (Thrashing)
Tasa excesiva de fallos de página de proceso o de sistema
Con asignación fija: Hiperpaginación en proceso
Con asignación variable: Hiperpaginación en el sistema
39
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
multiprogramación
Los nuevos procesos requieren marcos = roban marcos
Resultado
Se invierte mas tiempo en paginar que en procesamiento
Degradacion total del sistema
Solución para acelerar el acceso a los marcos cuando las tablas
de procesos son muy grandes (búsqueda lenta) y/o están
organizadas en niveles (requiere múltiples accesos a memoria)
Se basa en la observación de que los procesos acceden
normalmente a un número pequeño de páginas (y
esporádicamente al resto)
Solución: dotar a los ordenadores con hardware (Memoria
Asociativa) para asociar algunas páginas de uso frecuente con
páginas físicas sin necesidad de acceder a la tabla de páginas. El
tamaño de la memoria asociativa suele ser de 8 a 32 entradas.
Proporción de encuentros: Proporción de accesos a la
Memoria Asociativa que son exitosos (la Página Virtual buscada
se encuentra en la Memoria)
MEMORIA ASOCIATIVA/TLB (translation lookaside buffer)
40
MEMORIA ASOCIATIVA/TLB (translation
lookaside buffer)
Dispositivo hardware que traduce direcciones virtuales a
físicas sin acceder a la tabla de páginas.
Está en el interior de la MMU
Consiste en un número pequeño de entradas (casi nunca más
de 64)
Cada entrada contiene información sobre una página:
No de página
Bit de modificado
Bit de protección
No de marco de página
Bit de validez
Memoria asociativa/TLB
Funcionamiento:
Dirección virtual ) se comprueba, en paralelo, si su
número de página está presente en el TLB
Si está:
Si no viola los bits de protección ) el número de marco se toma del
TLB
Si viola los bits de protección ) Fallo de protección
Si no está ) Fallo del TLB
La MMU consulta la tabla de páginas
Desaloja una entrada del TLB
La sustituye por la nueva entrada
¿Qué pasa con el TLB en los cambio de contexto?
41
CPU
Tabla de páginas
dirección
lógica
dirección
física
Memoria
0
p d f d
Memoria Asociativa
fallo
encontrada
p
¿Válido?
(0,1)
1 #página
¿Modificado?
(0,1)
protección #marco0
Acciones del Manejador de Memoria:
PVpresente
Válido?
accede marco
sí
sí
no
Trampa al SOpor errorde acceso
no Fallo de página
Busca en tabla
de Páginas
PVpresente
nopermiso
Lee marco
sí
sí
no
Fallo de página
Trampa al SOpor errorde acceso
Intercambio
desde disco
Extrae entradaantigua
Introduce la nuevaPV en la memoria
asociativa
Permiso?
sí
no
(sigue arriba)
(viene de abajo)
42
Tablas de páginas multinivel
Fundamento
Tablas de páginas muy grandes con muchas entradas nulas
Fragmentar tabla y acceder mediante tabla maestra
Tablas de páginas 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 página
Dirección lógica especifica la entrada a usar en cada nivel:
1 campo por nivel + desplazamiento
Si todas las entradas de una TP son inválidas
No se almacena esa TP e inválida entrada de TP superior
Esquema de traducción con 2 niveles
43
Ventajas de Tablas de páginas multinivel
Si proceso usa una parte pequeña de su espacio lógico
Ahorro en espacio para almacenar TPs
Ejemplo: Proceso que usa 12MB superiores y 4MB
inferiores
2 niveles, pág. 4K, dir. lógica 32 bits (10 bits/nivel), 4B/entrada
Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)
Ventajas adicionales:
Permite compartir TPs intermedias
Sólo se requiere que esté en memoria la TP de nivel superior
Facilita implementación de superpáginas
Entrada de primer nivel de superpágina apunta a m. física
Ventajas de Tablas de páginas multinivel
44
Tablas de páginas invertidas
En una arquitectura de 64 bits, las tablas de páginas
pueden ser enormes:
Con páginas de 4 KB ) => ¡¡ tablas de 2^52 entradas !!
Si páginas muy grandes ) => demasiada fragmentación interna
Si cada entrada 8 bytes (64 bits) ) => ¡¡ 32 Petabytes para la
tabla de páginas !!
Tablas de páginas multinivel demasiado complejas por la gran
cantidad de niveles necesarios
Solución: tabla de páginas invertida
Tablas de páginas invertidas
Características:
Una entrada por cada marco de página de la memoria física
Con direcciones virtuales de 64 bits, 4KB/página y 512 MB de RAM,
sólo se necesitan 131.072 entradas
Cada entrada indica qué proceso y qué página virtual de dicho
proceso están en el marco correspondiente
Problema: la traducción de direcciones virtuales a físicas es
mucho más difícil:
Cada vez que un proceso “n” referencia a su página “p”, hay que
buscar una entrada “(n, p)” en toda la tabla invertida para averiguar el
marco
Solución: TLB + tabla de dispersión
45
Tablas de páginas invertidas
Tamaño de páginas:
◘ Si son pequeñas se evita la fragmentación interna, pero
el tamaño de la tabla crece, y con él
los tiempos de búsqueda al tener que buscar en tablas más
grandes y por no optimizar la copia de páginas a/desde disco
y las necesidades de almacenamiento (cada proceso tiene una
tabla de proceso propia).
Ej: direccionamiento con 32 bits (memoria lógica de
232=4Gb),tamaño de página: 4Kb (212)1 millón (232 /212) de
páginas. Tamañó de la tabla: 4(bytes) x 220 = 4Mb
En la actualidad se usan tamaños de página de 2-4 Kb
El tiempo de asociación debe ser reducido.
Soluciones basadas completamente en hardware (utilizando registros)
son las más rápidas, pero esto sólo es válido
si las tablas son pequeñas
Aspectos de diseño para los sistemas de
paginación
46
Aspectos de diseño para los sistemas de
paginación
Gestión del conjunto de trabajo
Paginación por demanda: las páginas sólo se cargan cuando se necesitan, y no por adelantado (paginación pura)
Localidad de referencia: en cualquier fase de su ejecución, un proceso sólo referencia a una fracción relativamente pequeña de sus páginas
Proceso hiperpaginado: proceso que pasa más tiempo resolviendo fallos de página que ejecutando instrucciones
Conjunto de trabajo: conjunto de páginas que un proceso ha usado en las últimas N instrucciones o unidades de tiempo
Prepaginación o paginación anticipada: la carga de páginas antes de ser solicitadas
Aspectos de diseño para los sistemas de
paginación
Gestión del conjunto de trabajo, continuación: Modelo de conjunto de trabajo ) establece que el
conjunto de trabajo de un proceso debe estar en memoria antes de ejecutarlo: prepaginación
Algoritmo de reemplazo de páginas del conjunto de trabajo:
Para cada página hay (al menos) dos elementos de
información: el tiempo aproximado del último acceso y el bit R
Cada tic de reloj se limpia el bit R
En un fallo de página, para cada página:
Si R=1, se actualiza el tiempo del último acceso
Si R=0 y edad > τ => reemplazar (pero continúa el recorrido)
Si R=0 y edad < τ => recordar el tiempo más pequeño y seguir
Si no éxito: la más antigua con R=0; sino cualquiera con R=1
47
Aspectos de diseño para los sistemas de
paginación Políticas de asignación local y global
¿Cómo repartir la memoria entre los procesos ejecutables ?
Local: se asigna un número de marcos fijo a cada
proceso
Global: se asignan, dinámicamente, los marcos de
página entre los distintos procesos ejecutables
Aspectos de diseño para los sistemas de
paginación
Políticas de asignación local y global
Los algoritmos locales son más propensos a la hiperpaginación y pueden desperdiciar memoria
Los algoritmos globales funcionar mejor. Ahora bien ¿cómo se decide cuántos marcos se asignan a cada proceso?
Algoritmo de frecuencia de fallos de página ) cuándo hay que reducir o aumentar el no de marcos asignados a un proceso
Calcula la tasa de fallos de página de cada proceso
Trata de mantener la tasa de fallos de página dentro de unos límites razonables
Observación: no dice nada sobre qué paginas sustituir
Otros aspectos:
Decidir el número mínimo de marcos a asignar a un proceso
Cómo realizar el reparto de marcos entre los procesos
48
Aspectos de diseño para los sistemas de
paginación
Tamaño de página
Páginas pequeñas
Menos fragmentación interna
Tablas de páginas más grandes
Páginas grandes
Más fragmentación interna
Tablas de páginas más pequeñas
Factor a tener en cuenta: velocidad de lectura/escritura de disco
Tamaños típicos: 4KB u 8KB
Aspectos de diseño para los sistemas de
paginación
Compartición de páginas
Compartir código (ej.: varios usuarios ejecutan el mismo
programa):
Llevar control de páginas compartidas para saber qué hacer si un
proceso termina o una página se reemplaza
Compartir datos:
Como mecanismo de comunicación entre procesos
Cuando sólo se leen. Se pueden modificar también, pero entonces =>
mecanismo de copia en escritura (ej.: creación de procesos con fork en
UNIX):
Páginas de datos se comparten en modo ”sólo lectura”
Si escritura => fallo de protección => S.O. hace copia de la página de
datos para el que escribe, activa permiso de copia y reinicia la instrucción
49
Aspectos de diseño para los sistemas de
paginación
Políticas de lectura y escritura de páginas
Lectura (ya visto)
Por demanda: cuando se produce un fallo de página (paginación por
demanda)
Por adelantado: en un fallo de página se leen varias páginas, incluida la
que produjo el fallo (prepaginación o paginación anticipada)
Escritura
Por demanda: cuando se expulsa una página que está modificada
Por anticipado: por ejemplo, cada X segundos (demonio de
paginación)
Si, además, se liberan páginas => Caché de páginas
Aspectos de diseño para los sistemas de
paginación
Control de carga
A veces no es posible evitar la hiperpaginación (todos los procesos piden más memoria y no se puede asignar a uno sin perjudicar a otro)
Solución: intercambio ) suspender procesos y liberar sus páginas, pero sin dejar la CPU inactiva ) Hay que controlar el grado de multiprogramación
Anclaje de marcos de memoria
Cuando intervienen en una operación de E/S por DMA que no ha finalizado
A tener en cuenta, sobre todo, en algoritmos globales
Administración del espacio de intercambio
Asignación estática por proceso, cuando éste se inicia
Asignación dinámica (los procesos pueden crecer)
50
Política de reparto de espacio
Estrategia de asignación 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º mínimo
Estrategia de asignación dinámica
Nº marcos varía según evolución de proceso(s)
Asignación dinámica + reemplazo local
comportamiento relativamente predecible
Asignación dinámica + reemplazo global
comportamiento difícilmente predecible
Políticas de control de carga
Estrategia del conjunto de trabajo
Páginas 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 específica
Estrategia basada en frecuencia de fallos de página (PFF)
Control de carga y reemplazo global
No control de hiperpaginación
Algoritmo de control de carga empírico
Si nº marcos frecuentemente debajo de umbral
51
Estrategia basada en frecuencia de fallos
Si tasa < inferior se liberan marcos aplicando reemplazo
Si tasa > límite superior se asignan nuevos marcos
Si no marcos libres se suspende algún proceso
Memoria virtual con segmentación
Segmentación
Proporciona a un proceso varios espacios de direcciones
completamente independientes => Segmentos
Cada segmento:
Una sucesión lineal de direcciones, desde 0 hasta un máximo
Tiene una longitud distinta y variable
Puede crecer o disminuir independientemente
Puede tener una protección diferente (lectura, ejecución,. . . )
Direcciones de dos dimensiones => Tabla de segmentos
Número del segmento
Dirección del segmento
52
Segmentación: Esquema de traducción
memoria
tabla de segmentos
límite base
s d
dirección lógica
Excepción
> +SI
NO
1. La MMU toma la parte
asociada al número de
segmento y lo busca
en la TS.
2. Se verifica si el
desplazamiento está
dentro de los límites
3. Indexa el byte dentro
de la memoria física.
Sumando el
desplazamiento base.
1
2
3
Facilita la protección y la compartición de objetos =>
procedimientos, funciones, estructuras de datos, etc.) de forma
individual
Problema: Fragmentación externa
segmentación
53
Direccionamiento
◘ Dirección lógica = Nº Segmento + desplazamiento
Traducción de direcciones
◘ Se realiza dinámicamente en cada referencia a memoria
◘ Necesita un hardware especial que realiza la traducción
Nº segmento dirección lógica índice tabla segmentos
Dirección física = Dirección base de la entrada + desplazamiento de la
dirección lógica
Facilita la compartición
Se comparten unidades lógicas, segmentos, permitiendo compartir datos,programas, subrutinas, etc.
El uso compartido es uno de los argumentos más importantes en favor de la segmentación
¿Cómo pueden dos o más procesos compartir un segmento?
Facilita la protección
Se puede asociar a cada segmento uno o varios bits de protección ( basadaen los registros base y límite)
Se pueden establecer distintos derechos de acceso (rwx) a cada módulo del proceso
Estos derechos suelen guardarse en la TDS
Facilita la ampliación de memoria.
Si esta estructura se encuentra en un segmento específico para ella,basta con ampliar el tamaño del segmento
54
Segmentación (HW)
Procesador S D
Base 1
Base 2
Base 3
Base 4
Base 5
Base 6
Base 7
Base 8
S
Memoria
Límite 1
Límite 2
Límite 3
Límite 4
Límite 5
Límite 6
Límite 7
Límite 8
<
Tabla de segmentos
+
¡¡¡ Error !!!
Base 5
D
RPBTS
RLTS
cpu
límite base
tabla de segmentos
(s, d)
s
<+
si
no
error de direccionamientomemoria física
55
Segmentación
Segmentación paginada
Cada segmento se pagina internamente => ventajas de la
paginación y de la segmentación
Dirección formada por dos partes: segmento y dirección
dentro del segmento:
Segmento => entrada en la tabla de segmentos que nos da la
dirección de la tabla de páginas
Dirección dentro del segmento => dividida en 2 partes:
Número de página =>entrada de la tabla de páginas que da el marco
de página correspondiente
Desplazamiento dentro de la página
56
Segmentación paginada
Ejemplos prácticos Algoritmos de reemplazo
de páginas
Algoritmo FIFO: Primero en entrar, primero en
salir
Reemplaza la página que entró hace más tiempo en memoria
(la primera que entró)
Es muy malo, al no tener en cuenta el uso de las páginas
57
Ejemplos prácticos Algoritmos de reemplazo
de páginas
Algoritmo óptimo
Reemplaza la página que más tiempo va a tardar en necesitarse
Irreal: el orden de las referencias a memoria no se uede
saber de antemano
Ejemplos prácticos Algoritmos de reemplazo
de páginas
Algoritmo LRU (Least Recently Used)
Buena aproximación al algoritmo óptimo
Selecciona la página que no ha sido utilizada hace más tiempo
58
Resumen
Paginación
Elimina fragmentación externa
Aprovecha eficientemente la memoria
Segmentación
Visible al programador
Soporte para compartición y protección
Segmentación con paginación
Combina las ventajas de ambas
Método básico
División del espacio de direcciones del usuario en segmentos
División de cada segmento en páginas
◘ Dirección lógica
Desde el punto de vista del usuario
Número de segmento | desplazamiento
Desde el punto de vista de la máquina
Nº segmento | nº página | desplazamiento
Traducción de
direccionesEstructuras de datos utilizadas para cada proceso
Una tabla de segmentos
Una tabla de páginas por segmento
59
Ejemplo de Segmentación con Paginación (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) páginas de 1K (210)
Las direcciones físicas son de 24 bits, con las páginas alineadas con fronteras de 64
bytes
Una dirección virtual en MULTICS sería
18 6
Nº segmento Nº página Ajuste
10
Dirección 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.
Dirección de la tabla de páginas
en la memoria física
Lóngitudde segmentoen páginas
Tamaño de página:
0 = 1024 palabras
1 = 64 palabras
0 = segmento paginado
1 = segmento no paginado
18 9 111 3 3
Bits diversos
Bits de protección
60
Conversión de direcciones:
18 6
Nº segmento Nº página Ajuste
10
Tabla de Segmentos
descriptor
Nº segmento#marco
Nº página
Tabla de páginas
Memoria
palabra
ajuste
Casos
Gestión de Memoria en
LINUX
WINDOWS