Memoria Virtual

25

Transcript of Memoria Virtual

Page 1: Memoria Virtual
Page 2: Memoria Virtual

MEMORIA VIRTUAL EN WINDOWS

Absalón Emilio Vergara Martínez1150227

Page 3: Memoria Virtual

Historia

Hace muchos años, las personas se enfrentaban a programas demasiado grandes como para caber en la memoria disponible. La solución adoptada, por lo general, era dividir el programa en partes, llamadas capas. La capa 0 se ejecutaría en primer lugar. Al terminar, llamaría a la otra capa. Algunos sistemas por capas eran muy complejos y permitían que varias paginas estuvieran dentro de la memoria al mismo tiempo.

Page 4: Memoria Virtual

El problema consistía en que el trabajo de dividir el programa en partes debía ser realizado por el programador. La división de programas grandes en partes pequeñas o módulos, provocaba molestias y pérdida de tiempo.

Historia

Page 5: Memoria Virtual

¿Qué Es?

La memoria virtual es una técnica de gestión que, combinando hardware y software, permite la ejecución de programas parcialmente cargados en memoria real. Esta forma de trabajar aporta ventajas importantes:

- Si los programas se pueden ejecutar ‘por partes’, la memoria lógica puede ser mayor que la real disponible. Ya que el usuario podrá cargar programas de tamaño mayor al disponible en la memoria real.

Page 6: Memoria Virtual

- Ya que cada programa ocupa menos memoria real, se puede elevar el índice de multiprogramación y, por tanto, la eficiencia del sistema. Esto permite que dos o más procesos ocupen la misma unidad de memoria principal.

- Al cargar menos cantidad de cada programa se necesitan menos operaciones de E/S para las operaciones de carga e intercambio de los mismos.

Page 7: Memoria Virtual

Empieza por la primera instrucción. a lo largo de su ejecución, no siempre es necesario tener en memoria real todas las instrucciones de programa. el sistema operativo podría tomar sólo la parte de instrucciones y de datos que fueran realmente necesarios y copiarlos en la memoria, dejando el resto en el disco. En el momento que se requiera, las partes que están en el disco serán traídas a la memoria, regresando al disco las que ya no son “necesarias”, sustituyendo unas partes del programa por otras.

¿Como se logra?

Page 8: Memoria Virtual

Un programa de 1MB se puede ejecutar en una máquina de 256KB de memoria RAM, si se eligen con cuidado los 256KB del programa que deben permanecer en la memoria en cada instante; las partes de programa se intercambian entre el disco y la memoria conforme sea necesario.

Historia

EJEMPLO:

Page 9: Memoria Virtual

http://uvirtual.ufps.edu.co/moodle/mod/resource/view.php?id=2002

En un sistema con Memoria Virtual hay 3 espacios de direcciones:

Zona de Intercambio: Tabla De Relación Memoria Real

Page 10: Memoria Virtual

zona de Intercambio (swapping area): es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés "intercambiar".

Tabla De Relación: relaciona cada pagina /segmento cargado en memoria principal con el marco que lo contenga, o lo que es lo mismo, con su dirección inicial en memoria real.

Page 11: Memoria Virtual

En un sistema con Memoria Virtual los procesos generan direcciones virtuales que deben ser traducidas a reales para poder acceder a los recursos.

Dirección Virtual

M.M.U

(Memory Management Unity)Unidad de Manejo de Memoria

Dirección RealDISCO

RAM

Page 12: Memoria Virtual

Modelos de Memoria Virtual

• Paginación• Segmentación• Segmentación/Paginación• Paginación de varios niveles

Page 13: Memoria Virtual

La zona de intercambio se divide en zonas de igual tamaño, denominadas paginas. La memoria real se divide en zonas del mismo tamaño de la pagina, denominadas marcos de pagina. La dirección virtual en un sistema de paginación tiene la siguiente estructura:

PAGINACIÓN

IdentificaciónPagina Desplazamiento

DirecciónVirtual:

La primera sirve para encontrar la entrada correspondiente en la tabla depáginas en donde se encuentra la dirección del marco de página correspondiente. A esta se le suma el desplazamiento para encontrar la dirección real correspondiente

Page 14: Memoria Virtual

P0

P1

P2

P3

P4

P5

Zona Intercambio

13

28

Objeto Dirección Virtual

P1 13

P4 28

IdentificaciónPagina Desplazamiento

Pagina

EJEMPLO:

Page 15: Memoria Virtual

Dirección virtual de un sistema con paginación:

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

paginas

= 16 paginas c/u de tamaño= 4096 bytes= 4 KB

4(n) bits 12(m) bits

En el sistema habrán MáximoPaginas, cada una de tamaño bytes

Page 16: Memoria Virtual

Conceptos de sistemas operativos Escrito por Juan M. Morera Pascual, Juan A. Pérez-Campanero Atanasio, pag. 276

EJEMPLO:

Page 17: Memoria Virtual

0000

0001

0010

0011

0100

0101

0110

… …

1111

0000 0

0001 0

0010 0

0011 0 0

0100 0

0101 0 0

0110 0

.

...

1111 0

Z.I.

Tabla de Paginas

00

01

10

11

13

RAM

28

N.Pag

Bit p/a

B modf

Dir Marco

Id. Marcos de Pagina

0110 28 10 28

0010 13 00 13

13

28

1

1

00

10

EJEMPLO:

Dir. Virtual Dir. Real

Page 18: Memoria Virtual

15 000 0

14 000 0

13 000 0

12 000 0

11 111 1

10 000 0

9 101 1

8 000 0

7 000 0

6 000 0

5 011 1

4 100 1

3 000 1

2 110 1

1 001 1

0 010 1

N° Pag.

N° marco

P/A

Tabl

a D

e P

agin

as

Dirección virtual entrante : 8196

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

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

Pag Virtual=2Se usa como índice En la TPs

Desplazamiento de 12 bits,Copiada directamente de Entrada a la de salida

Dirección física saliente: 24580

Traducción Dirección Virtual -> Dirección Real

Page 19: Memoria Virtual

Asignación de Memoria Localidad De Los Procesos:

Todo programa esta compuesto por varias partes o subrutinas de forma que su ejecución se realiza por fases, una tras otra. Durante cualquier fase el proceso direcciona sólo una pequeña parte de sus páginas, fracción que cambiará al cambiar de fase de ejecución. Este comportamiento se conoce como localidad de referencias de los procesos y con su ayuda podemos conocer el numero mínimo de marcos que requiere un proceso para evitar una situación de ‘Hiperpaginación’ [el procesador Consume mayor tiempo paginando que procesando].

Page 20: Memoria Virtual

La localidad se debe a que cuando se diseña y desarrolla un programa se construye reuniendo las rutinas por tipos y se trabaja en bucles y dentro de estos, sobre arrays de datos, los cuales, por lo tanto, están próximos entre sí, es decir, se diseña pensando, aunque sea inconscientemente, en una localidad espacial de los datos y de las instrucciones. Además al ejecutar estos programas, las instrucciones se ejecutarán una tras otra, con lo que las referencias a las direcciones de dichas rutinas en la memoria irán seguidas o muy próximas entre sí, dando lugar a la localidad temporal, ya que dichas referencias irán cambiando lentamente con el tiempo según se vaya ejecutando el programa.

¿A qué se debe?

Page 21: Memoria Virtual

Conjunto De TrabajoLa técnica del conjunto de trabajo (working set) se utiliza para cuantificar la localidad de los procesos con el fin de asignarle a cada uno la memoria que realmente necesita. Se define el conjunto de trabajo W(t,w) de un proceso en el instante t, como el conjunto de paginas utilizadas por ese proceso en el intervalo de tiempo, donde W representa el conjunto de trabajo, w es el tamaño de la ventana, o numero de referencias seguidas que se utilizan para determinar W, y t es el instante en que se consideran las referencias para su análisis. Lógicamente, t coincidirá con el final de una ventana.

Page 22: Memoria Virtual

EjemploA continuación una secuencia de referencias de memoria en proceso.Si w=10, el conjunto de trabajo (ordenado) en el tiempo t1 es W=(1,2,5,6,7) y en t2 es W=(1,2,3,4)

Conceptos de sistemas operativos Escrito por Juan M. Morera Pascual, Juan A. Pérez-Campanero Atanasio, pag. 301

Page 23: Memoria Virtual

SegmentaciónLa segmentación es una técnica distinta de la memoria que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno aun cuerpo central desde el que se bifurca a otras partes, rutinas o se accede a zonas de datos(tablas, pilas, matrices, etc.). Desde este punto de vista el programa es un conjunto de componentes lógicos de tamaño variable, un conjunto de segmentos.

Conceptos de sistemas operativos Juan M. Morera Pascual, Juan A. Pérez-Campanero Atanasio, pag. 303

Page 24: Memoria Virtual

SegmentaciónDe esta manera, el espacio lógico de direcciones se puede considerar como un conjunto de segmentos, cada uno definido por su tamaño y número. Toda dirección lógica se expresará mediante dos valores: numero de segmento s y desplazamiento dentro del segmento d. La segmentación del programa la realizará el compilador.

Conceptos de sistemas operativos Juan M. Morera Pascual, Juan A. Pérez-Campanero Atanasio, pag. 304

Será necesario transformar cada dirección lógica(s,d) en una dirección real unidimensional(r). Esta conversión la realiza un dispositivo especial de hardware consultando la Tabla de segmentos correspondiente. Ante cada dirección lógica(s,d) requerida por el procesador, el sistema accede a la entrada ‘s’ de la TSg activa y compara ‘d’ con el limite indicado en dicha entrada. Si ‘d’ es menor le sumará la dirección base del segmento, obteniendo la dirección real correspondiente. Si es mayor, interceptará una petición indicando un error de direccionamiento

Page 25: Memoria Virtual

¡Gracias!

Absalón Vergara11502272010-II