Está en la página 1de 16

Contenido

Tema 10
  Principios de la memoria virtual.
  Hardware y estructuras de control
Memoria virtual basada en paginación.
Memoria Virtual
 

  Segmentación y segmentación + paginación.


  Aspectos de diseño e implementación.
  Software del sistema operativo.
  Política de lectura.
Secciones Stallings: 8.1 - 8.2   Política de ubicación.
  Política de reemplazo.
  Gestión del conjunto residente.
  Política de vaciado.
  Control de Carga
1 A.Ortigosa 2

Memoria Virtual Memoria Virtual

  Memoria Virtual: Método para conseguir que la   Ventajas:


suma de los espacios de pila, datos y texto de un   Permite optimizar uso de memoria:
programa pueda ser mayor que el tamaño físico   mantiene más procesos en memoria principal
de la memoria disponible para él.   mantiene en disco partes del proceso poco usadas (rutinas de
atención a errores poco frecuentes, funciones de uso
(Fotheringham, 1961) esporádico, datos no usados, …)
  Permite que un proceso sea más grande que toda la
  El SO mantiene en memoria solo las partes del memoria principal
programa que se están utilizando (conjunto   Permite multiprogramación muy efectiva
residente) y mantiene en disco el resto.   Se encarga el SO => evita al usuario la preocupación
por programar con superposición

A.Ortigosa 3 A.Ortigosa 4

Memoria Virtual Paginación

  Fallos de direccionamiento:   La memoria física se divide en bloques de tamaño fijo que


  Se genera interrupción, indica fallo de acceso a memoria llamamos marcos.
  Proceso pasa a bloqueado, SO a ejecución   La memoria virtual se divide en bloques del mismo
  SO emite solicitud de E/S al disco tamaño llamados páginas.
  SO expide otro proceso para que se ejecute   Los programas se dividen en páginas
  Tras traer fragmento a memoria, interrupción de E/S,   Al ejecutar un proceso se cargan sus págs. en los marcos
control al SO, que pasa el proceso a listo. disponibles (SO mantiene lista de marcos)
  Posible hiperpaginación (thrasing):   La vinculación de direcciones:
  SO más tiempo intercambiando fragmentos que ejecutando   Usa tabla de páginas (normalmte. 1/proceso)
  Requiere soporte por hardware (Manejador de
  (ej: si saca de memoria un fragmento que se iba a usar ya).
Memoria)
  Solución: el SO “adivina” qué fragmentos se usarán
próximamente.
A.Ortigosa 5 A.Ortigosa 6

1
Paginación Tablas de páginas
- Son tablas que contienen (para cada proceso) el nº marco
Ptero a tabla
Dirección de páginas Dirección que corresponde a cada página virtual del proceso
lógica física
- Estructura de una entrada de la Tabla de Páginas:
(virtual)
CPU p d m d Número de marco

p Memoria bit presente (1) ausente (0)


protección (permisos) del marco (RWX)
Página
(virtual) nº marco (m) bit Modificado (1) o no (0): lo usa el intercambiador
Página para saber si debe copiar el marco a disco o no
desplazamiento (física) Caching Desactivado/Activado (lo veremos en E/S)
Tabla de páginas -marco- 0
No usado
A.Ortigosa 7 A.Ortigosa 8

Tablas de páginas Paginación


-  Tamaño de página viene definido por el Hw. y suele ser una
potencia de 2 que varía entre 512 y 16M   No hay fragmentación externa
Ej simplificado: Direccionamiento de un espacio virtual de 64K,
- 

distribuido en 16 páginas de 4K:


  Fragmentación interna en los marcos
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0   Intento de acceso a página virtual sin marco asociado
=> interrupción que llega al SO (trap): fallo de página
0 010 1 bit presente/ausente
1
2
001
110
1   Como respuesta al fallo de página, el SO:
página 1
Virtual
3
4
000
100
1   Selecciona una página poco usada del proceso
1 Desplazamiento
5 011 1   Intercambia la página a disco
(4 bits) 6 000 0 (12 bits)
7 000 0   Asigna el marco de la página liberada a la página virtual
8 000 0
marco 9 101 1 que se intenta acceder
10 000 0
11 111 1
12 000 0
13
14
000 0   Supone reasignación dinámica por bloques de las
000 0
15 000 0 direcciones de memoria del proceso
A.Ortigosa 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 9 A.Ortigosa 10

Rendimiento de un sistema
Segmentación
de paginación
Tiempo de acceso efectivo a memoria (tae) para un sistema de   Técnica para mantener espacios independientes de
paginación de memoria mononivel: direcciones virtuales, llamados segmentos.
  Pueden ser de distintos tamaños, incluso variar de tamaño
tae= tb + (1 - p) x tam + p x (t-fallo + tam) dinámicamente
  Dirección = nº segmento + desplazamiento
tb: tiempo medio de búsqueda en la tabla de páginas   La segmentación permite:
p: probabilidad de que ocurra un fallo de página   Desentenderse de la administración ‘interna’ de la memoria
virtual del proceso, es decir, del control del crecimiento,
tam: tiempo de acceso a memoria decrecimiento y ajuste entre sí de las distintas partes del
tfallo: tiempo de resolución de un fallo de página. Tiene proceso.
tres componentes principales:   Modificar y recompilar módulos independientemente
1. Atender la interrupción de fallo de página   Asignar permisos distintos a las partes del proceso
2. Traer la página a la memoria   Compartir datos o procedimientos entre procesos
3. Continuar el proceso
A.Ortigosa 11 A.Ortigosa 12

2
Segmentación Segmentación

Estructura de una entrada en la tabla de segmentos


  Los segmentos se direccionan desde 0 hasta
una dirección máxima, que puede variar.
Otros bits de control Longitud del segmento Base del segmento
  La segmentación pura puede producir
problemas de fragmentación externa.
bit presente (1) ausente (0)
  La segmentación es visible para el
bit Modificado (1) o no (0)
programador

A.Ortigosa 13 A.Ortigosa 14

Segmentación Paginación + Segmentación


Dirección lógica
S D Dirección real (B+D)   Paginación es invisible al programador;
segmentación es visible para el programador
+   Espacio de direcciones dividido en
despl.

Puntero a tabla
de segmentos Segmento
segmentos, cada segmento en varias páginas
nº segmento

+ de tamaño fijo = marco de memoria


Longitud Base
  Si segmento < página, ocupa 1 página
Tabla de
Segmentos

A.Ortigosa 15 A.Ortigosa 16

Paginación + Segmentación Paginación + Segmentación


Dirección virtual
Número de segmento Número de página Desplazamiento
Nº segmento desplazamiento
Entrada en la tabla de segmentos
programador
Otros bits de control Longitud Base de segmento

Entrada en la tabla de páginas


Otros bits de control Número de marco
Nº segmento Nº página desplazamiento
bit presente (1) ausente (0)
S.O.
bit Modificado (1) o no (0)

A.Ortigosa 17 A.Ortigosa 18

3
Paginación + Segmentación
Dirección lógica
S P D M D

despl.
Puntero a tabla
de segmentos Tabla de Marco de
Páginas (*) Página
nº segmento

nº pag.

+
+
(*)

Tabla de
Segmentos
1 tabla de págs/segmento
Tabla de segmentos nos da dirección de la tabla de páginas del segmento
A.Ortigosa 19 A.Ortigosa 20

Aspectos de diseño Aspectos de diseño


  Cuanto menor tamaño de página:
  El tiempo de asociación debe ser reducido
  menor cantidad de fragmentación interna.
  Soluciones basadas completamente en   mayor nº de páginas necesarias por proceso
hardware (utilizando registros) son las más => las tablas de páginas serán mayores
=> puede que no quepan en memoria principal!
rápidas
  Ej: sistemas de direccionamiento por 64 bits
  Esto sólo es válido si las tablas son pequeñas (20 Tb= 264), nº páginas de (p.ej) 4K es 252 => ¡Impensable
mantener tablas de páginas de esa longitud!
  Memoria secundaria diseñada para transferir eficazmente
bloques de datos de mayor tamaño
=> propicia para tamaños de página mayores

A.Ortigosa 21 A.Ortigosa 22

Aspectos de diseño Paginación multinivel

  Evita tener siempre en memoria tablas de


  Opciones: páginas completas
  Paginación multinivel:   dividiendo la tabla en sub-tablas y
  una parte de las tablas de páginas deben estar en   manteniendo en memoria sólo las que sean
la memoria virtual, sujetas a paginación también necesarias en cada momento
  Tablas de páginas invertidas

A.Ortigosa 23 A.Ortigosa 24

4
Paginación multinivel Paginación multinivel
Tabla de páginas
raíz (4KBytes)
Dirección lógica Dirección física

p1 p2 d (…) f d
Tabla de páginas
p1 Memoria Usuario (4MBytes)

p2
Espacio de
Tabla de páginas 0 direcciones del
de nivel superior Tablas de páginas usuario (4KBytes)
de segundo nivel
Ejemplo tabla de páginas de dos niveles

A.Ortigosa 25 A.Ortigosa 26

Tablas de páginas invertidas Tablas de páginas invertidas


dirección virtual (n bits)
  Tabla de páginas con tantas entradas como marcos
  Cada entrada contiene dirección virtual que usa dicho marco
  (índice = marco al que se refiere)
  Nº página
  ID proceso
  Bits de control
  Puntero encadenamiento
  Tabla hash para buscar direcciones virtuales
  Encadenamiento para resolver colisiones
  Si una dirección virtual no se encuentra en la tabla invertida, se
hace una búsqueda en una tabla convencional, que puede estar en
memoria o en disco.

A.Ortigosa 27 A.Ortigosa 28

Buffer de traducción adelantada


Memoria asociativa
(TLB)
dirección dirección
  Solución para acelerar acceso a marcos, cuando tablas de lógica física
procesos muy grandes (búsqueda lenta) y/o organizadas CPU p d f d
en niveles (requiere múltiples accesos a memoria). ¿Válido?¿Modificado?
  Se basa en que los procesos acceden normalmente a un nº (0,1) (0,1)
pequeño de páginas (y esporádicamente al resto).
  Solución: dotar al ordenador de Hw (memoria asociativa) 1 #página 0 protección #marco Memoria
para asociar páginas de uso frecuente con marcos sin
acceder a la tabla de páginas Comprueba
Memoria Asociativa - TLB
coincidencia
  Tamaño de memoria asociativa: 8-32 entradas normalmente (por Hw)
  Proporción de encuentros: proporción de accesos a la memoria 0
asociativa que son exitosos Correspondencia p
asociativa
encontrada
fallo
Tabla de páginas

A.Ortigosa 29 A.Ortigosa 30

5
Buffer de traducción adelantada (TLB) Buffer de traducción adelantada (TLB)

(viene de abajo)
PV no Fallo de
presente TLB
Extrae entrada
sí Busca en tabla antigua
no de Páginas
Válido?
Introduce la nueva
PV en la memoria
sí PV no
presente asociativa
no
Permiso? sí

sí no Fallo de
permiso página
accede marco

Intercambio
Trampa al SO Trampa al SO Lee marco desde disco
por error por error
de acceso de acceso y actualización
A.Ortigosa
(sigue arriba) de memo asociativa 31 A.Ortigosa 32

Caché TLB + Caché


Todo lo anterior (MV) debe interactuar con la caché
de la memoria principal:

-  Consultar TLB
- Si está: dirección física = nº marco + despl.

- Si no, consultar tabla de páginas

- Si está, construir dirección real = nº marco + despl.

- Si no, fallo página (interrupción E/S, cargar de disco,

actualizar caché, tabla de págs. etc)


-  Buscar en caché

Si está: ya tenemos el bloque


Si no: sacar el bloque de memoria principal

A.Ortigosa 33 A.Ortigosa 34

Aspectos de diseño Aspectos de diseño


Tasa de fallos de página

Tasa de fallos de página

  Si tamaño de página pequeño:


  Menor cantidad de fragmentación interna.
  Para cada proceso, gran nº páginas disponibles
en memo principal
  Después de un tiempo, todas las págs. de memoria
contendrán parte de las refs. más recientes del
proceso
(a) Tamaño de página (b) Número de marcos de página asignados
=> la tasa de fallos de página será menor.
  Mayor nº de páginas necesarias por proceso
P = Tamaño del proceso completo => tablas de páginas mayores
W = Tamaño del conjunto de trabajo
N = Número total de páginas del proceso
=> algunas en memoria virtual también
=> pueden ocurrir varios fallos de página en 1 única
Figura 8.11. Comportamiento típico de la paginación en un programa. ref. a memoria
A.Ortigosa 35 A.Ortigosa 36

6
Aspectos de diseño Aspectos de diseño

  Transferencia de bloques de memo   Para un tamaño de página fijo:


secundaria más eficiente si páginas grandes   Tasa de fallos baja si sube nº páginas en
  Incrementar el tamaño de la página memoria principal
=> la política del Sw (cantidad de memoria
=> cada página contendrá posiciones cada
asignada a cada proceso) afectará a la decisión
vez más distantes de cualquier referencia sobre el diseño del Hw.
reciente (principio de cercanía)
=> tasa de fallos mayor pero decrece cuando
tam. pág. tiende al tam. del proceso

A.Ortigosa 37 A.Ortigosa 38

Aspectos de diseño
Tabla 8.2. Ejemplos de tamaños de páginas.

Computadora Tamaño de página

Atlas 512 palabras de 48 bits


Honeywell-Multics 1.024 palabras de 36 bits
IBM 370/XA y 370/ESA 4 Kbytes
Familia VAX 512 bytes
IBM AS/400 512 bytes
DEC Alpha 8 Kbytes
MIPS de 4 Kbytes a 16 Mbytes
UltraSPARC de 8 Kbytes a 4 Mbytes
Pentium de 4 Kbytes a 4 Mbytes
Power Pc 4 Kbytes

A.Ortigosa 39 A.Ortigosa 40

Sw del Sistema Operativo Diseño de Gestor de Memoria

  Políticas de lectura (previa / bajo demanda)   Depende de:


  Políticas de ubicación (mejor/peor/primer 1.  Uso o no de memoria virtual
Uso de paginación, segmentación o ambas
ajuste, ...) 2. 
3.  Algoritmos empleados para los problemas de gestión de
  Políticas de reemplazo (óptima, LRU, FIFO, memoria
reloj, ...)   1 y 2 dependen del Hw disponible
  Gestión del conjunto residente (tamaño,   3 depende del Sw del SO
asignación fija/variable, reemplazo local/global)   Actualmente, casi todos SSOO ofrecen MV
  Políticas de vaciado (por demanda/previo) (DOS y primeros UNIX no)
  Control de carga   Al usar paginación+segmentación, la mayoría de
problemas surgen en la paginación
A.Ortigosa 41 A.Ortigosa 42

7
Políticas de Memoria Virtual Políticas de Memoria Virtual

  Factor clave para el diseño: rendimiento   Políticas del SO sobre la memoria virtual:
  Políticas de Lectura
  Minimizar porcentaje de fallos de páginas   Políticas de Ubicación
  (también cuando ejecuta parte de proceso   Políticas de Reemplazo
mientras busca página que falló para otro)   Gestión del Conjunto Residente
  Políticas de Vaciado
  Control de Carga
  No hay una política definitivamente mejor que
las otras

A.Ortigosa 43 A.Ortigosa 44

Políticas de Memoria Virtual Políticas de Lectura (fetch)

  Rendimiento depende de:   ¿Cuándo cargar una página en memoria principal?


  Tamaño de memoria principal   Paginación por demanda:
  Velocidad relativa de memoria principal y secundaria   Se carga la página sólo cuando hay fallo
  Tamaño y nº de procesos que compiten por los recursos   Muchísimos fallos al inicio
  Comportamiento de programas individuales:   Luego debe disminuir
Aplicación
 
  Paginación previa:
  Lenguaje de programación y compilador
  Estilo de programador   Aprovecha características de los discos
  Comportamiento de usuario (si programa es interactivo)   Se pueden cargar páginas innecesarias (si son la mayoría,
  => no hay una solución “mejor” política no efectiva)
  Distinto de intercambio de páginas (paso a suspendido)

A.Ortigosa 45 A.Ortigosa 46

Políticas de Ubicación Políticas de Reemplazo

  ¿Dónde va a residir una parte de un proceso   ¿Cuál es la página a reemplazar (de entre el
en la memoria principal? conjunto de candidatas)?
  Es una decisión importante en sistemas con   Gestión del Conjunto Residente (después):
segmentación   ¿Nº marcos de página a asignar para cada
  Mejor ajuste, primer ajuste, etc. proceso?
  Carece de importancia en sistemas con   ¿Reemplazar sólo páginas del propio proceso o
de cualquier otro?
paginación (con y sin segmentación).

A.Ortigosa 47 A.Ortigosa 48

8
Algoritmos básicos
Algoritmos de Reemplazo
de reemplazo
  Óptima
  Tras un fallo de página (FdP.), se debe elegir   Usada menos recientemente
qué página de memoria se lleva a disco para (LRU, Least Recently Used)
hacer sitio a la nueva página.   Primera en entrar, primera en salir (FIFO)
  Reloj
  Objetivo: reemplazar la página con menor   Reloj mejorado (NRU)
posibilidad de ser referenciada en un futuro   * Almacenamiento intermedio de páginas
cercano
=> intentar predecir comportamiento futuro en
  Ejemplo:
función del comportamiento pasado   Proceso al que se le asignan 3 marcos de memoria
  Cuanto + elaborada es la política, mayor   Secuencia de accesos para el proceso:

sobrecarga Sw y Hw Páginas = 232152453252

A.Ortigosa 49 A.Ortigosa 50

Algoritmo Óptimo Algoritmo Óptimo

  Se reemplaza la página que tenga que esperar   Comportamiento:


más tiempo para ser referenciada. 2 3 2 1 5 2 4 5 3 2 5 2
  Esta política genera el menor número de FdP. 2 2 2 2 2 2 4 4 4 2 2 2
3 3 3 3 3 3 3 3 3 3 3
  Problema: Es irrealizable ya que el SO no tiene 1 5 5 5 5 5 5 5 5
forma de saber cuándo se va a realizar un nuevo F F F F F F
acceso a una página.
  Es posible si se ejecuta en modo simulación, se Número de fallos de página = 3 + 3 iniciales
computan los accesos a las páginas, y esos cómputos
se utilizan en sucesivas ejecuciones
  Sirve como estándar de comparación
A.Ortigosa 51 A.Ortigosa 52

Algoritmo LRU Algoritmo LRU

  Página usada hace más tiempo   Comportamiento:


(Least Recently Used) 2 3 2 1 5 2 4 5 3 2 5 2
2 2 2 2 2 2 2 2 3 3 3 3
  Basado en Principio de Cercanía 3 3 3 5 5 5 5 5 5 5 5
  mirar al pasado y estimar cuál podría ser el uso 1 1 1 4 4 4 2 2 2
F F F F F F F
de la página en función de él
Número de fallos de página = 4 + 3 iniciales

A.Ortigosa 53 A.Ortigosa 54

9
Algoritmo LRU Algoritmo FIFO
  Ventaja: se acerca al algoritmo óptimo   Primera en entrar, primera en salir.
  Desventaja: difícil de implementar:   Supone que una página introducida hace mucho tiempo
puede haber caído en desuso
Implementación A:
  Tabla = Pila de nº de página   Cuando se produce un FdP. y no hay marcos libres, se
Tope = página más recientemente usada quita la página que lleve más tiempo en memoria
  Actualización de tabla lenta, aún usando Hw especial
  Buffer circular de marcos de un proceso + puntero
Implementación B:   Round Robin para eliminar páginas de memoria
  Contadores: Las entradas de la tabla de páginas tienen un campo de

‘tiempo de uso’ en el que el Manejador de Memoria escribe el tiempo   Sencillo de implementar


de cada referencia
  Cada acceso a memoria requiere búsqueda en tabla de páginas y una
  Puede no ser efectivo:
escritura en memoria   Regiones muy usadas durante toda la ejecución
  Requiere Hw especial

A.Ortigosa 55 A.Ortigosa 56

Algoritmo FIFO Algoritmo FIFO

  Comportamiento:   Implementación:
2 3 2 1 5 2 4 5 3 2 5 2   (a) Cada entrada de la tabla tiene un registro
2 2 2 2 5 5 5 5 3 3 3 3
asociado con el instante de carga de la página
3 3 3 3 2 2 2 2 2 5 5 Nº de página 2,3 Instante de entrada en tabla
1 1 1 4 4 4 4 4 2 0,1
F F F F F F F F F 1,2

  (b) El SO mantiene la tabla de páginas en orden de


Número de fallos de página= 6 + 3 iniciales antigüedad (FIFO)
+ antiguo 0
1
+ nuevo 2

A.Ortigosa 57 A.Ortigosa 58

Anomalía de Belady Algoritmo del Reloj


  Intenta buscar eficiencia ~ LRU, con menos sobrecarga
  Modificación del FIFO: da una 2ª oportunidad a cada
3 marcos = 9 F. de P.
página antes de quitarla de memoria

4 marcos = 10 F. de P.   Se utiliza un Bit de Uso (U):


  0 cuando se carga la página por primera vez
  1 cuando se referencia la página
  Páginas en cola circular, con puntero a la más antigua
  Si hay fallo y U=0, la página se reemplaza y se avanza el
puntero
Más marcos  más fallos de página!!!   Si U=1, se pone U=0, avanza y repite lo mismo hasta
encontrar página con U=0.
A.Ortigosa 59 A.Ortigosa 60

10
Algoritmo del Reloj Algoritmo del Reloj
Primer marco en el buffer n-1 0
n-1 0 circular de los candidatos al
reemplazo Página 9 Página 19 1
Página 9 Página 19 uso = 1 uso = 1
1 .
uso = 1 uso = 1 Página 1
. Página 1 uso = 0
uso = 1 .
. Puntero al
Página 45
2
Página 45
2 . siguiente marco
uso = 0
. uso = 1

Página 222 Página 191


Puntero al Página 191 uso = 0 uso = 0
Página 222 3
uso = 0
siguiente marco uso = 1 8
8 3
Página 33 Página 727
Página 33 Página 556 uso = 1 uso = 1
uso = 1 uso = 0 Página 67 Página 13
Página 13 7 uso = 1 uso = 0 4
Página 67
7 uso = 1 uso = 0 4
6 5
6 5 Figura 8.16. Ejemplo de funcionamiento de la política del reloj.
(b) Estado del buffer justo después del siguiente reemplazo de página
Figura 8.16. Ejemplo de funcionamiento de la política del reloj.
(a) Estado del buffer justo antes del reemplazo de página
A.Ortigosa 61 A.Ortigosa 62

Extensión Algoritmo del Reloj


Algoritmo del Reloj
(NRU)
  Comportamiento:   Todos los procesadores que proveen
2 3 2 1 5 2 4 5 3 2 5 2 paginación disponen de Bit de Modificación
2* 2* 2* 2* 5* 5* 5* 5* 3* 3* 3* 3*
3* 3* 3* 3 2* 2* 2* 2 2* 2 2*
  Es necesario para controlar que una página
1* 1 1 4* 4* 4 4 5* 5* modificada no se reemplace sin guardarla en
F F F F F F F F disco
apuntador
Bit de Uso = 1
  Se puede aprovechar este bit para mejorar el
*
Algoritmo del Reloj:
Número de fallos de página: 5 (+ 3 iniciales)
  Algoritmo NRU (de Uso No Reciente)

A.Ortigosa 63 A.Ortigosa 64

Algoritmo NRU Algoritmo NRU


1.  Se recorre buffer de marcos, sin cambiar U.
  Utilizando los bits de Uso (U) y Modificado Se selecciona para reemplazo el primer marco
(M) se definen cuatro clases de páginas: encontrado de clase 0 (U=0, M=0)
  Clase 0: Páginas no referenciadas ni modificadas
2.  Si falla 1, se recorre el buffer buscando marcos
(U=0,M=0)
de clase 1 (U=0, M=1).
  Clase 1: Páginas no referenciadas, modificadas
(U=0,M=1) Durante este recorrido, se pone U=0 en todos
  Clase 2: Páginas referenciadas no modificadas
los marcos por los que se pasa.
(U=1,M=0) Se selecciona para reemplazo el primer marco
  Clase 3: Páginas referenciadas, modificadas encontrado (copiar en disco la página).
(U=1,M=1) 3.  Si falla 2, se repite 1 y, si es necesario, 2
(ahora todos los marcos tienen U=0)
A.Ortigosa 65 A.Ortigosa 66

11
Algoritmo NRU Algoritmo NRU

  Comportamiento:   Reloj y NRU:


U M
Aunque haya que escribir en disco, se supone
2 3 2* 1 5* 2 4* 5* 3 2* 5 2*
2*,º 2*,º 2*,* 2*,* 2º,* 2*,* 2*,* 2*,* 3*,º 3*,º 3*,º 3*,º
que la página reemplazada tardará en ser
3*,º 3*,º 3*,º 5*,* 5*,* 5*,* 5*,* 5º,* 2*,* 2*,* 2*,* usada de nuevo (principio de cercanía)
1*,º 1º,º 1º,º 4*,* 4*,* 4º,* 4º,* 5*,º 5*,º

F F F F F F* F* F*   Ventaja NRU sobre reloj: entre las páginas


apuntador menos usadas, las no modificadas se
* Bit de Uso (Modificado) = 1
Bit de Uso (Modificado) = 0
reemplazan antes que las modificadas
º
=> ahorro de tiempo de escritura en disco
Número de fallos de página: 5 (+ 3 iniciales)
(sólo 3 exigen guardar la página en disco)
A.Ortigosa 67 A.Ortigosa 68

Almacenamiento Intermedio de Almacenamiento Intermedio de


páginas páginas
  Estrategia para mejorar rendimiento de   Lista de páginas libres = lista de marcos
paginación y utilizar política de reemplazo de disponibles para cargar páginas (se mantiene
páginas sencilla
un mínimo)
  Página reemplazada se asigna a una lista:
  Páginas libres, para páginas sin modificar   Listas ~ caché de páginas
  Páginas modificadas.
  No se quita de la memoria, sólo de la tabla de
páginas
  Reduce el coste de cargar páginas que han sido
reemplazadas hace poco tiempo
A.Ortigosa 69 A.Ortigosa 70

Bloqueo de Marcos Sw del Sistema Operativo

  Algunos marcos de la memoria principal   Políticas de lectura (previa / bajo demanda)


pueden estar bloqueados   Políticas de ubicación (mejor/peor/primer ajuste, ...)
  Políticas de reemplazo (óptima, LRU, FIFO, reloj, ...)
  Restricción a la política de reemplazo
  Gestión del conjunto residente (tamaño,
  La página de un marco bloqueado no puede ser asignación fija/variable, reemplazo local/global)
reemplazada   Políticas de vaciado (por demanda/previo)
  Utilizado para el núcleo del SO y otras áreas   Control de carga
críticas
  Se asocia bit de bloqueo a cada marco (en tabla
de marcos o tabla de páginas actual)
A.Ortigosa 71 A.Ortigosa 72

12
Tamaño del Conjunto Residente -
Tamaño del Conjunto Residente
Políticas
  SO debe decidir cuánta memoria asignar a un proceso   Asignación Fija: otorga a cada proceso un
(nº págs. a cargar en memoria principal). nº fijo de páginas.
  Factores que influyen en la decisión:   Se decide en la carga inicial, según tipo de proceso o
  Cuanto menos memoria necesite cada proceso, directrices del programador o administrador.
mayor cantidad de procesos en memoria   Cuando hay FdP., siempre se reemplaza una página
=> mayor probabilidad de procesos listos en memoria. del mismo proceso.
  Si hay pocas páginas de un proceso en memoria, aumenta   Problemas:
la probabilidad de FdP.   Desperdicia espacio si el proceso no necesita todos los
marcos que se le han asignado.
  Por encima de un determinado tamaño, más memoria no   Si el proceso necesita más marcos de los asignados, el
tendrá un efecto notable (por principio de cercanía). proceso no podrá ejecutarse correctamente, aunque en el
sistema haya muchos marcos vacíos.

A.Ortigosa 73 A.Ortigosa 74

Tamaño del Conjunto Residente -


Alcance del Reemplazo
Políticas
  Asignación Variable: el número de marcos de   Reemplazo Local: se elige una página del
un proceso cambia durante su vida. proceso que originó el FdP.
  Un proceso con alta tasa de FdP. recibe más marcos.   Puede utilizarse con Asignación Fija y Variable.
Un proceso con menos FdP. tendrá menos marcos.
 
  Reemplazo Global: todas las páginas de la
  La asignación variable es más potente pero memoria son candidatas a reemplazar.
costosa (más trabajo del SO, que debe evaluar
  Sólo tiene sentido con Asignación Variable.
comportamiento de procesos dinámicamente)
  Este tipo de asignación se relaciona con la
Política de Alcance del Reemplazo:
A.Ortigosa 75 A.Ortigosa 76

Gestión del conjunto residente Fija + Local

Reemplazo Reemplazo   Al cargar un nuevo proceso, se le asigna un


local global nº de marcos fijo (depende de aplicación y
solicitud del programa).
Asignación SI NO
  Desventajas:
fija
  Si pocas páginas, alto porcentaje de FdP
Asignación   Si muchas páginas, pocos programas
variable SI SI => procesador parado o intercambiando

A.Ortigosa 77 A.Ortigosa 78

13
Variable + Global Variable + Local

  Sencilla de implementar   Al cargar nuevo proceso, se le asigna un nº


marcos (paginación previa o bajo demanda)
  FdP=> nuevo marco libre para el proceso,
  Cuando hay un FdP., se selecciona una página
donde se carga la página => incrementa su del proceso que falló
tamaño
  De vez en cuando, se evalúa la asignación de un
  Dificultad: elección del reemplazo (entre proceso y se aumenta o disminuye para mejorar
todas menos las bloqueadas) el rendimiento global.
  Ayuda: Uso de memoria intermedia   Estrategia del Conjunto de Trabajo: se utiliza
para determinar el tamaño del conjunto
residente y el momento de los cambios
A.Ortigosa 79 A.Ortigosa 80

Conjunto de Trabajo Conjunto de Trabajo


  Cjto. de trabajo de un proceso en un instante t,
W(t, Δ): cjto. de págs. a las que el proceso ha
  Si nº marcos disponibles < tamaño del cjto.
hecho referencia en las últimas Δ unidades de de trabajo: fallos de pág. frecuentes
tiempo   Peligro: hiperpaginación
W crece con Δ.
proceso pasa más tiempo intercambiando
 

  W depende del instante t.:


puede ser desde 1 hasta nº total de págs. del proceso págs. que ejecutándose, y puede ‘robar’
  Su tamaño puede variar durante la ejecución págs. de otros procesos, provocando su
  Estabilidad: principio de cercanía hiperpaginación (trashing)
  Oscilaciones: indican desplazamiento del programa a
otra ubicación
A.Ortigosa 81 A.Ortigosa 82

Conjunto de Trabajo Conjunto de Trabajo

  Consecuencia del trashing:


  Problema:
reducción drástica del uso de CPU
¿Cómo calcular nº de marcos que un
  El planificador responde incrementando el
nivel de multiprogramación
proceso necesita?
=> aumenta nº procesos hiperpaginados ~
  Proceso se realimenta incrementalmente hasta ¿Cómo calcular tamaño del conjunto de
que el sistema se desploma trabajo para un proceso?
  La hiperpaginación se limita con asignación
local, y si se asigna a cada proceso un nº de
marcos suficiente.
A.Ortigosa 83 A.Ortigosa 84

14
Conjunto de Trabajo Conjunto de Trabajo
  Posible estrategia:
  Para calcular tamaño del cjto. de trabajo, se   Supervisar el conjunto de trabajo de cada proceso
Eliminar periódicamente del conjunto residente las páginas que no
utiliza el modelo de cjto. de trabajo
 

pertenezcan a su conjunto de trabajo


Un proceso se puede ejecutar sólo si conjunto de trabajo esta en memoria
Basado en el principio de localidad
 
  principal (en el conjunto residente)
(las págs. que se utilizan en cada momento se   Estrategia usada en muchos SSOO
  Problemas:
pueden agrupar en grupos que varían a lo largo   El pasado no siempre predice el futuro.
de la ejecución del proceso).   Es impracticable una medida real del conjunto de trabajo de cada proceso
  El valor óptimo del Δ a considerar es desconoc. y puede variar
  Ej:
una llamada a una función provoca un cambio de   Variaciones:
localidad.   Algoritmo de frecuencia de fallos de página
  Política de cjto. de trabajo con muestreos en intervalos variables

A.Ortigosa 85 A.Ortigosa 86

Sw del Sistema Operativo Políticas de Vaciado

  Políticas de lectura (previa / bajo demanda)   ¿Cuándo escribir en disco una página modificada?
  Políticas de ubicación (mejor/peor/primer   Vaciado por demanda:
ajuste, ...)   Se escribe página en disco sólo cuando se va a reemplazar
(antes de leer la siguiente)
  Políticas de reemplazo (óptima, LRU, FIFO,   Ventaja: Minimiza cantidad de páginas escritas en disco
reloj, ...)   Desventaja: Cada FdP produce 2 transferencias de página
  Gestión del conjunto residente (tamaño, => menor rendimiento
asignación fija/variable, reemplazo local/global)   Vaciado previo:
  Escribe las páginas modificadas antes de que se necesiten sus
  Políticas de vaciado (por demanda/previo) marcos
  Control de carga   Ventaja: Aprovecha las ventajas de escribir en el disco por lotes
  Desventaja: Posibles operaciones innecesarias
(escritura de páginas que son modificadas después)
A.Ortigosa 87 A.Ortigosa 88

Gestión de memoria
Políticas de Vaciado
Sw del SO

  Políticas de lectura (previa / bajo demanda)


  Alternativa: incorporar almacenamiento
  Políticas de ubicación (mejor/peor/primer ajuste, ...)
intermedio:
  Políticas de reemplazo (óptima, LRU, FIFO, reloj, ...)
  Páginas reemplazadas a lista de modificadas/no
modificadas   Gestión del conjunto residente (tamaño, asignación
fija/variable, reemplazo local/global)
  Lista de modificadas a disco periódicamente (y
pasan a no modif.)   Políticas de vaciado (por demanda/previo)
  Control de carga

A.Ortigosa 89 A.Ortigosa 90

15
Control de Carga Control de Carga

  Grado de multiprogramación: cuántos   Suspensión de procesos


procesos pueden estar en la memoria   ¿Qué proceso(s) debe(n) suspenderse para disminuir el
grado de multiprogramación?:
principal   Baja prioridad
Muchos FdP
Si hay pocos, posibilidad de que todos
 
 

  Último activado
bloqueados   Conjunto residente más pequeño
  Si hay muchos, aumenta frecuencia de FdP   Proceso mayor
Mayor ventana de ejecución restante
(posible hiperpaginación)  

  La elección depende
=> Se debe aumentar cuando el número de FdP (objetivos, tipo de programa)
sea pequeño y disminuir cuando sea grande

A.Ortigosa 91 A.Ortigosa 92

16

También podría gustarte