Memoria Virtual

Post on 05-Jul-2015

76 views 2 download

Transcript of Memoria Virtual

MEMORIA VIRTUAL EN WINDOWS

Absalón Emilio Vergara Martínez1150227

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.

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

¿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.

- 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.

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?

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:

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

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.

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

Modelos de Memoria Virtual

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

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

P0

P1

P2

P3

P4

P5

Zona Intercambio

13

28

Objeto Dirección Virtual

P1 13

P4 28

IdentificaciónPagina Desplazamiento

Pagina

EJEMPLO:

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

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

EJEMPLO:

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

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

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].

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?

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.

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

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

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

¡Gracias!

Absalón Vergara11502272010-II