Memoria virtual

27
JORGE EDUARDO RODRIGUEZ CORTES SISTEMAS OPERATIVOS ANA GARZON (docente) FUNDACION UNIVERSITARIA SAN MATEO FUS 2010

Transcript of Memoria virtual

JORGE EDUARDO RODRIGUEZ CORTES

SISTEMAS OPERATIVOS

ANA GARZON

(docente)

FUNDACION UNIVERSITARIA SAN MATEO

FUS

2010

MEMORIA VIRTUAL

La memoria virtual es una técnica de

administración de la memoria real que

permite al sistema operativo brindarle al

software de usuario y a sí mismo un

espacio de direcciones mayor que la

memoria real o física.

TIPOS DE MEMORIA

La mayoría de los ordenadores tienen

cuatro tipos de memoria: registros en la

CPU, la memoria caché (tanto dentro como

fuera del CPU), la memoria física

(generalmente en forma de RAM, donde la

CPU puede escribir y leer directa y

razonablemente rápido) y el disco duro que

es mucho más lento, pero también más

grande.

cuando el sistema operativo permite múltiples procesos y

aplicaciones corriendo simultáneamente el sistema requiere el

acceso a más información que la que puede ser mantenida en

memoria física.

La solución al problema de necesitar mayor

cantidad de memoria de la que se

posee, consiste en que las aplicaciones

mantengan parte de su información en

disco, moviéndola a la memoria principal

cuando sea necesario.

Una opción es que la aplicación misma

sea responsable de decidir qué

información será guardada en cada

sitio (segmentación), y de traerla y

llevarla.

Cuando se usa Memoria Virtual, o cuando

una dirección es leída o escrita por la

CPU, una parte del hardware dentro de la

computadora traduce las direcciones de

memoria generadas por el software

(direcciones virtuales) en: La dirección real

de memoria (la dirección de memoria

física), o una indicación de que la

dirección de memoria deseada no se

encuentra en memoria principal (llamado

excepción de memoria virtual).

FRAGMENTACION

La fragmentación es la memoria que queda

desperdiciada al usar los métodos de

gestión de memoria que se vieron en los

métodos anteriores. Tanto el primer ajuste,

cómo el mejor y el peor producen

fragmentación externa.

La fragmentación es generada cuando

durante el reemplazo de procesos quedan

huecos entre dos o más procesos de

manera no contigua y cada hueco no es

capaz de soportar ningún proceso de la lista

de espera.

La fragmentación puede

ser:

Fragmentación Externa: existe el espacio

total de memoria para satisfacer un

requerimiento, pero no es contigua.

Fragmentación Interna: la memoria

asignada puede ser ligeramente mayor

que la requerida; esta referencia es interna

a la partición, pero no se utiliza.

PAGINACION

En sistemas operativos de computadoras, los

sistemas de paginación de memoria dividen

los programas en pequeñas partes o páginas.

Del mismo modo, la memoria es dividida en

trozos del mismo tamaño que las páginas

llamados marcos de página.

Tablas de páginas

Son usadas para realizar las traducciones de

direcciones de memoria virtual (o lógica) a

memoria real (o física) y en general el sistema

operativo mantiene una por cada proceso

corriendo en el sistema.

En cada entrada de la tabla de paginación (en

inglés PTE, Page Table Entry) existe un bit de

presencia, que está activado cuando la página

se encuentra en memoria principal.

Ventajas de la paginación

Es posible comenzar a ejecutar un programa, cargando

solo una parte del mismo en memoria, y el resto se

cargara bajo la solicitud.

No es necesario que las paginas estén contiguas en

memoria, por lo que no se necesitan procesos de

compactación cuando existen marcos de paginas libres

dispersos en la memoria.

Es fácil controlar todas las páginas, ya que tienen el

mismo tamaño.

El mecanismo de traducción de direcciones (DAT) permite

separar los conceptos de espacio de direcciones y

espacios de memoria. Todo el mecanismo es transparente

al usuario.

Se libera al programador de la restricción de programar

para un tamaño físico de memoria, con lo que s e aumenta

su productividad. Se puede programar en función de una

memoria mucho más grande a la existente.

Al no necesitarse cargar un programa completo en

memoria para su ejecución, se puede aumentar el número

de programas multiprogramándose.

Se elimina el problema de fragmentación externa.

Desventajas de la paginación

El costo de hardware y software se incrementa, por

la nueva información que debe manejarse y el

mecanismo de traducción de direcciones

necesario. Se consume mucho más recursos de

memoria, tiempo en el CPU para su implantación.

Se deben reservar áreas de memoria para las PMT

de los procesos. Al no ser fija el tamaño de estas,

se crea un problema semejante al de los

programas (como asignar un tamaño óptimo sin

desperdicio de memoria, u "ovearhead" del

procesador).

Aparece el problema de fragmentación interna. Así, si se

requieren 5K para un programa, pero las paginas son

de 4K, deberán asignárseles 2 páginas (8k), con lo que

quedan 3K sin utilizar. La suma de los espacios libres

dejados de esta forma puede ser mayor que el de varias

páginas, pero no podrá ser utilizados.

Debe asignarse un tamaño promedio a las

páginas, evitando que si son muy pequeñas, se

necesiten TABLAS BMT y PMT muy grandes, y si son

muy grandes, se incremente el grado de fragmentación

interna.

SEGMENTACION

Es un método por el cual se consigue aumentar el

rendimiento de algunos sistemas electrónicos digitales. Es

aplicado, sobre todo, en microprocesadores.

El nombre viene de que para impulsar el gas en un

oleoducto a la máxima velocidad es necesario dividir el

oleoducto en tramos y colocar una bomba que dé un nuevo

impulse al gas. El símil con la programación existe en que

los cálculos deben ser registrados o sincronizados con el

reloj cada cierto tiempo para que la ruta crítica (tramo con

más carga o retardo computacional entre dos registros de

reloj) se reduzca.

Desventajas de la segmentación

El programador puede conocer las unidades lógicas de su

programa, dándoles un tratamiento particular.

Es posible compilar módulos separados como segmentos el

enlace entre los segmentos puede suponer hasta tanto se

haga una referencia entre segmentos.

Debido a que es posible separar los módulos se hace más

fácil la modificación de los mismos. Cambios dentro de un

modulo no afecta al resto de los módulos.

Es fácil el compartir segmentos.

Es posible que los segmentos crezcan dinámicamente según

las necesidades del programa en ejecución.

Desventajas de la segmentación

Hay un incremento en los costos de hardware y de software

para llevar a cabo la implantación, así como un mayor

consumo de recursos: memoria, tiempo de CPU, etc.

Debido a que los segmentos tienen un tamaño variable se

pueden presentar problemas de fragmentación externas, lo

que puede ameritar un plan de reubicación de segmentos en

memoria principal.

Se complica el manejo de memoria virtual, ya que los discos

almacenan la información en bloques de tamaños fijos,

mientras los segmentos son de tamaño variable. Esto hace

necesaria la existencia de mecanismos más costosos que los

existentes para paginación.

Al permitir que los segmentos varíen de tamaño, puede ser necesarios

planes de reubicación a nivel de los discos, si los segmentos son

devueltos a dicho dispositivo; lo que conlleva a nuevos costos.

No se puede garantizar, que al salir un segmento de la memoria, este

pueda ser traído fácilmente de nuevo, ya que será necesario encontrar

nuevamente un área de memoria libre ajustada a su tamaño.

SEGMENTACION PAGINADA

Tanto la paginación como la segmentación tienen sus

ventajas y desventajas. También es posible combinar

estos dos esquemas para mejorar ambos. Veamos

como ejemplo el esquema del ordenador GE 645 con el

sistema operativo Multics.

Las direcciones lógicas estaban formadas a partir de un

número de segmento de 18 bits y un desplazamiento

de 16 bits.

unque este esquema crea un espacio de direcciones

correspondiente a una dirección de 34 bits, la tabla de

segmentos tiene un tamaño tolerable, puesto que el

número variable de segmentos conduce naturalmente

al uso de un Registro de Longitud de Tabla de

Segmentos.

Necesitamos tan solo el mismo número de entradas

en la tabla de segmentos que segmentos; no tenemos

por qué tener entradas vacías en la tabla de

segmentos.

ALGORITMOS DE REEMPLAZO DE PÁGINA

Existen diferentes algoritmos, entre ellos:

Algoritmo óptimo

Algoritmo FIFO

Algoritmo LRU

Algoritmos de aproximación al LRU

ALGORITMO OPTICO

Se reemplaza la página que va a tardar más

tiempo en ser usada

La tasa de fallos es la más baja posible

Algoritmo imposible de realizar

Criterio comparativo

ALGORITMO FIFO

Algoritmo FIFO muy sencillo de implementar

Inconvenientes:

Rendimiento del algoritmo pobre, paginas

frecuentemente usadas pueden ser sustituidas

Se puede presentar anomalía de belady:

aumento del número de fallos de pagina al

aumentar el número de marcos

ALGORITMO LRU (LEAST RECENTLY USED)

Si el bit de referencia está desactivado, se sustituye la página

Algoritmo de aproximación al reemplazo óptimo

Basado en utilizar el pasado reciente como una predicción del futuro más próximo

Sustituye la página menos usada en el pasado inmediato

Carece de la anomalía de Belady

La implementación requiere de hardware adicional:

Campo en las entradas de la tabla de páginas

Pila de las páginas en memoria

ALGORITMO DE RELOJ GLOBAL

Se colocan todas las páginas que pueden ser

sustituidas en una lista circular

Un proceso de sistema borra los bits de referencia

cada cierto tiempo utilizando un puntero giratorio

Si en la siguiente vuelta el bit sigue desactivado, la

página en cuestión es una buena candidata a ser

sustituida

ALGORITMO DE NFU (Not frecuently used)

Algoritmo que simula por software el algoritmo

LRU

Utiliza un contador asociado a cada página que

se incrementa en cada interrupción de reloj de

acuerdo con el valor del bit de referencia

En cada pulso de reloj se borra el valor del bit de

referencia

Si hay un fallo de página se elige la página con

el valor mínimo del contador para su sustitución