Está en la página 1de 20

ADMINISTRACIN DE MEMORIA

"los programas se expanden con el fin de llenar la memoria"

En todos los sistemas operativos y la gran mayora de aplicaciones es necesario el manejo


de memoria dinmica, por lo que se hace necesario entender, cmo el sistema operativo
realiza dicho manejo, para tener mejores criterios respecto al funcionamiento de las
estructuras de datos. Adems, todos los procesos a ejecutarse, necesitan primero subirse a
memoria.

Jerarqua de dispositivos de memoria

1.
2.
3.
4.
5.

registros: lo ms rpido y caro


cache: Memoria ms rpida
RAM-ROM
Discos duros
Cintas: lo ms barato y ms lento

Funciones de la administracin de memoria

relocalizacin
proteccin y comparticin
asignacin

Relocalizacin
Colocacin dinmica de la memoria de los procesos en diferentes partes de la RAM
Carga esttica y dinmica

Esttica: siempre la misma posicin de memoria


o referencias absolutas de memoria
o en DOS se usaba con los .COM
Dinmica: en cualquier posicin de memoria
o referencias relativas:
Mov ax , [FF]
o Registro base
o Registro lmite
o Caso de Intel
Mov ax , [FF] equivale a Mov ax , DX:[FF]

Jump [5] equivale a Jump CS:[5]

Enlace esttico y dinmico


Enlace esttico

inmerso en el ejecutable
facilidad de instalacin
uso deficiente de la memoria

Enlace Dinmico

Uso compartido de libreras


Pesadilla de versiones (falta de compatiblidad hacia atras)
Uso eficiente de la memoria

program x ;
int a1 (int a, X c) ; extern "a.dll" ;
...
...
int z = a1 (0, null) ;
..
..
OTRA FORMA:
typedef int f(int a, X c) ;
...
int handle = loadLibrary ("a.dll") ;
f = getProc (handle, "a1") ;
int z = f(0, null) ;
..
unloadLibrary (handle) ;
..

Comparticin y proteccin

Necesidad: cdigo reentrante, reas crticas


Sistemas monousuario: no hay necesidad
Pginas: bits en las tablas de pginas
Segmentos por proceso: son compartidos si la tabla de segmentos da la msma rea
de memoria, pero tiene problemas con el cdigo reentrante recursivo.

Registros lmites

Paginacin

Espacios de direccin lgicos


Las pginas son de tamao fijo
uso de marcos de pgina
fragmentacin interna

Traduccin de direccin lgicas a reales

Segmentacin

La memoria en un segmento est semnticamente relacionada: Desde el punto de


vista del usuario, la memoria es un conjunto de segmentos, cmo datos, cdigo,
pila, etc.
Mapeo similar a la paginacin
La tabla de segmentos consiste tiene que incluir el tamao del segmento.
Relacionada con las polticas de asignacin de memoria por particiones variables
Fragmentacin externa

Sistemas hbridos

Problemas para usar segmentos con memoria virtual


Ventajas de segmentacin (organizacin de la memoria por segmentos) y de
paginacin (simplicidad y eficiencia)
Paginar los segmentos
N niveles (Linux usa 4)

ASIGNACIN Y LIBERACIN DE MEMORIA

El sistema operativo , al realizar el manejo de memoria, realiza las siguientes operaciones


sobre la misma:

Asignacin de memoria: entregar a los procesos bloques de memoria solicitados


con distintos tamaos
Liberacin de memoria: recibir de los procesos los bloques de memoria que stos
ya no utilizarn y dejarlos como parte de la memoria libre que podr ser utilizada
por otros procesos.
Compactacin: cuando se produce fragmentacin externa, todos los bloques de
memoria se mueven hacia un extremo de la memoria, de modo que queda slo un
bloque libre al final
Recoleccin de basura: en algunos lenguajes de programacin como java, no
existen operaciones de liberacin de memoria, por lo que al momento de existir una
solicitud de asignacin de memoria y no existe disponible, el sistema deber liberar
los bloques que no estn siendo utilizados, para liberar memoria y atender las
solicitudes pendientes.

Estas operaciones pueden ser realizadas a nivel de sistema operativo o a nivel de


aplicacion. Para requerimientos de bloques pequeos, si se invoca al sistema operativo,
provoca fragmentacin interna. Por lo que los compiladores normalmente generan un
segmento de HEAP para manejar internamente (a nivel de libreras de usuario) el uso de la
memoria dinmica.
Esta es la operacin del sistema operativo en el cual un proceso solicita un bloque de
memoria de tamao K y el sistema le debe proporcionar la direccin de un bloque de
memoria para uso del proceso. Dicho bloque debe tener al menos el tamao solicitado (K).
Para realizar esta operacin, anteriormente se utilizaban mtodos que utilizaban bloques
de tamao uniforme, los cuales consistan en dividir la memoria en un nmero de bloques,
todos del mismo tamao. Cada requerimiento de memoria, se realizaba en trmino de
nmero de bloques, en vez de tamao en bytes (Kbytes, etc).
Estas polticas, aunque son simples de implementar, rpidamente cayeron en desuso,
debido a que la programacin de los procesos se complicaba, ya que si se tienen bloques de
tamao N, y se necesita un bloque de memoria 2N, el programador deba tener en mente
que al solicitar dos bloques, en muchos casos no haba garanta que los bloques entregados
sean continuos, y aunque as fuera, siempre exista el problema de tener que calcular los
requerimientos en trminos de bloques y no de bytes.
Ms determinante que las complicaciones de programacin, fue la fragmentacin interna
FRAGMENTACIN INTERNA: Es cuando en un bloque de memoria de tamao N, que
se entrega a un proceso, que solicit un bloque de tamao K y K << N, existe un
desperdicio de memoria dentro de bloque de tamao N-K
Actualmente, los sistemas utilizan mtodos de bloques de tamao variable, los cuales
dividen la memoria en bloques cuyo tamao se define conforme los procesos requieren y

liberan memoria, garantizando que cada bloque atendido, sea uno slo de memoria
contigua.
Estos mtodos resultan mucho ms eficientes en trminos de utilizacin de la memoria,
sin embargo, varan en complejidad, rendimiento, manejo de la fragmentacin interna y
fragmentacin externa.
FRAGMENTACIN EXTERNA: Es cuando en la memoria existen pequeos bloques de
memoria libre, intercalados entre los bloques utilizados por procesos, de modo que, aunque
la memoria total sea de tamao N (la suma de todos lo bloques libres), el sistema no puede
atender requerimientos de dicho tamao, y an tamaos menores, dado que est distribuido
a lo largo de toda la memoria
La solucin a este problema es aplicar la compactacin y/o recoleccin de basura.
En los mtodos actuales, de tamao variable, al liberar memoria, si el bloque liberado es
adyacente a uno que estaba libre, stos bloques de uno para formar un bloque ms grande,
de tamao igual a la suma de los tamaos de los bloques mezclados. De este modo, al
liberarse toda la memoria, slo existir un bloque libre, del tamao de la memoria total.
Los mtodos que estudiaremos son:

Ajuste secuencial
Sistemas compaero

Particiones fijas

fcil programacin de la asignacin, ya que al ser todas las particiones iguales, no


importa que particin se le asigna al proceso
Si un proceso no cabe en las particiones disponibles, el programar debe preparar el
programa para trabajar sobreposiciones (overlay) y usar ms de una particin
alta fragmentacin interna
Variaciones:

Colas por tamao de la particin: se crean varios tamaos de particin y


cada proceso ser asignado a la particin ms pequea que pueda contenerlo.

Particiones variables

Las particiones son de tamao variable


Las particiones son creadas dinmicamente, segn sea requerido por los procesos

Se produce fragmentacin externa


Se necesita usar compactacin peridicamente

Mtodos de Ajuste secuencial (Sequential fit)


Este es un conjunto de mtodos que se basa en una lista de bloques libres mantenida
dentro de la memoria disponible.
Proceso general
Asignacin de un bloque de tamao n

Se recorre la lista de bloques libren en busca de un bloque de tamao k, segn


alguna poltica, donde k >= n
se marca RESERVADO y se desenlaza de la lista de libres
si k>n, se puede decidir si la fragmentacin ser interna o externa (no se divide o se
divide)
Si se divide se enlaza el bloque restante como un nuevo bloque libre en la lista

El criterio para dividir un bloque puede ser una parmetro que indique el mximo de
fragmentacin interna. Este parmetro no puede ser menor que el tamao de las banderas y
apuntadores necesarios.
Las polticas que se pueden aplicar para seleccionar el bloque a trabajar pueden ser:

Primer ajuste
Mejor ajuste
Peor ajuste
ptimo ajuste

Primer ajuste: se toma el primer bloque tal que pueda cumplir con el
requerimiento. En el peor caso se recorre toda la lista. Desventaja: tiende a
producir mucha fragmentacin externa. Ventaja: normalmente es ms rpido.
Mejor ajuste: buscando eliminar la fragmentacin externa, se busca el bloque
menor que cumpla con el requerimiento. Desventaja: siempre hay que recorrer
toda la lista
Peor ajuste: se busca eliminar al mximo la fragmentacin interna, buscando
siempre el bloque ms grande y dividiendolo. Y adems elimina gran parte de la
fragmentacin externa del mejor ajuste. Desventaja: Se tiene que recorrer toda la
lista.

Ajuste ptimo: En muestra de la lista se hace un mejor ajuste (N/e), luego sobre el
resto, se hace un primer ajuste, de un bloque mejor (de menor tamao que cumpla
con el requerimiento) que el encontrado en la primera parte

Otra optimizacin: mantener la lista ordenada por tamao.


Efecto del ordenamiento
Cualquiera de estas polticas, a excepcin del Ajuste ptimo (ya que est diseado para
la lista sin un orden), se les puede agregar la variante de mantener la lista de bloques libres
ordenada por el tamao. sto tendra los siguientes efectos:

Primer Ajuste: reduce el tiempo de bsqueda, ordenado ascendentemente, no se


tiene que recorrer toda la lista para determinar que no existe un bloque adecuado, y
en promedio se recorre la mitad para satisfacer los requerimientos, ya que la
bsqueda de un bloque de tamao n implica bsqueda de todos los bloques de
tamao k < n. Si esta ordenado descendentemente, el efecto es el mismo que el
peor ajuste, y se toma slo el primer bloque
Mejor ajuste: tiene el mismo comportamiento que el primer ajuste con orden en la
lista. Ya no se tiene que recorrer por completo la lista.
Peor Ajuste: Si se mantiene la lista ordenada descendentemente, en TODAS las
asignaciones de memoria, slo se necesita examinar el primer nodo de la lista para
determinar, y si el tamao k del primer bloque es mayor o igual n, se atiende el
requerimiento con dicho bloque, en caso contrario se determina que no se puede
atender la solicitud. Lo cual incrementa el rendimiento de la asignacin de
memoria, en forma inmejorable.

Sin embargo, el mantener una lista ordenada, implica un retardo en el procesamiento de


las liberaciones de memoria, dado que al combinar bloques adyacentes e insertarlos en la
lista, implica realizar una bsqueda para determinar el lugar adecuado del bloque
combinado.
Apuntador Vagabundo
Otra variante a cualquiera de las polticas originales consiste en mantener circulando la
cabeza de la lista a lo largo de la misma, segn algn criterio, como colocar redireccionar la
cabeza de la lista en el nodo anterior (el ltimo de la lista, dado que es doblemente
encadenada), o colocar la cabeza en el siguiente nodo del que se est entregando al proceso
solicitante.
Los efecto de esta variante son:

evita que la fragmentacin externa se acumule en un solo punto


los bloques divididos son alcanzados a la vuelta y son los de mayor duracin.
sto implica que aumenta la probabilidad de la combinacin.

liberacin

Se marca el bloque como LIBRE


Mientras uno de los vecinos (izquierdo o derecho) estn libres

El bloques se combinan con sus vecinos libres para formar un slo bloque,
cuyo tamao ser la suma del tamao de los bloques combinados

Este proceso permite que cuando se liberen todos los bloques ocupados, slo existir un
bloque de memoria, cuyo tamao ser el de toda la memoria disponible.
Primer ajuste
Esta poltica consiste en retorna el primer bloque de la lista de tamao k, donde k >= n.
Ventajas:

Resulta bastante simple de implementar


es relativamente rpido en su desempeo, dado que las bsquedas en la lista, en
promedio no se busca en toda la lista

Desventajas:

Produce un alto ndice de fragmentacin externa, dado que los bloques tienden a
dividirse constantemente

Mejor ajuste
Se toma el ms pequeo de los bloques, cuyo tamao k >= n
Ventajas:

salva los bloques de > tamao para pedidos grandes


Reduce la fragmentacin interna

Desventajas:

Implica que en cada requerimiento se realiza un bsqueda en toda la lista


tiende a fragmentar externamente

Peor ajuste
Consiste en tomar el bloque ms grande de la lista para entregar al usuario, lo cual
implica que en la gran mayora de casos habr una divisin del bloque.
Ventajas:

reduce la fragmentacin interna al mximo

Desventajas:

Implica que en cada requerimiento se realiza un bsqueda en toda la lista


tiende a fragmentar externamente

ptimo ajuste
Esta poltica consiste en buscar en dividir la bsqueda en dos fases:

sobre una muestra de los bloques libres, se aplica la poltica del mejor ajuste
sobre el resto de la lista despus de la muestra, se toma el primer bloque que sea
mejor que el mejor de la muestra

El tamao de la muestra, se toma como una muestra estadstica y segn algunos autores
puede ser N/e (e=constante de Euler).
Ventajas:

El resultado de esta poltica produce una eficiencia intermedia entre primer ajuste
(ms rpido y el mejor ajuste (menos fragmentacin interna y externa)
en el mejor de los casos no se tiene que recorrer la lista completa, y se devuelve un
bloque que es un buen aproximado al mejor ajuste, y en el peor de los casos, se
tiene que recorrer toda la lista, el resultado es igual al del mejor ajuste

Desventajas:

se debe conocer el nmero de bloques libres


Aumenta la fragmentacin interna respecto al mejor ajuste

Sistemas compaero
Los sistemas compaero, al contrario de los mtodos de ajuste secuencial, no se basan en
listas, sino en clculos de direcciones y divisiones por pares para manejar los bloques de
memoria, por lo que el rendimiento es mejor que el Ajuste Secuencial, dado que no existen
bsquedas en listas, las cuales son reemplazadas por clculos matemticos.
Los sistemas compaeros binarios, estn basados en la propiedad de las direcciones de
memoria, las cuales al final (como todo nmero en la computadora) es una potencia de
dos. Este mtodo, Al haber una solicitud de tamao n, se procede a dividir el bloque de
memoria por la mitad, hasta que se tenga un bloque de tamao k, tal que k >= n y k/2 < n,
En este mtodo, para satisfacer una solicitud, toma un bloque libre y lo divide
sucesivamente en dos bloques compaeros, hasta que se tiene el menor bloque de tamao k,
que pueda satisfacer la solicitud de tamao n (k >= n).

Bloques compaero: son dos bloques adyacentes, resultado inmediato de la divisin de un


bloque mayor, que por lo tanto son del mismo tamao
Al momento de realizarse una liberacin de un bloque, procede a combinarlo con su
bloque compaero, si este est libre. Obsrvese que dos bloques adyacentes libres, no
necesariamente son compaeros, por lo que la liberacin permite que existan dos bloques
libres adyacentes sin combinar, si es que stos no cumplen con la definicin de bloque
compaero, lo cual puede resultar en una deficiencia en la utilizacin de la memoria.
La asignacin se realiza de la siguiente manera:

El espacio de memoria se trata como un bloque de 2U


Para un requerimiento de tamao s es requerido, tal que 2u-1 <= s <= 2U, entonces
se entrega dicho bloque, de lo contrario, se divide el bloque en dos y se continua el
proceso hasta que un bloque cumpla con 2k-1 <= s <= 2k

Ejemplo:

Una ventaja es que no se necesitan listas para recorrer lo bloques, sino que puede usuarse
slo aritmetica binaria (xor) de las direcciones y tamaos. Por ejemplo supongamos un
bloque total de memoria de 64 bytes, y las siguientes direcciones:
Bloque
Tamao del bloque
(decimal/hexadecimal/binario)

16/10/0010 08/08/0001 08/08/0001 32/20/0100


000
000
000
000

Direccin (decimal/hexadecimal/b 00/00/0000 16/0F/0010 24/18/0011 32/20/0100


000
000
000
000
inario)
Direccin del bloque
16/10/0010 24/18/0011 16/10/0010 00/00/0000
compaero (decimal/hexadecimal
000
000
000
000
/binario)
Podemos notar que se cumple que:
Dir. Bloque compaero = Dir. bloque xor Tam.Bloque
Dado que un bloque compaero es un bloque del mismo tamao, resultado de la divisin de
un bloque mayor, podemos calcular la direccin del compaero de cualquier bloque, y si
dicho compaero es del mismo tamao, entonces es s es su compaero. Puede ser que la
direccin calculada no corresponda a un bloque del mismo tamao, debido a una divisin
posterior, por lo tanto ya no ser su compaero.
En la tabla anterior:

1. Vemos que la direccin del compaero de A es la direccion 10h, que corresponde a


B. En este caso A y BC, fueron compaero, pero luego BC se dividi enB y C, por
lo tanto A y B ya no son compaeros, dado que no tienen en mismo tamao, ni
proceden de la misma divisin.
2. El mismo caso sucede con el compaero de D, que es la direccin 00h,
correspondiente a A.
3. Slo en el caso de B y C, se cumple con la definicin de compaeros y el calculo de
la direccin de compaero, corresponde en ambos casos..
Tambin se puede representar por medio de un rbol binario, de la siguiente forma:
En esta representacin, cada nodo puede representar dos casos:
1. Es un bloque dividido, por lo que es un nodo interno del rbol.
2. Corresponde a un bloque directo, por lo que es un nodo hoja, el cual puede estar
siendo utilizado o est libre.
El recorrido de este arbol facilita la operatoria y el clculo en los siguientes aspectos:
1. Cada nivel del rbol representa una divisin entre dos, por lo que el clculo del
tamao del bloque es directo
2. Al liberar un bloque, si el bloque hermano est libre, entonces procede la unin con
el compaero, y el nodo padre se convierte en un nodo hoja.

Ventajas:

El clculo direcciones de memoria, para determinar los bloques compaeros es


directo ya que est basado en nmeros binarios

Desventajas:

Aumenta la fragmentacin interna, dado que el tamao de cada bloque es una


potencia de 2
No siempre se pueden unir los bloques libres adjuntos
Una variedad de fragmentacin externa, que consiste en que no se puede utilizar
toda la memoria aunque est disponible

Fibonacci:
Este sistema, no realiza la divisin de los bloques por la mitad, sino que se basa en la
serie de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ..) para realizar la divisin y
combinacin de bloques.

Por ejemplo: si un bloque de memoria es de 55 y se solicita un bloque de 10, el bloque de


55 se dividir en un bloque de 21 y uno de 34, luego el de 21 se dividir en uno de 8 y otro
de 13 y se entregar ste ltimo al proceso solicitante
Ventajas:

Dado que el tamao de los bloques, est determinado por la serie de Fibonacci en
vez de potencias de dos, se reduce al fragmentacin interna

Desventajas:

El clculo de los bloques compaeros se complica, dado que se tiene que calcular
constantemente los predecesores y sucesores en la serie de Fibonacci.

Compactacin
Esta operacin sobre la memoria, se utiliza para eliminar la fragmentacin
externa. Bsicamente consiste en mover hacia un extremo de la memoria todos los bloques
ocupados, dejando en el otro extremo un slo bloque libre, cuyo tamao es la suma de los
tamaos de los bloques libres existentes antes de la compactacin.
Esta operacin supone un acceso exclusivo a la memoria, por lo que todos los
procesos quedarn bloqueados hasta terminar la compactacin, lo cual tiene un impacto
directo en el rendimiento del sistema. sto obliga a realizar un balance entre rendimiento y
espacio libre: si se realiza frecuentemente, habr ms memoria disponible, pero el costo es
una degradacin del rendimiento y viceversa. Para que pueda realizarse la compactacin es
necesario que el sistema tenga la capacidad de relocalizacin.
Puede utilizarse hasta el ltimo minuto, es decir cuando se pide memoria y no hay a
causa de la fragmentacin externa, se realiza automticamente la compactacin.

Coleccin de basura
La coleccin de basura se utiliza en aquellos lenguajes donde no se obliga al programador a
liberar la memoria utilizada, sino que el programa, automticamente, recupera la memoria
no utilizada cuando existe un requerimiento de memoria que no puede ser completado.
El algoritmo bsico de la coleccin de basura es la siguiente:

marcar todos los bloques de memoria como libres, ya sea que estn usados o no
para todos las variables, marcar su bloque de memoria como ocupado
los bloques de memoria que queden marcados como libres, se enlazan en la lista de
libres.

Otra estrategia utilizada, es llevar contadores por rea de memoria. Cada vez que se asigna
un asigna un rea de memoria a un apuntador, se incrementa el contador de la regin, y al
designar, se decrementa. De esta forma la coleccin de basura se reduce a eliminar las
regiones de memoria que tienen su contador a cero.

Organizacin de la memoria virtual


Conceptos generales
Memoria virtual:
Capacidad del sistema de permitir a los procesos utilizar ms memoria que la disponible en
RAM, a travs de utilizar memoria secundaria (discos duros) para almacer parte de la
memoria en RAM. Se debe buscar un balance entre la usabilidad y rendimiento.
Intercambio (swap):
Es el hecho de grabar en disco memoria que estaba en RAM y viceversa.
Fallo de pgina:
Es el evento que un proceso accesa una pgina que no esta en memoria y se tiene que
buscar en el disco duro (provocar un intercambio).
Hiperpaginacin:
Exceso de fallos de pgina.
Desperdicio (trashing):
Es cuando el procesador pasa ms tiempo decidiendo qu pginas intercambiar y esperando
respuesta del disco. Consecuencia directa de la hiperpaginacin
Localidad temporal y espacial:
Localidad temporal: la probabilidad condicional de que suceda de nuevo un evento dado
que sucedi hace poco tiempo, es inversamente proporcional al tiempo transcurrido.
Localidad espacial: la probabilidad condicional de que suceda de nuevo un evento dado
que sucedi cerca, es inversamente proporcional al espacio recorrido.
Mecanismo general de reemplazo de pginas

Componentes del manejo de la memoria virtual


1. Estrategia de reposicin: Es la poltica para decidir qu pgina en RAM es elegida
para bajar a disco, cuando sea necesario subir una pgina de disco. Es decir se
produjo un fallo de pgina y es necesario hacer un intercambio.
2. Estrategia de bsqueda: Es la poltica que decide cundo subir a RAM, pginas
que estn en disco.
3. Estrategia de alcance: Es la poltica que indica el grupo de pginas que se
considerarn al momento de una reposicin o intercambio.

Estrategias de reposicin
Se ocupa del aspecto de qu pgina se debe reemplazar cuando se necesite subir una pgina
a memoria y no hay memoria libre.
Principio de optimizacin
Debe reemplazarse la pgina que no se va a utilizar durante el tiempo ms largo, es decir el
que tiene la menor tasa de fallas de pginas de todos los algoritmos.
Objetivos

Minimizar la hiperpaginacin (trashing o desperdicio) del procesador

Al azar

Simple
ineficiente

PEPS

Proceso:
o Se reemplaza la pgina ms vieja en memoria, es decir la que se subi
primero.
o Se asume que las ms viejas sern las menos usadas en el futuro.
Ventajas:
o Simple de implementar
o Eficiente en el proceso de decisin
Desventajas:
o Desfavorecer a pginas de uso constante
o Anomala PEPS o anomala Belady

o
o

Secuencia de pginas: A, B, C, D, A, B, E, A, B, C, D, E
Hay ms fallas de pgina con 4 marcos de pgina que con 3

Segunda oportunidad

Proceso:
o Modificacin de PEPS
o Bit de referencia
o Si la primera de la fila es tiene el bit de referencia (bit R) en 1, ste se
cambia a 0, se pasa al final de la cola y se examina la siguiente pgina
Ventajas:
o Similar a PEPS en simplicidad y eficiencia
o Elimina la anomala Belady
Optimizacin:
o algoritmo de reloj en una lista circular de pgina con la "manecilla"
apuntando a la pgina ms antigua, as si R=0, reemplaza la pgina, si R=1
cambia el R a 0, y en todo caso avanza a la siguiente pgina

Menos recientemente usado

Proceso:
o En cada acceso se actualiza en la pgina su marcas de tiempo
o Reemplazar la pgina que no ha sido accesada por ms tiempo, es decir la
pgina con la menor marca de tiempo
Ventaja:
o Utiliza mejor el concepto de localidad temporal
Desventajas:
o Implica una revisin de todas las pginas para decidir la que se reemplazar
o Necesita mucha ayuda del equipo
Optimizaciones
o listas ordenadas
o pilas
o capacitores/contadores
Propuesta de Tannenbaum: matriz de bits
o matriz de bits de n * n para n marcos de pgina
o cuando se referencia un pgina i, se ponen en 1 todos los bits de la fila i y en
0 todos los bits de la columna i
o se reemplaza la pgina cuya fila tenga el menor valor

Ejemplo: 4 marcos de pgina y la secuencia de pginas 1 2 3 4 1 2 5 1 2 3 4


5

Menos frecuentemente usado

Proceso:
o Interesa la intensidad de uso
o En cada acceso se incrementa un contador
o Se reemplaza la pgina cuyo contador de acceso tiene el menor valor
Ventajas:
o Utiliza el concepto de localidad
Desventajas:
o Limitante: existe un nmero finito de bits en los contadores
o No olvida nada: si una pgina fue utilizada mucho antes se conservar
bastante tiempo en memoria
o Tambin implica un recorrido sobre todas las pginas en el proceso de
eleccin
o Hardware especial
Optimizaciones:
o bit de referencia que incrementa un contador por pulso, reseteando el bit R
o bit de referencia que desplaza a la derecha el contador: perodicamente se
corre a la derecha el contador de la pgina
o Listas ordenadas por valor del contador

No usado recientemente

Proceso:
o Se reemplazan las pginas que no han tenido uso reciente
o Se maneja un bit R (de referenciado) y un bit M (de modificado)
o Eliminacin perodica del bit R
o Se forman 4 clases de pginas:

o Se reemplaza una de las clases de pgina de menor valor


Ventajas:
o No se tiene que recorrer todas las pginas para elegir una. En promedio se
recorrer 1/4 de las pginas
Desventajas:
o Necesita hardware especial
o No hay certeza de utilizacin de la localidad

Estrategias de bsquedas
Se ocupa de cundo subir a RAM una pgina
Por demanda

Es la ms simple, ya que se busca una pgina cada vez que se produce un fallo de
pgina
No siempre se puede sincronizar el tamao de la pgina con el tamao de bloque de
disco ptimo, se puede provocar una utilizacin suboptima del disco.
No est utilizando ninguno de los concepto de localizacin.

Anticipada
Se sube a memoria un conjunto de pginas que el proceso muy probablemente utilizar
Conjuntos de trabajo o rea activa

Conjunto de trabajo: conjunto de pginas que un proceso acces en un determinado perodo


de tiempo (los que tengan encendido el bit R)

Se examinan las X referencias a pginas ms recientes de un proceso, las cuales


componen su conjunto de trabajo
Implementacin por medio del bit R, interrupciones perodicas que limpien este bit.
De esta forma las pginas de un proceso que estn con R=1 son las que pertenecen
al conjunto de trabajo.
Se trata de mantener en memoria el conjunto de trabajo de todos los procesos:

Prepaginacin

Al inicio se ponen en los marcos de pgina la memoria que el proceso solicite


dentro de ciertos lmites predeterminados
Al suspender un procesos, por cualquier razn, se conserva la informacin de cul
es su conjunto de trabajo y al despertarse, se sube tambin su conjunto de trabajo

Estrategia de alcance:
Define la forma en que se asignarn marcos de pginas a los procesos, y la definicin del
conjunto de pginas candidatas a intercambio, cuando se necesite.
Alcance local
Se asigna a cada proceso un conjunto de marcos de pginas, en el que trabajar. Cuando
un proceso produce un fallo de pgina, la pgina a ser reemplazada es elegida entre las
pginas en los marcos asignados al proceso.
ventaja:

- Slo se tiene que buscar en la tabla de pginas de un proceso


Desventaja:
- un proceso muy intenso en memoria, provocar una tasa alta de fallos de pginas. Puede
incurrir en hiperpaginacin.
El nmero de pginas a asignar a cada proceso (m marcos y n procesos) puede ser de dos
formas:

Uniforme: a cada proceso se le asignan m/n marcos de pgina


Proporcional: a cada proceso se le asignan marcos de pgina en proporcin al
tamao de la imagen del ejecutable

Alcance global
Los procesos no tienen asignados un nmero determinado de marcos de pgina, y al
momento de provocar un fallo, el sistema puede elegir reemplazar una pgina que pertenece
a un proceso diferente al que provoc el fallo de pgina.
Puede provocar que la hiperpaginacin de un proceso, lleve a otros procesos a elevar su
tasa de fallos de pgina.

Control de la hiperpaginacin
Por conjunto de trabajo

Si se tienen el tamao del conjunto de trabajo CJi para un proceso i, entonces


Demanda=SUM (CJi).
Si la Demanda llega a ser mayor que el nmero de pginas disponibles, entonces se
producir hiperpaginacin, por lo que se elige un proceso y se suspenden, y sus
marcos de pginas son asignadas a otros procesos

Frecuencia de fallas de pginas

Se establecen lmites inferior y superior para la tasa de fallas de pginas


Si la tasa de fallas de pgina es menor del lmite inferior, entonces el proceso tiene
muchos marcos asignados, por lo que se le quita uno y se asigna al proceso con
mayor tasa de fallas de pgina
Si la tasa de fallas de pgina es mayor del lmite superior, entonces el proceso tiene
pocos marcos asignados, por lo que se le da un marco ms, a costa del proceso con
menor tasa de fallos de pgina. Si no hay marcos disponibles, entonces el proceso se
suspende

Ejemplos
Windows

working set minimun / maximum


Alcance local (debajo del mnimo)
Lmite de memoria libre
automatic working-set trimming: lleva al mnimo los que estn arriba del mnimo
Reduccin del conjunto de trabajo por FIFO

Solaris

Mnimo de memoria libre (lotsfree)


pageout: algoritmo de reloj doble, liberando los marcos de pgina
scanrate: de 100 pginas por segundo a m/2 pginas por segundo
Distincin de pginas asignadas a libreras compartidas y usadas para manejo de
archivos.

Linux

Direcciones virtuales de 3 niveles de pginas y desplazamiento: directorio,


directorio intermedio y tabla de pginas
El directorio principal est en memoria para los procesos activos
adaptacin al hardware para los niveles de paginacin (Alpha 64 tiene 3 niveles &
Intel 32 tiene 2)
tico

Asignacin por medio de sistemas compaero


La poltica de reemplazo de pginas est basada en una combinacin de Menos
Frecuentamente Usado, con un algoritmo de segunda oportunidad. Cada pgina
tiene un contadaor 8 bits, llamado edad: ste se incrementa en cada referencia. Un
algoritmo de reloj simple para disminuir la edad, recorre periodicamente las pgina
para disminuir la edad. La seleccin de la pgina a reemplazar se basa en la edad
ms pequea.
El reemplazo se realiza cuando no hay suficiente memoria libre
Cached Memory
Swappiness: un valor 0 indica que siempre se buscar usar la memoria cache
cuando se necesite nueva memoria. Un valor 100 indica que se prefiere bajar a
disco la memoria de las aplica.
Overcommit:
o OOM killer: Out Of Memory Killler
o Modos de operacin:
0 = heurstico
1 = siempre hace overcommit
2 = parametrizado ( Mem * porcentaje_overcommit + swap )

También podría gustarte