Está en la página 1de 74

Administracin de Memoria

Objetivos

Analizar formas de administracin de memoria real y virtual Comparar algoritmos de asignacin de memoria Estimar cuanta memoria requiere un sistema

Problemas de la administracin de memoria

Crecen los requerimientos de usuario


Ms memoria y ms rpida

Pero, la memoria ms rpida es ms cara las computadoras tiene una jerarqua de memoria.

Modelos de administracin

Memoria real Memoria virtual

Administracin de memoria Real

Opciones de diseo:
Monoprogramacin
Un programa en ejecucin

Multiprogramacin
Muchos programas en ejecucin

Monoprogramacin

Caractersticas
Un slo un programa en la memoria a la vez Comparte la memoria con el sistema operativo (SO)

Metodologa de anlisis de un diseo de sistema de memoria


1. Algoritmos de:
Asignacin:

A que programa asignar? Cuanta memoria? Cuando?

Liberacin

1. Hardware adicional 2. seguridad

Asignacin de memoria contigua


MP Memoria asignada

rea del usuario

Programa

desperdicio rea del sistema SO

Ejemplo, MS-DOS

Asigna en direcciones contiguas (crecientes) de memoria:


sistema operativo (SO) programa de usuario manejadores de dispositivos (en ROM)

el SO sube (hace la carga: load) el programa en la memoria y lo ejecuta. Cuando el programa termina, el SO solicita un nuevo comando
carga el nuevo programa en la memoria, sobreescribiendo el anterior.

Anlisis
+ Asignacin simple liberacin de memoria simple + no requiere hardware adicional para administrar

Problemas:
- alto desperdicio - mono programacin

Asignacin de memoria particionada


La monoprogramacin usa la CPU ineficientemente Solucin:


Multiprogramacin

La idea es dividir la memoria en mltiples partes:


Memoria particionada esttica Memoria particionada dinmica

Multiprogramacin con particiones fijas

Las ventajas
multiprogramacin
aumentan la utilizacin de la CPU

Concepto:
divide la memoria en N particiones fijas y de tamaos no necesariamente iguales

Cmo funciona?
Part. A Part. B Algoritmo de asignacin: Se busca en la lista de particiones libres la particin >= al tamao solicitado Algoritmo de liberacin: pasar la particin de la lista de part. Ocupadas a lista de part. Libres.

Desperdicio Fragmentacin interna

Part. C

ocupada libre

Part. D

Anlisis

+multiprogramacin +relativamente simple de administrar Seguridad


simple

Problemas:
Fragmentacin interna (memoria asignada pero no utilizada)

Multiprogramacin con particiones variables (MVT)

Asigna dinmicamente la memoria

Prgd Prg b Prgc


SO

libre

Asignacin
Tabla de particiones ocupadas
#p #p ar ar Direccin Direccin de innicio de inicio tama tama oo

A
Tabla de particiones libres
#pa r #p ar 1 1 2 Direcci taman Direcci o Tama n de n de o inicio inicio D 200 KB B 30 KB D 200 KB

MP

B C D

1 1 2 2 3

A A B C C

50 KB 50 KB 30 KB 150 KB 150 KB

Enlace dinmico (dynamic binding)

Las particiones ya no son fijas, si no que van cambiando dinmicamente, tanto en cantidad como en ubicacin y tamao. cuando un proceso es pasado a disco (planificador a largo plazo), no hay ninguna garanta de que vuelva a quedar en la misma posicin de memoria al traerlo de vuelta, de manera que es imprescindible el apoyo del hardware para hacer enlace en tiempo de ejecucin.

Algoritmos de asignacin

Por la forma que se ordena la tabla de Part. Libres.


Primer ajuste
la tabla se ordena por orden creciente de direcciones de inicio

Mejor ajuste
la tabla se ordena por orden creciente de tamao de particin

Peor ajuste
la tabla se ordena por orden decreciente de tamao de particin

Prximo ajuste >> tarea para la casa

Algoritmos de liberacin

Simple de implementar : Analiza la tabla de particiones libres para ver si se pueden integrar particiones libres

termina termina

termina

Problema de MVT

Fragmentacin externa

Es posible que haya suficiente espacio libre como para agregar un proceso a la memoria, pero no es contiguo Solucin:

reubicar

Reubicacin

La idea es compactar para obtener una nica particin libre Es necesario mover los procesos de manera que queden contiguos

Anlisis

Si no hay una particin suficientemente grande, entonces compactar No hay fragmentacin Problema:
El tiempo de compactacin puede degradar el tiempo de respuesta de los usuarios Si el tiempo de acceso a la memoria es tacc, Para mover cada registro de memoria se requerirn 2tacc (uno para leer y el otro tiempo para escribir) Una maquina de 256 MB, para mover el 50% se requerir 128*1024*1024*2*60x10-9 segundos = 15 seg.

Reubicacin y swapping
A

Si al compilar no se conocen todava las direcciones absolutas, hay que generar cdigo reubicable El cargador o loader, es responsable de determinar las direcciones absolutas al momento de poner el programa en memoria Si compactando no hay suficiente espacio en memoria, que hacer? Respuesta: bajar un proceso a disco y cargar el nuevo programa (swapping) e.d. pasar procesos a disco para hacer espacio en la memoria

B C

Problemas con la Entrada/Salida

Supongamos que proceso A trata de leer del disco hacia la direccin d, pero el dispositivo est ocupado: su solicitud, por lo tanto, se pone en la cola. Entretanto, el proceso A es intercambiado a disco y la operacin se completa cuando A no est en memoria. En esas circunstancias, lo ledo se escribe en la direccin d, que ahora corresponde a otro proceso. Para evitar el desastre (crash): no pasar a disco procesos con I/O pendiente, o bien hacer siempre I/O desde y hacia buffers del sistema operativo.

Windows 3.x

Windows 3.x usa swapping, pero un proceso pasado a disco slo vuelve a la memoria si el usuario activa su ventana Windows NT es multihilo Unix comienza a usar swapping cuando se supera un cierto lmite de utilizacin de memoria

Seguridad

Sistemas multiproceso
un programa ejecutando en una particin no pueda leer ni escribir la memoria que corresponde a otra particin.

usar un registro base y lmite Cuando se carga un programa en una particin, se hace apuntar base al comienzo de la particin y lmite se fija como la longitud de la particin.

Algoritmo de control

Cada vez que la CPU quiere acceder a la direccin d, el hardware se encarga de que en realidad se acceda a la direccin fsica
base+d

por supuesto, adems se verifica que


d < lmite

d es la direccin lgica o virtual, y base+d la direccin fsica

Administracin de la memoria con mapas de bits

Dividir la memoria en pequeas unidades y registrar en un mapa de bits (con tantos bits como unidades haya)
0 1 1 1 1 0 0 1 1 1 1

las unidades ocupadas se marcan con un 1 y las desocupadas con un 0

problema

Las unidades pueden ser de unas pocas palabras cada una, hasta de un par de KB A mayor tamao de las unidades, menor espacio ocupa el mapa de bits, pero puede haber mayor fragmentacin interna Desventaja:
para encontrar un espacio de N unidades hay que recorrer el mapa hasta encontrar N ceros seguidos

Administracin de la memoria con listas enlazadas

Lista enlazada de segmentos:


estado (ocupado o en uso), direccin (de inicio), tamao.

Cuando un proceso termina o se pasa a disco


si quedan dos particiones juntas, se juntan en un solo segmento.

Memoria Virtual

Por qu se denomina Memoria Virtual?

Extender la memoria de manera virtual, es hacer que el proceso tenga la ilusin de que la memoria es mucho ms grande que la memoria fsica.

Hardware de memoria virtual


Problema: el espacio de direcciones de memoria virtual es mayor que el espacio de direcciones de memoria fsica

Solucin: Nuevo Hardware El Memory Manageme nt Unit (MMU)

El Memory Management Unit (MMU)


Address bus /32 MMU /28

El programa de usuario slo ve direcciones lgicas La unidad de administracin de memoria (MMU) traduce a direcciones fsicas.

Problema

Los procesos tengan que usar un espacio contiguo de la memoria era un impedimento serio para poder optimizar el aprovechamiento de la memoria
Idea: que las direcciones lgicas sean contiguas, pero que no necesariamente correspondan a direcciones fsicas contiguas Solucin: dividir la memoria fsica en bloques de tamao fijo, llamados marcos o frames y dividir la memoria lgica (la que los procesos ven) en bloques del mismo tamao denominados pginas

Mecanismo de mapeo
Se necesita el apoyo del hardware (MMU) Cmo funciona? Cada vez que la CPU intenta acceder a una direccin, la direccin virtual se divide en nmero de pgina p y

desplazamiento (offset) d El nmero de pgina se transforma en el frame (marco de pgina) correspondiente, antes de acceder fsicamente la memoria Direccion virtual p d
MMU f d

Direccion fisica

Paginacin
Direccin virtual
31

d
0

Tabla de mapa de Pgina (TMP)

TMP frame

MMU

Direccin real
27 0

Memoria Virtual
00000000H
0 1 2 i

MMU
Tabla de Mapa de Pagina (TMP) Prg. A 00000H 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . FFFFFH

Memoria Fisica

# Pagina estado # Marco


0 1 2 3 1 1 1 1 TMP Prg. B 3 12 4 1

FFFFFFFFH

# Pagina estado # Marco


0 1 2 1 1 1 TMP Prg. C 0 13 10

32 bits

#Marco PID 1 102 2 204 3 3572 5 6 . FFFFFH

# Pagina estado # Marco


0 1 1 1 15 7

Tamao de pgina

Cmo elegir el tamao de pgina? El tamao de las pginas es una potencia de 2, tpicamente entre 0.5 y 8K.

Tablas de pgina

Cada proceso tiene su propia tabla, es decir, la tabla de pginas forma parte del contexto: Cuando la CPU se concede a otro proceso, hay que cambiar la tabla de pginas a la del nuevo proceso. La paginacin en general encarece los cambios de contexto. La seguridad sale gratis, ya que cada proceso slo puede tener acceso a las pginas que estn en su tabla de pginas.

Fragmentacin?

Slo interna, y de media pgina por proceso, en promedio. Esto sugerira que conviene usar pginas chicas, pero el problema es que aumenta el sobrecosto de administrar las pginas (entre otras cosas, aumenta el tamao de la tabla de pginas). En general, el tamao de pgina ha ido aumentando con el tamao de la memoria fsica de una mquina tpica.

Tablas de Mapas de Pginas

En una CPU moderna, m=32 (y ahora, incluso, 64), y n=12 o 13, lo que significa que se requeriran cientos de miles de entradas: ya no es posible tener la tabla en registros.

Solucin

Manejar la tabla de pginas de cada proceso completamente en memoria y usa slo un registro que apunte a la ubicacin de la tabla. Para cambiar de un proceso a otro, slo se cambia ese registro. Ventaja: agregamos slo un registro a la conmutacin de contexto.

Desventaja

El costo de cada acceso La memoria se duplica, porque primero hay que accesar la tabla (indexada por el nmero de pgina). sin paginacin costaba 10ns cada acceso, y ahora cuesta 20!

Solucin tpica (intermedia)

Usar un pequeo y rpido cach especial de memoria asociativa, llamado translation lookaside buffer (TLB) Memoria Asociativa
La memoria asociativa guarda pares (clave, valor) y cuando se le presenta la clave, busca simultneamente en todos sus registros, y retorna, en pocos nanosegundos, el valor correspondiente.

TLB en procesadores Intel

por pequeo que sea el TLB, la probabilidad de que la pgina est en el TLB (tasa de aciertos) es alta, debido a que los programas suelen hacer muchas referencias a unas pocas pginas
por ejemplo, copiar un arreglo.

Si la tasa de aciertos es del 90% y un acceso al TLB cuesta 10 ns, entonces, en promedio, cada acceso a memoria costar 87 ns o sea, slo un 24% ms que un acceso sin paginacin. Una Intel x86 tiene 32 entradas en el TLB

Segmentacin

Ms cerca del programador

Cuando se usa paginacin, el sistema divide la memoria para poder administrarla, no para facilitarle la vida al programador Lo que ocurre es que la vista lgica que el programador tiene de la memoria no tiene nada que ver con la vista fsica que el sistema tiene de ella

Compartir segmentos

Paginacin:
El sistema ve un slo gran arreglo dividido en pginas

Cuando uno programa, uno piensa en trminos de un conjunto de subrutinas y estructuras de datos A las cuales se refiere por su nombre: la funcin coseno, el stack, la tabla de smbolos, sin importarnos su ubicacin en memoria, y si acaso una est antes o despus que la otra.

Enlace dinmico (dynamic binding)

La segmentacin permite que el usuario vea la memoria


como una coleccin de segmentos, cada uno de los cuales tiene un nombre y un tamao (que, adems, puede variar dinmicamente).

Las direcciones lgicas se especifican como un par (segmento, desplazamiento).

Mapeo
s d

Transformacin mediante la tabla de segmentos (TMS)

base MMU

Similar a paginacin: en vez de tabla de pginas, hay una tabla de segmentos; para cada programa Es necesario saber su tamao y dnde comienza (direccin base). Una direccin virtual (s,d), se traduce a base(s)+d. Si d es mayor que el tamao del segmento, entonces ERROR.

Ventajas:

Al usuario se le simplifica el manejo de estructuras de datos de tamao dinmico. Se facilita el que los procesos compartan memoria. Los segmentos pueden estar protegidos segn la semntica de su contenido.

Problema de la segmentacin

Pero la memoria sigue siendo, fsicamente, un slo arreglo de bytes, que debe contener los segmentos de todos los procesos. A medida que se van creando y eliminando procesos, se va a ir produciendo, inevitablemente fragmentacin externa.
Huecos

Segmentacin y Paginacin

Eliminando la fragmentacin externa

Para eliminar completamente el problema de la fragmentacin externa, se puede usar una combinacin de segmentacin y paginacin, en la que los segmentos se paginan

Segmentacin paginada en Pentium

En una Pentium
8K segmentos privados 8K segmentos globales compartidos con todos los otros procesos.

Existe una tabla de descripcin local (LDT) y una tabla de descripcin global (GDT) con la informacin de cada grupo de segmentos. Cada entrada en esas tablas tiene 8 bytes con informacin detallada del segmento, incluyendo su tamao y direccin.

Cache en Intel

Una direccin lgica es un par (selector, desplazamiento), donde el desplazamiento es de 32 bits y el selector de 16, dividido en:
13 para el segmento, 1 para global/local, y 2 para manejar la proteccin.

La CPU tiene un cach interno para los segmentos.

Segmentacin y paginacin

Implementacin de la paginacin
Problema:
cada proceso tiene su tabla y esta tabla debe estar siempre en memoria fsica.

Solucin:
usar tablas de varios niveles.

Paginacin a varios niveles


Slo se mantiene en memoria la tabla de primer nivel. Las otras (que tambin ocupan exactamente una pgina), se tratan como pginas ordinarias, es decir, pueden estar en disco. Al utilizar la propia memoria virtual para estas pginas, se mantienen en memoria fsica slo las ms usadas. Si las direcciones son de 64 bits, se usan ms niveles.
N1 N2

Reemplazo de pginas
Cuando un proceso hace referencia a una pgina que no est en memoria, se busca el contenido en disco y se carga en algn marco. Problema: no hay ninguno libre Solucin: usar algn algoritmo de reemplazo de pginas para elegir un marco vctima. Una posibilidad es pasar a disco todo un proceso, as los marcos que el ocupaba quedan libres.

Para usar un marco ocupado, primero su contenido se debe pasar a disco. Si la pgina original no fue modificada, la copia en disco es idntica, as que se puede descartar esta operacin de escritura. Para saber si una pgina ha sido modificada se examina un bit asociado a la pgina (bit de modificado), que el hardware se encarga de poner en 1 cada vez que se escribe en ella.

Intercambio (swapping)

Interrupciones por excepcin de pgina

Si una pgina no est en memoria, entonces se producen transferencias de pginas entre la memoria y el disco. Subir o reemplazar supone un gasto de tiempo. Un objetivo es reducir las interrupciones por excepcin de pgina (faltas) al mnimo. Para comparar algoritmos de reemplazo vale contar cuntas interrupciones se produjeron dadas algunas secuencias de acceso (Trace) a la memoria.

Algoritmo ptimo
El algoritmo que minimiza el nmero de faltas consiste en escoger la pgina para la cual el lapso de tiempo hasta la prxima referencia es el mayor.

El algoritmo PEPS

Consiste en reemplazar la pgina ms antigua (la que lleva ms tiempo en memoria fsica) Es simple, pero no es bueno, ya que la pgina ms antigua no necesariamente es la menos usada.

Anomala de Belady
PEPS sufre de la Anomala de Belady:
las faltas pueden aumentar si aumentamos el nmero de marcos disponibles

La Menos Usada Recientemente (LRU)

Se selecciona la pgina menos recientemente usada con la esperanza de que, si no ha sido accedida en el pasado reciente, no lo ser en el futuro cercano. Los procesos presentan un patrn denominado localidad temporal de referencia. Problema: es que la implementacin requiere un apoyo del hardware que es caro de implementar.

Implementacin

Por ejemplo, con un contador en la CPU y un campo adicional (de unos 64 bits), para registrar el valor acumulado, para cada pgina. Cada vez que se accede a una pgina, se incrementa el contador y se guarda en el campo de la pgina accedida.
As la pgina menos recientemente usada es aquella con el menor valor en su campo.

20 3 7 50

Aproximaciones a LRU

La mayora de las mquinas proveen un bit de referencia por cada pgina cuya implementacin en hardware es barata. El sistema operativo pone en 0 el bit de referencia de cada pgina al inicializar un proceso y el hardware lo pone en 1 cada vez que se accede a la pgina.

Algoritmo de maduracin

Leer los bits de referencia a intervalos regulares, registrarlos, y poner a cero. Si registramos en el bit de mayor orden de un byte, previo desplazamiento a la derecha, e interpretamos el byte como un entero sin signo, entonces hay que reemplazar la pgina cuyo byte sea el menor es la menos recientemente usada.

Segunda oportunidad

Es un caso especial del anterior, se usa PEPS con un agregado: si la potencial vctima tiene el bit de referencia en 1, se pone en 0 y se le da una segunda oportunidad (se escoge otra).

El algoritmo de reloj

Una implementacin es con lista circular. por eso tambin se conoce como algoritmo del reloj.

No Usada Recientemente (NRU)

Una optimizacin se basa en considerar que sale ms caro reemplazar una pgina que ha sido modificada, pues hay que actualizar la copia en disco antes de reemplazarla. Segn los bits de referencia y de modificacin se clasifican en: 00, 01, 10, 11.
Se escoge segn PEPS dentro de la clase (no vaca) ms baja. La clase 01 significa no referenciada, pero modificada.

R M 00 01 10 00

Prctica

Compararla segmentacin vs. Paginacin. Ejercicios del libro de texto (Cap.Memoria): 1,3,4,5,7,13,23,24,25,29,31,37.

FIN.

También podría gustarte