Memoria Virtual - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Memoria Virtual

Description:

Cada proceso tiene su propio espacio de direcciones l gico virtual. ... Reemplaza la p gina con distancia forward (en el futuro) m s grande. W = a. b. c. pf ... – PowerPoint PPT presentation

Number of Views:705
Avg rating:2.0/5.0
Slides: 36
Provided by: universida52
Category:
Tags: fwd | memoria | virtual

less

Transcript and Presenter's Notes

Title: Memoria Virtual


1
Memoria Virtual
  • Gestión de Memoria Virtual

Pedro Rodríguez Moreno Arquitectura de
Computadores Departamento de Sistemas de
Información Facultad de Ciencias Empresariales
2
Tipos de Espacio de Direcciones
  • Espacio de Direcciones Reales la memoria
    principal o RAM de la máquina.
  • Espacio de Direcciones Lógica o Virtual la
    memoria que percibe o conoce el proceso. Cada
    proceso tiene su propio espacio de direcciones
    lógico virtual.
  • Existen tres momentos o tiempos para mapear
    direcciones lógicas a reales
  • Directa de lógica a física (o real) en tiempo de
    compilación.
  • Relocalización estática direcciones reales
    calculadas en tiempo de carga.
  • Relocalización dinámica direcciones reales
    calculadas en tiempo de ejecución.

3
Jerarquía de Almacenamiento
CPU
Caché de datos e Instrucciones
Memoria Principal
Controlador de Discos
Controlador Ethernet
Registros
Discos
Hacia Servidores de Archivos
  • La idea central es almacenar los datos más
    frecuentemente accesados en niveles de
    almacenamiento de menor capacidad (más cercanos
    a la CPU) y los datos menos frecuentemente
    accesados en dispositivos menos caros (pero de
    mayor capacidad).
  • En un sistema típico
  • La caché de instrucciones y los registros del
    procesador mantienen instrucciones y/o datos que
    actualmente están siendo accesados.
  • La memoria principal mantiene la porción menos
    frecuentemente usada de un programa.
  • El disco mantiene la porción de un programa no
    usada recientemente.
  • Servidores de archivos mantienen archivos
    remotos.

4
Paginación Ideas Generales
  • Los sistemas de paginamiento resuelven el
    problema de la asignación usando bloques de igual
    tamaño de memoria física (llamados page frames,
    marcos de página, o páginas físicas).
  • El espacio de direcciones lógico de un proceso se
    subdivide en páginas virtuales.
  • Las páginas virtuales deben ser cargadas en las
    páginas reales de memoria para lograr que un
    proceso se ejecute.
  • Un page fault o fallo de página, se produce
    cuando se hace referencia a una página que no
    está cargada en ningún marco de página.
  • Se requieren de estrategias de reemplazo de
    páginas (es decir, cuál página reemplazar, o page
    out) puesto que el espacio de direcciones virtual
    total de todos los procesos excede el tamaño del
    almacenamiento físico (por lo tanto, algunas
    páginas deben ser expulsadas de la memoria real,
    es decir, hacer page out sólo sobre esa página).
  • Objetivo minimizar el número de fallos de
    página.
  • Cuándo deber ser re-ingresada (page in) una
    página que ha sido expulsada (page out)?
  • Paginamiento por demanda traer una página (page
    in) cuando sea solicitada (es decir, cada vez que
    se detecte un page fault).
  • Prefetching traer un conjunto de páginas antes
    de comenzar un largo proceso de I/O, o bloqueo
    por scheduling.
  • Clustering traer varias páginas a la vez
    (paginamiento por demanda anticipada).

5
La Memoria Física Mantiene Algunas Páginas de
cada Proceso.
6
Paginación por demanda
  • Es la técnica mas popular para implementar
    memoria virtual.
  • Combina paginación con intercambio (swap).
  • Las páginas que se encuentran en memoria física
    se consideran como válidas.
  • Requerimientos Funcionales
  • Administración de Espacio de Direcciones.
  • Traducción de Direcciones.
  • Administración de Memoria Física.
  • Protección de Memoria.
  • Memoria Compartida.
  • Monitoreo de la Carga del Sistema.
  • Otras Prestaciones (mapeo de archivos en memoria,
    ejecución de programas en nodos remotos, enlace
    dinámico a librerías compartidas, área de swap).
  • Reemplazo de páginas eficiente.

7
Políticas de reemplazo de páginas
  • Estas políticas tienen que ver en cómo el kernel
    decide qué página expulsar desde memoria física.
  • El candidato ideal, es aquella página que nunca
    será solicitada nuevamente (páginas muertas).
  • Si no existen páginas muertas, entonces el kernel
    puede utilizar dos políticas de reemplazo local
    o global.
  • Local la página seleccionada es alguna de las
    páginas que pertenece al proceso. Son necesarias
    cuando es necesario garantizar ciertos tipos de
    recursos a los procesos.
  • Global página seleccionada puede ser de
    cualquier proceso. Son más simples de implementar
    y más adecuados para sistemas de tiempo
    compartido.
  • Idealmente se desea mantener en memoria aquellas
    páginas que van a ser necesitadas en el futuro.
    Este conjunto de páginas se denomina Working set
    o conjunto de trabajo.
  • No es posible determinar con antelación el
    desempeño en la referencia de páginas de un
    proceso, de ser así, se podría determinar con
    exactitud el conjunto de trabajo de cada proceso.
  • De acuerdo a esto, se ha determinado
    empíricamente que un proceso tiende a exhibir una
    cierta localidad de referencia.
  • Localidad de referencia quiere decir, que un
    proceso tiende a concentrar sus referencias en un
    cierto subconjunto pequeño de páginas, y este
    subconjunto cambia lentamente.

8
Requerimientos Hardware
  • MMU (Memory Management Unit) que la encontramos
    integrada en el microprocesador.
  • La principal tarea de la MMU es traducir las
    direcciones virtuales a direcciones reales.
  • Muchos sistemas utilizan, para la traducción,
    tablas de páginas, la TLB (Translation Look-Aside
    Buffer), o ambas.
  • Común y teóricamente, existe una tabla de páginas
    para el Kernel y otra para el proceso.
  • La MMU divide la dirección virtual en un número
    de página virtual y un offset (dentro de la
    página).
  • La MMU puede determinar que una traducción ha
    fallado por
  • Bound Error la dirección no cae dentro del rango
    de direcciones válidas. No existe una entrada en
    la tabla de página para esa página (segmentation
    fault).
  • Error de Validación La página está marcada cómo
    inválida. La página no está residente en memoria
    (page fault).
  • Error de Protección La página no permite el tipo
    de acceso deseado (intento de escribir sobre una
    página de sólo lectura).

9
Microprocesador Intel Pentium
10
Mecanismo de Traducción con paginación
Tabla de Páginas del Proceso
Espacio de Direcciones paginado del Proceso
Memoria Real
k bits 32 - k
0
0
0
1
2
1
1
.
.
2
v
r
v
Nro. de página real o marco de página
V, W, R, D r
Dirección Virtual
V O
Atributos Traducción
offset
Nro. de página virtual
r O
Dirección Real
Offset o desplazamiento dentro de la página
11
Paginación Multinivel
  • Objetivo evitar tener siempre en memoria tablas
    de páginas completas y muy grandes.
  • Solución dividir la tabla en sub-tablas y
    mantener en memoria sólo las que sean necesarias
    en cada momento

dirección lógica o virtual
Dirección física
Memoria Física
p2
p1
d
f
d
p1
p2
Tabla de páginas de nivel superior
Tablas de páginas de segundo nivel
12
Esquema de Paginamiento de dos Niveles en Intel
13
Entrada en la tabla de páginas bajo arquitectura
Intel
PFN Page Frame Number D Dirty A Accessed
(Referenced) U User (0)/Supervisor (1) W Read
(0)/Write (1) P Present (válido)
14
Uso de la TLB o memoria asociativa
Dirección Virtual
Número de Página P
Desplazamiento d
TLB
Acierto de TLB
Tag
Válido
Marco de página
d
N Página Entrada
Fallo de página
Fallo de TLB
N Marco f
d
f
Dirección Real
Memoria Principal
Memoria Secundaria
Tabla de Páginas
15
Algoritmos de Reemplazo de Páginas
16
Algoritmos de Reemplazo de Páginas Los mas malos
  • Random Es el peor de todos los métodos, pero
    fácil de implementar.
  • Fifo Reemplaza la página que lleva más tiempo
    residente en memoria real. Fácil de implementar
    puesto que la información de control es una lista
    FIFO de páginas.
  • Consideremos un proceso con 5 páginas y la
    secuencia de referencias
  • W 1 2 3 4 1 2 5 1 2 3 4 5
  • Supongamos que existen 3 páginas reales.

PF9
Páginas físicas
17
Optimo o ideal
  • Reemplaza la página con distancia forward (en el
    futuro) más grande.

PF7
Páginas físicas
18
LRU Least Recently Used
  • LRU ? Least Recently Used. Reemplaza la página
    con la distancia backward (en el pasado) más
    grande. Es decir, la menos recientemente usada.
  • Consiste en reemplazar aquella página que no
    halla sido referenciada en el mayor periodo. La
    idea de este algoritmo es que las páginas que no
    se han referenciado en un buen periodo de tiempo
    difícilnmente serán referenciadas en un tiempo
    cercano.
  • Es el mejor método que puede ser implementado
    debido a que el pasado es usualmente un buen
    indicador del futuro.
  • Esta estrategia requiere de una enorme asistencia
    del hardware es decir, se puede colocar un
    registro del tiempo de cada acceso en memoria
    dentro de la tabla de páginas o mantener una
    lista ordenada de referencias por páginas.
  • A veces es caro de implementar.

PF10
Páginas físicas
19
El Reloj (clock)
  • Es una variante de LRU y le da a cada página una
    segunda oportunidad de permanecer en memoria
    real.
  • Este algoritmo ordena las páginas reales en una
    lista circular, y la recorre en el sentido
    horario.
  • Cuando se inserta una nueva página, ésta tiene su
    bit R 0.
  • Por cada referencia a una página con V 1,
    entonces su bit R 1.
  • Cuando hay un page fault, se debe reemplazar la
    primera página que se encuentre cuyo bit R0.
  • También se le conoce como el algoritmo de
    reemplazo de segunda oportunidad.

20
Estrategia del reloj con una manecilla
a
b
c
21
Aplicación del algortimo del (1)
22
Aplicación del algortimo del (2)
Total PF 10
23
Algoritmo del reloj con dos manecillas
  • El algoritmo de aquí es igual al anterior solo
    que existen dos punteros, uno va delante del
    otro.
  • El primer puntero verifica el bit R de la página,
    si éste es igual a 1 se pone en 0, luego cuando
    pase el segundo puntero verifica el estado del
    bit R, si es 0 entonces intercambia la página
    sino lo pone en 0 y apunta a siguiente página.
  • El objetivo de este algoritmo es privilegiar a
    aquellas páginas mas referenciadas para que se
    queden en memoria.
  • Solaris utiliza este algoritmo.

24
El reloj con dos manecillas
25
Localidad de Referencias
  • Se da un fenómeno particular en los procesos en
    la cual éstos usan sólo un conjunto limitado de
    sus páginas durante un período de tiempo
    particular de su ejecución.
  • Este conjunto de páginas se denomina localidad
    del proceso durante ese tiempo.
  • Un proceso tiene buena localidad si sus
    referencias se concentran siempre en el mismo
    conjunto de páginas.
  • Si su localidad es mala el proceso tenderá a
    sufrir de muchos fallos de páginas.

26
Thrashing o Hiperpaginación
  • Concepto decimos que un sistema está en
    thrashing cuando pasa más tiempo paginando que
    ejecutando procesos.
  • Si el número de marcos disponibles es inferior al
    tamaño del conjunto de trabajo, se producirán
    frecuentes fallos de página.
  • Un proceso hiperpaginado pasa más tiempo
    intercambiando páginas que ejecutándose, y puedo
    robar páginas a otros procesos, provocando
    también su hiperpaginación.
  • Como consecuencia, hay una baja importante de
    performance del sistema, por lo tanto podría
    provocar un colapso del rendimiento, debido a los
    excesivos page faults.
  • El Thrashing está relacionado directamente con el
    grado de la multiprogramación.
  • En general, reduciendo el nivel de la
    multiprogramación se alivia este problema.
  • El demonio de páginas (pager, con PID 2), está a
    cargo de la paginación y debe mantener un
    conjunto de páginas físicas libres para evitar el
    thrashing.
  • La hiperpaginación significa simplemente que el
    proceso exhibe una mala localidad.

27
Mal uso de una estrucura de datos
include ltstdio.hgt include lterrno.hgt define
NUM_PAGES 1024 //número de páginas   int
matrizNUM_PAGES1024   main() int i,
j   for ( i0 i lt 300 i ) if (
fork() 0 ) proceso_hijo()   wait(0)
  proceso_hijo() int i,j   for ( j0
j lt 1024 j ) for ( i0 i lt NUM_PAGES
i ) matrizij rand() 100  
exit(0)
Peligroso, hiperpaginación!!
28
Leyendo la matriz por columnas Situación de
hiperpaginación.
  • Cada fila de la matriz ocupa una página.
  • El acceso es por columnas.
  • Cada número que accesa lo hará a través
  • de una página distinta.
  • Alto riesgo de hiperpaginación.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
. . .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
29
Situación normal
include ltstdio.hgt include lterrno.hgt define
NUM_PAGES 1024 //número de páginas   int
matrizNUM_PAGES1024   main() int i,
j   for ( i0 i lt 300 i ) if (
fork() 0 ) proceso_hijo()   wait(0)
  proceso_hijo() int i,j   for ( i0
i lt NUM_PAGES i ) for (j0 j lt 1024
j) matrizij rand() 100
exit(0)
30
Leyendo la matriz por columnas Situación de
hiperpaginación.
  • Cada fila de la matriz ocupa una página.
  • El acceso es por filas.
  • Cada número que accesa dentro de una fila
  • lo hará a través de la misma página.
  • Se minimiza el riesgo de hiperpaginación.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
. . .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 1024
31
Working Set o Conjunto de Trabajo
  • Conjunto de Tabajo (WS) Es el conjunto de
    páginas que un proceso requiere en un intervalo
    de tiempo de su ejecución.
  • Informalmente, el working set de un proceso en un
    momento dado se refiere a la colección más
    pequeña de sus páginas que deben residir en
    memoria real para asegurar algún nivel de
    eficiencia aceptable.
  • En el modelo del working set se permite la
    ejecución de un proceso si su working set se
    encuentra completamente en la memoria. Una página
    no puede ser removida (desde memoria) si ésta es
    un miembro del working set del proceso. Es típico
    encontrar que el tamaño de la ventana es de 1
    seg. (pero de tiempo de virtual de ejecución).
  • El concepto de conjunto de trabajo puede ser
    utilizado por el algoritmo de reemplazo de
    páginas, pues a parte de chequear, por ejemplo,
    el bit R se puede ver si esa página pertenece o
    no al conjunto de trabajo.

32
La estrategia del Working Set
  • Se define WSP(?t) como el conjunto de páginas
    virtuales del proceso P que han sido accesadas en
    los últimos ?t segundos de tiempo virtual de P.
  • La estrategia del working-set calcula para P el
    valor WSP(?t) cada vez que P completa ?t
    segundos de uso de la CPU (tiempo virtual). Esto
    se hace de la siguiente forma
  • Consultar el bit R de cada página q residente en
    memoria real de P.
  • Si el bit R de q está en 1, la página está en el
    WS y se coloca el bit en 0.
  • Sino, la página no ha sido accesada desde hace ?t
    segundos y por lo tanto no pertenece al WS de P.
    La página se agrega al conjunto C que agrupa las
    páginas candidatas a ser reemplazadas, de todos
    lo procesos.
  • Cuando ocurre un page-fault se lleva a cabo lo
    siguiente
  • Mientras C no esté vacío,
  • (a) Sea q una página en C.
  • (b) Extraer q de C.
  • (c) Si el bit R de q está en 0, se retorna q como
    la página elegida para ser reemplazada.
  • (d) Si el bit R está en 1, quiere decir que esa
    página fue accesada a pesar de no estar en el
    WS del proceso, por lo que se descarta y se
    contínua la búsqueda con otra página.
  • El conjunto C está vacío por lo que hay que hacer
    swapping.
  • Si una página pasa al conjunto C, el tiempo
    transcurrido desde su último acceso está
    comprendido entre ?t y 2?t.

33
Tamaño del Working Set
  • El tamaño del WS de un proceso depende de tres
    factores
  • La localidad de los accesos que haga el proceso a
    la memoria. Mientras mejor sea la localidad menor
    será el tamaño del working-set . Este es un
    factor que depende únicamente de las
    características del proceso.
  • El tiempo ?t entre cálculos del working-set.
    Mientras mayor sea esta cifra, mayor será la
    probabilidad de que una página haya sido accesada
    y por lo tanto mayor será el working-set. Este
    factor sí debe ser controlado por el scheduler de
    páginas del sistema operativo.
  • El tamaño de la página. En la práctica, el tamaño
    de una página es fijo para una arquitectura. Si
    fuese posible reducirlo a la mitad, el tamaño del
    WS en número de páginas crecería a un poco menos
    del doble.
  • Por lo tanto el único factor que puede controlar
    el scheduler de páginas es ?t. Este valor se
    hace variar en forma independiente para cada
    proceso en función del sobrecosto máximo tolerado
    para el paginamiento en demanda.

34
Resumen El potencial de la paginación por demanda
  • Extensión automática de la pila en caso de
    desborde.
  • Extensión explícita de los datos, es decir del
    segmento de datos del proceso (usando primitiva
    sbrk(int)).
  • Implementación de fork() es más eficiente.
  • Utiliza técnica copy-on-write, lo que significa
    que no copia automáticamente el segmento de datos
    y el pila.
  • El hijo recibe una copia del mapa de traducción
    de direcciones del padre y comparte esas páginas
    como sólo lectura.
  • Esas páginas son marcadas como copy-on-write.
  • Si el padre o el hijo tratan de modificar una
    página, entonces se produce un page-fault (porque
    las páginas están marcadas como sólo lectura).
  • El sistema crea un copia de escritura sólo de las
    páginas a modificar, y no hace una copia completa
    del epacio de direcciones.
  • Swapping de procesos, a cargo del proceso swapper
    (con PID 0).

35
Los threads y los Fallos de Páginas
  • Dependiendo del modelo que utilice un programa
    One-To-One, Many-To-One o Many-To-Many.
  • Para el Kernel de Solaris son los LPWs quienes
    producen PF por separado.
  • En Linux, también los threads pueden producir PF
    en forma separada.
  • Windows NT sucede algo similar a Linux.
Write a Comment
User Comments (0)
About PowerShow.com