You are on page 1of 15

Administracin de Memoria Sistemas Operativos

1
4.- Administracin de Memoria
Como ya hemos dicho, en captulos anteriores la memoria es un recurso de tipo apropiable, que debe ser
administrado para obtener su mejor provecho. En este captulo veremos de preferencia la administracin de memoria en
sistemas multiprogramados, es decir, sistema en donde coexisten varios procesos en memoria.
En general, podemos distinguir dos esquemas de administracin de memoria para sistemas multiprogramados, uno
dice que los procesos deben estar cargados completamente en memoria para poder ejecutarse y el otro esquema no requiere
que el proceso completo este cargado en memoria.
Como se vio anteriormente, un conjunto de procesos comparta el procesador y este era administrado con el fin de
mejorar su utilizacin, para conseguir esto, es necesario mantener varios procesos en memoria, es decir, compartir la memoria
(principal, primaria, real, ram, rwm).
El administrador de la memoria es la parte del sistema operativo que se encarga de la memoria. Los sistemas de
administracin se pueden dividir en dos clases:
1. Aquellos que slo trabajan con la memoria principal.
2. Aquellos que mueven procesos entre memoria principal y el disco, durante la ejecucin.
Las estrategias de la administracin del almacenamiento se dividen en las siguientes categoras.
estrategias de obtencin
por demanda
anticipada
estrategias de colocacin
estrategias de reemplazo
Brevemente, podemos decir, que la memoria es un recurso utilizado para el almacenamiento de las instrucciones que
forman un proceso. El ciclo tpico de ejecucin de instrucciones incluye la transferencia de instrucciones de memoria a CPU,
decodificacin de instrucciones, bsqueda de operandos y ejecucin efectiva de las instrucciones, posteriormente los
resultados tambien pueden ser almacenados en memoria.
Cuando se ejecuta un proceso, este debe ser cargado en memoria previamente. Anteriormente, cuando es un
programa binario ejecutable esta almacenado en memoria secundaria, tpicamente disco. Cuando un proceso entra en
ejecucin se utiliza un proceso del sistema que se denomina cargador, que lo transfiere a memoria. En Unix por ejemplo, el
cargador almacena el proceso en memoria distinguiendo en l tres segmentos distintos
Segmento de cdigo
Segmento de Datos
Pila
Dichos segmentos se distribuyen segn muestra la siguiente figura.
Pila



Datos dinmicos (Malloc, Free)
Datos estticos Datos
Cdigo

Entonces para ejecutar un proceso, este debe cargarse en memoria. Generalmente la cola de entrada es un conjunto
de procesos que estn en disco esperando entrar en memoria, uno de los procesos es seleccionado desde esta cola de
entrada y es cargado en memoria. En ocasiones se debe relocalizar las direcciones o los enlaces de referencia externas a
puntos de entrada. Al finalizar la ejecucin, el rea de memoria que ocupaba se declara disponible.
Espacio de direcciones es el rea de memoria, desde la direccin 00000 hasta la n, en donde se ubican los procesos.
Un programa de usuario puede ser ubicado en cualquier parte de la memoria, no necesariamente desde una ubicacin cero.
La asignacin de memoria en los segmentos es responsabilidad de diferentes etapas en el sistema.
Compilacin
Enlazado (linker)
Carga (loader)
Asignacin de memoria en tiempo de ejecucin (run time)
Antes de hablar de cada una de estas etapas menciones algunos aspectos generales que son necesarios de tener
presente. Un programa fuente puede estar formado por uno o un conjunto de archivos en donde se definen indistintamente
Administracin de Memoria Sistemas Operativos
2
variables, funciones y/o procedimientos. Por ejemplo, en C, se usa el encabezado extern para indicar que una funcin
definida en un archivo puede ser utilizada por otro archivo despus de su declaracin correspondiente.
En el caso que un programa este definido mediante un conjunto de archivos fuentes, el compilador genera el cdigo
objeto de cada uno de los archivos correspondientes. Luego es el enlazador el encargado de generar un solo archivo
ejecutable a partir de todos los mdulos objetos. Finalmente el cargador es el encargado de cargar en memoria el archivo
ejecutable.
Compilacin
Durante el proceso de compilacin se generan los archivos objetos de cada uno de los archivos fuentes del
programa. Las referencias externas no son resueltas en esta etapa.
Enlazado
En esta etapa se reagrupan todos los archivos objetos pertenecientes al programa y se genera un solo archivo
ejecutable. Las referencias externas son resueltas asi como las llamadas a funciones de biblioteca del sistema.
Carga
Durante este proceso se carga en memoria el programa ejecutable. Este proceso se realiza cuando se ejecuta el
programa. Este carga puede permitir la comparticin de cdigo ejecutable entre diferentes procesos.
Ejecucin
Durante la ejecucin el proceso se mover de un lugar a otro de la memoria, el enlace final se deber postergar hasta
el momento de la ejecucin o run-time. Para que este esquema funcione, se debe tener hardware especial.
programa
fuente
traductor
mdulo
objeto
editor
de enlaces
otros
mdulos
objeto
mdulo
de
carga
carga
biblioteca
del
sistema
biblioteca del
sistema enlazado
dinmicamente
contenido de
la memoria
en binario
cargador
ejecucin
compilacin


Asignacin de memoria en tiempo de ejecucin
Alternativamente tambien es posible que los procesos adquieran y liberen memoria del sistema en forma dinmica
utilizando, por ejemplo, funciones de C como malloc o free. Esta labor de asignacin y liberacin es realizada conjuntamente
entre el compilador y el sistema operativo.
En trminos generales, la asignacin de memoria para los procesos en ejecucin puede realizarse en el momento de
compilacin y/o enlazado, en el momento de carga o en ejecucin. Que la memoria se asigne en tiempo de compilacin y/o
enlazado, significa que el cdigo resultante de mdulos genera cdigo absoluto, es decir, que se utilizarn directamente las
direcciones que aqu se referencian. Los programas .COM de MS-DOS se cargan en forma absoluta en memoria.
En los sistemas modernos los compiladores no generan cdigo absoluto sino que generan cdigo relocalizable, es
decir que el cdigo que las direcciones que genera el compilador no son las direcciones de memoria reales que se utilizarn,
sino que el Cargador se encargar de traducir las direcciones entregadas por el compilador y/o enlazador a las direcciones de
memoria que realmente se utilizarn.
Tambien es posible especificar carga dinmica, es decir que el cdigo ejecutable de un procedimiento por ejemplo,
no se cargue mientras no se ejecute. Este tipo de carga es especificada por el programador cuando el sistema y el lenguaje se
lo permite. Por ejemplo, en Windows un programador puede especificar mediante la funcin LoadLibrary(.), que desea cargar
dinmicamente una funcin.


Administracin de Memoria Sistemas Operativos
3

4.1.- Administracin de Memoria sin Intercambio
Dentro de este tipo de administracin se encuentran los sistemas que utilizan monoprogramacin, es decir, que
mantienen en memoria slo un proceso de usuario, por lo tanto no es posible ejecutar concurrentemente mas de un proceso
de usuario en el sistema; y los sistemas multiprogramados, es decir que permiten mantener mas de un proceso de usuario en
memoria. Dentro de este ltimo esquema existen sistemas que manejan multiprogramacin con pariciones fijas y sistemas que
manejan la multiprogramacin con particiones variables. La caracterstica que poseen en comn estos tres tipos de
administracin es que ninguno de ellos permite intercambiar procesos entre memoria y disco, es decir que los procesos no
pueden permanecer por periodos de tiempo en disco, sino que durante el tiempo que dure su ejecucin necesariamente
deben permanecer en memoria.
El esquema sin intercambio puede ser prctico para sistemas en donde la cantidad de procesos presente es
manejable por la CPU y la memoria. Sin embargo, para aquellos sistemas donde por lo general existen muchos usuarios los
cuales ejecutan muchos procesos, la capacidad de la CPU y memoria no da abasto a la cantidad total de procesos que
requieren los recursos. En este ltimo caso, es atractiva la idea de aprovechar mejor los recursos, en que por ejemplo aquellos
procesos que cambian de estado puedan ser almacenados temporalmente en disco para luego continuar en su ejecucin y as
darle la oportunidad de ser ejecutados a otros procesos.

4.1.1.- Monoprogramacin sin intercambio
A este tipo de administracin tambien se le conoce con el nombre de asignacin de sola particin, y corresponde
al esquema de administracin ms sencillo y barato. Sin embargo este esquema no se utiliza, en su lugar el esquema ms
sencillo que se implementa hasta hoy consiste en que la memoria se divide en dos espacios uno para que resida el sistema
operativo y otro espacio queda disponible al proceso de usuario.
Este tipo de administracin se caracteriza porque, en primer lugar, es monousuario, es decir, soporta un usuario y
ste tiene disponible toda la memoria de usuario. En este caso el usuario slo puede cargar un proceso en memoria. En el
caso de tener un sistema compuesto por un espacio de memoria para el sistema operativo y otro espacio para el proceso de
usuario tienen que existir protecciones que evite que un proceso de usuario perturbe el comportamiento del sistema
operativo. Dicha proteccin por lo general es provista por el hardware, a travs de un registro.
sistema
operativo
en RAM
programa del
usuario
sistema
operativo
en ROM
programa del
usuario
programa del
usuario
sistema
operativo
en RAM
controladores
de dispositivos
en ROM

Como se muestra en la figura, la memoria se divide entre el SO y el programa de usuario, la tercera figura muestra el
esquema de los PC, donde el programa en ROM se denomina BIOS o Basic Input Output System. Un ejemplo de este tipo de
administracin de memoria es el que posee el PC-IBM.

4.1.2.- Multiprogramacin
La multiprogramacin consiste en que el espacio de memoria de usuario es compartido por mltiples procesos, es
decir pueden ser almacenados en memoria un conjunto de procesos, simultneamente. La utilizacin de multiprogramacin
trae consigo varias ventajas entre las cuales se cuenta el mejor aprovechamiento de la CPU, pues cuando un proceso est
realizando E/S, la CPU podra ser utilizada por otro proceso; por otro lado la multiprogramacin es atractiva para los sistemas
multiusuarios y procesos interactivos.

4.1.2.- Multiprogramacin con Particiones Fijas
Bajo este esquema de administracin la memoria es dividida en n partes, en donde cada una de esas partes pueden
ser de tamaos distintos, cada proceso es asignado a una de estas particiones cuando entra en ejecucin. Existen dos
esquemas mediante los cuales se pueden asignar a los procesos a una particin. Un esquema consiste en que cada particin
tiene una cola de procesos asociados que desean ser cargados en esa particin o bien existe una sola cola en donde se va
asignando una particin a cada proceso desde el comienzo de la cola. En el primer caso se pueden producir sobrecarga en
Administracin de Memoria Sistemas Operativos
4
alguna de las particiones, es decir, se puede formar una cola de espera con muchos procesos y otra particin puede tener una
cola de espera vaca; este problema se soluciona con el segundo esquema mencionado.

Al llegar un trabajo se coloca en una lista de entrada a la particin menor que pueda contenerlo. En este caso,
cualquier espacio no ocupado se pierde.
particin 4
particin 3
particin 2
particin 1
sistema
operativo
varias colas de entrada
700 K
400 K
200 K
100 K
0

Ciertas desventajas de filas independientes se manifiestan al tener particiones con colas vacas y otras llenas. Otro
tipo de organizacin es la de enviar las tareas recibidas a una lista comn
particin 4
particin 3
particin 2
particin 1
sistema
operativo
una cola de entrada

Cada vez que se libere una particin, se podra cargar en ella la tarea ms prxima que se ajuste a dicha particin, el
sistema utilizado por el sistema IBM OS/MFT Multiprogramacin con nmero Fijo de Tareas.
Este esquema de administracin contempla la proteccin de las particiones, que permita proteger cada de las
particiones de las particiones adyacentes, esto significa que cada proceso de usuario debe estar confiado que no se ver
perturbado por otro proceso. En este caso, los sistemas multiprogramados la proteccin es apoyada por el hardware,
mediante dos registros un registro base y un registro lmite. El registro base indica la direccin de inicio de la particin y el
registro lmite indica el tamao de la particin. A continuacin se muestra de que manera actan estos registros.

R Limite

CPU > Error


R Base + Direccin Particin

Con este tipo de administracin se presenta un problema denominado fragmentacin interna, el cual consiste en
que si el proceso que ocupa la particin no la utiliza en un 100% entonces se produce prdida de memoria, es decir memoria
que no puede ser utiliza por otro proceso.

4.2.- Intercambio
Cuando los sistemas requieren contener mas procesos que los que la memoria soporta, principalmente sistemas
multiusuarios e interactivos. En este caso el mecanismo de intercambio permite intercambiar procesos entre la memoria
principal y disco.

Administracin de Memoria Sistemas Operativos
5
4.2.1.- Multiprogramacin con Particiones Variables
Este tipo de administracin de memoria consiste en que la memoria se divide en un conjunto de particiones que se
caracterizan porque su tamao es variable y se crean dinmicamente en el transcurso de la ejecucin de los distintos
procesos en el sistema. Este tipo de administracin, a diferencia del de particiones fijas se efecta con intercambio, es decir,
que un proceso que esta en memoria puede ser traspasado a disco en forma temporal para darle la posibilidad a otro proceso
que se ejecute.
Al igual que la administracin con particiones fijas este tipo de administracin considera el almacenamiento del
proceso completo en memoria para que ste pueda ser ejecutado.
Cuando un proceso se bloquea, se pasa a disco y se libera la particin. Si la particin es fija, los procesos
desperdiciarn memoria ya que es difcil que utilicen exactamente el tamao de la particin, como la memoria es escasa,
particiones fijas no sern atractivas.
Para un mejor aprovechamiento de la memoria se utiliza un algoritmo de manejo de memoria con asignacin de
particiones variables.
S . O . A
S . O . A B
S . O . A B C
S . O . B C
S . O . B C D
S . O . C D
S . O . C D E

Con esto, el nmero y tamao de las particiones varia constantemente, adems se podra realizar compactacin de la
memoria, proceso que consume tiempo.
Por otra parte, los procesos pueden necesitar un espacio de direcciones fijo o variable. Si es fijo, la asignacin es
simple, si es variable, o sea que los segmentos de datos pueden variar, como el caso de una pila, que consume y libera nodos
en forma dinmica, el proceso de asignacin se hace ms complejo ya que si el espacio se agota, el proceso puede ser
desplazado a otra rea con espacio mayor o ser aniquilado.
Si st ema
Operativo
A En uso acti vo
B
Espaci o para
el creci mi ento
En uso acti vo
Espaci o para
el creci mi ento
Sistema
Operati vo
Programa
de A
Espaci o para
el creci mi ento
}
Espaci o para
el creci mi ento
}
Datos de A
Pila de A
Programa
de B
Datos de B
Pila de B

Otro aspecto importante de sealar en este tipo de administracin es que tambien existe fragmentacin, esta ocurre
en el continuo ingreso y salida de procesos a memoria, este fenmeno genera que se produzcan huecos en la memoria que no
son suficientes para contener a los procesos que requieren ejecutarse. A este tipo de fragmentacin se le conoce con el
nombre de fragmentacin externa.
Administracin de Memoria Sistemas Operativos
6
La prdida de memoria, producto de la fragmentacin externa, se puede recuperar realizando la compactacin, es
decir, reagrupando las porciones de memoria hacia un lado y las porciones de memoria libre hacia el otro extremo. Sin
embargo, esta tcnica no se practica pues es un proceso demasiado lento.
La asignacin de memoria a los distintos procesos que la requieren se puede asignar de acuerdo a los siguientes
criterios, dichos criterios surgen de la necesidad de que el sistema tenga conocimiento de las particiones de memoria que se
encuentran ocupadas y libres. Las particiones que tiene libres deben ser otorgadas a los procesos de la manera que el
sistema considere ms eficiente. Dentro de los criterios mas conocidos de asignacin de memoria se encuentran los
siguientes:
Asignacin del primer ajuste
Asignacin del mejor ajuste
Asignacin del peor ajuste
Asignacin del primer ajuste
Este criterio considera que es mejor asignar al proceso la primera particin de memoria que encuentra libre en el
sistema.
Asignacin del mejor ajuste
Este criterio considera en otorgar al proceso aquella particin que mejor se ajuste al proceso, es decir la que mejor le
calce.
Asignacin del peor ajuste
Este criterio considera que es mejor otorgar aquella particin ms grande que pueda contener al proceso, el
argumento que fundamenta este criterio es que lo que sobre de esta particin puede ser utilizada para asignrsela a otro
proceso.
Dentro de los esquemas que se utilizan para saber la cantidad de memoria ocupada y libre se encuentran los
siguientes:

4.2.2.- Administracin de asignacin de memoria
Administracin con mapa de bits
Este esquema consiste en que la memoria se divide en bloques de cierto tamao y se mantiene en memoria una tabla
en donde cada bit se utiliza para identificar un bloque ocupado y un bloque libre. Si un bloque esta ocupado el bit asociado a
l esta en 1, s el bloque esta libre el bit esta en 0.
Un aspecto importante de mencionar en este enfoque es que si el tamao de asignacin es pequeo entonces el
mapa de bits es ms grande, comparativamente con un bloque de asignacin ms grande el mapa de bits es ms pequeo. El
tamao del mapa de bits solamente est determinado por el tamao de la memoria y el tamao del bloque de asignacin.
A B C D E
8 16 24
1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1
1 1 0 01 1 1 1
1 1 1 1 1 0 0 0
P 5 0 3 5 H
4 14 P 6 8 P
2 18 H 6 20 P
3 26 P 3 29 H
P: proceso
H: hueco
comienza en longitu
d

A continuacin se presenta un ejemplo de este mecanismo.
Administracin de memoria con listas enlazadas
Este enfoque consiste asignar la memoria mediante un bloque de asignacin. El control de la memoria ocupada o
libre el sistema la mantiene mediante una lista enlazada en donde cada nodo de la lista esta compuesto por los siguientes
campos:
Bit que representa un proceso o un hueco
Nmero de bloque de inicio
Nmero de bloques utilizados
puntero al siguiente nodo en la lista
En el caso de tener una lista ordenada por direcciones, la ventaja de este enfoque es que la actualizacin de la lista
es directa, pues cada nodo tiene dos vecinos, cada unos de los cuales es un proceso o un hueco, luego al desocuparse un
segmento representado por un nodo en la lista pasa a ser un hueco, el cual podra eventualmente agruparse a un hueco
vecino.
Administracin de Memoria Sistemas Operativos
7
La desventaja de este enfoque es que la bsqueda de un hueco libre suficiente de satisfacer a un proceso es lenta.
Para solucionar esta lentitud se puede tener dos listas ligadas, una para los huecos y otra para los procesos, sin embargo,
esto obliga a mantener estas dos listas, es decir deben actualizarse cuando un proceso termina y cuando se otorga memoria a
un proceso.
A continuacin se presenta un ejemplo de como funciona este mecanismo

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21


P 0 3 H 3 3 P 6 4 H 13 2

Sistemas de los asociados
Este enfoque consiste en tener la memoria inicialmente como un gran hueco a medida que un proceso la requiera se
particiona, dicho particionamiento esta regido por segmentos mltiplos de potencias de dos.
Suponga que la memoria es de 1Mbytes, y un proceso de 56Kbytes requiere ser cargado, luego la memoria se
particiona en dos grandes segmentos de 512 Kbytes, luego este segmento sigue siendo muy grande para contener al proceso
entonces se vuelve aparticonar uno de estos dos segmentos en dos segmentos de 256Kbytes, estos aun siguen siendo
grandes, por lo que otra vez se particona uno de ellos, luego se tienen dos segmentos de 128Kbytes, los que siguen siendo
grandes, se vuelven a particionar teniendo dos de 64Kbytes. Luego, aqu se tienen dos segmentos de 64Kbytes, el cual es el
mnimo tamao potencia de dos que soporta el proceso que requiere memoria.


4.3.- Memoria Virtual
Los sistemas que operan con memoria virtual generan un espacio de direccionamiento que no corresponde al
espacio de direccionamiento real en la memoria principal. Las direcciones de memoria que generan los procesos por lo general
se le conocen como direcciones virtuales o lgicas, estas direcciones son traducidas a su correspondiente direccin real
mediante alguna tcnica que por lo general esta apoyada en hardware. El espacio de direccionamiento que generan los
procesos corresponde a un espacio ficticio por ello se le llama virtual pues no esta formado por las direcciones reales que se
colocan en el bus de direcciones, sino que deben pasar por una etapa de traduccin antes.
La utilizacin de memoria virtual tiene algunas consecuencias importantes desde el punto de vista de los recursos.
Conceptualmente un proceso puede direccionar mas memoria que la memoria fsica disponible, esto se realiza sobre la base
de que un proceso no necesita estar completamente contenido en memoria para poder ejecutarse, sino que puede estar
parcialmente en memoria y el resto del proceso en disco. Luego el proceso completo puede ser ms grande que la memoria
fsica disponible. La visin del programador es simplificada con el uso de memoria virtual pues ya no tiene que preocuparse
por la memoria fsica, el slo debe preocuparse del programa.
Muchos programas no requieren tener todo su proceso contenido en memoria. De hecho en muchos de ellos existe
por ejemplo, control de errores, los cuales no siempre se producen , por lo cual el cdigo asociado a su tratamiento no
requiere estar permanentemente en memoria, la reserva de memoria para arreglos grandes tampoco se requiere
completamente, pues en general el programador sobredimensiona los arreglos al momento de definirlos (por si acaso).
Por lo general, se usan dos tcnicas para la implementacin de memoria virtual, estas se conocen como Paginacin
y Segmentacin.
Sistemas
dedicados
de un solo
usuario
Almacenamiento real en
sistemas de multiprogramacin
multiprogramacin
con particiones fijas
multiprogramacin
con particiones
variables
absoluto reubicable
paginacin
pura
segmentacin
pura
paginacin y
segmentacin
combinados
Almacenamiento vitual en
sistemas de multiprogramacin
Real Real Virtual
Evolucin de las organizaciones de almacenamiento


4.3.1.- Paginacin
La mayora de los sistemas que utilizan memoria virtual utilizan como mecanismo de implementacin la paginacin.
La paginacin es una tcnica que consiste en dividir la memoria virtual en un conjunto de bloques denominados pginas.
Cada pgina tiene su correspondiente en memoria a fsica denominado Marco de pgina. Las direcciones lgicas que se
Administracin de Memoria Sistemas Operativos
8
tienen como resultado del direccionamiento del cdigo, datos o stack del proceso pertenecen a cualquier pgina, esto quiere
decir que la paginacin proporciona un espacio de direccin lineal en donde se mezclan los datos, cdigo y pila de un
proceso.
La utilizacin de paginacin constituye una valiosa ganancia respecto a los sistemas de particiones fijas o variables,
vistas anteriormente. Los mecanismos vistos anteriormente obligaban almacenar completamente el proceso en memoria
contigua, el uso de memoria por un lado permite no contener el proceso completamente contenido en memoria y el uso de
paginacin permite la utilizacin de memoria dispersa, es decir no se requiere colocar el proceso en memoria contigua sino
que puede estar en distintas partes de la memoria. A continuacin se presenta un ejemplo de como funciona esto.
espacio de
direcciones
virtuales
direcciones en
la memoria
fsica
marco para
pgina
pgina virtual
24K-28K
2
1
x
4
0
6
x
x
5
3
4K-8K
8K-12K
12K-16K
16K-20K
20K-24K
32K-36K
28K-32K
24K-28K
36K-40K
0K-4K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
X 60K-64K
.
.
.
.
.
.
28K-32K


En la figura siguiente vemos una mquina que genera direcciones de 16 bits o hasta 64 KB en su espacio virtual.
Si slo tiene 32 KB de memoria real o fsica, el programa no se cargara completo, sin embargo una copia
completa de la core image del programa de hasta 64 KB estar en el espacio virtual o en disco, de forma que el SO pueda
utilizar las partes que requiera.
El espacio de direcciones virtuales se divide en unidades llamadas pginas.
Las unidades correspondientes en la memoria fsica se denominan marcos de pgina.
Las pginas y los marcos debe de tener el mismo tamao.
Los tamaos usuales van de 512 bytes a 8 KB, siendo el tamao de 4 KB el ms usual.
Ejemplo 1: una referencia a la direccin 9 K hace que la MMU vea que esta direccin est en la pgina virtual 2, la
cual est asociada con el marco de pg. 6 ubicado entre las direcciones reales 24 K y 28 K.
Ejemplo 2: una referencia a la direccin virtual 25 K viendo la MMU que esta direccin no se asocia a marco de
pgina alguno ya tiene una X en la figura, provocndose una falta de pgina.
En el hardware real, existir un bit presente/ausente para cada una de las entradas, para indicar la asociacin con un
marco de pgina. El producirse una falta de pgina el SO, que necesita un marco libre para traer la pgina desde el espacio
virtual:
1. Elige un marco de pgina con poco uso y,
2. De ser necesario, lleva el contenido a disco,
3. Trae la pgina requerida a memoria fsica,
4. Modifica la tabla de pginas y
5. Continua la ejecucin.
La traduccin de las direcciones virtuales en direcciones reales tiene un componente hardware agregado, esta por lo
general se denomina como MMU (Memory Management Unit) o bien Mapa de Memoria. Esta unidad puede estar formada
por un chip o un conjunto de chips y por lo general se ubican en la tarjeta madre del procesador.
Un esquema simple de administracin de memoria usando memoria virtual con paginacin se puede representar
mediante la siguiente direccin virtual:

p d

Donde p, corresponde al nmero de pgina y d indica el desplazamiento dentro de la pgina.

Administracin de Memoria Sistemas Operativos
9
4.3.2.- Tablas de pginas
En general, la MMU traduce las direcciones virtuales en reales con el apoyo de una tabla de pginas. La tabla de
pginas corresponde a una tabla que es direccionada por la primera parte de la direccin virtual, especificada mediante p,
dicho campo se usa como un ndice a la tabla de pginas, segn la figura anterior. Cada entrada en la tabla de pginas por lo
menos tiene el marco de pgina asociado a la pgina y un bit denominado Presente/Ausente, que indica si la pgina se
encuentra presente o ausente en la memoria. Si el bit esta en 1 entonces la pgina tiene asociado un marco de pagina en
memoria.
En un sistema con memoria virtual y paginacin el mecanismo con una tabla de pginas se presenta a continuacin:

Memoria
CPU MMU
P D
dir. inicio



+

M D
M


Tablas de Paginas
En la mayora de los sistemas la tabla de pginas se encuentra en memoria todo el tiempo. Sin embargo en los
sistemas donde los procesos pueden ser muy grandes se necesitan mecanismos adicionales que permitan aumentar el
desempeo del sistema. De esta manera existen MMU donde en vez de trabajar con una nica tabla de pginas trabajan con
tablas de varios niveles.
Un ejemplo de la operacin interna de MMU con direccin de 16 bits, se muestra a continuacin
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0
indice a la
tabla de
pginas
010
000
000
011
100
000
110
001
000
000
000
000
000
111
000
101
0
4
3
2
1
5
9
8
7
6
10
14
13
12
11
15
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
0
110
0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0
desplazamiento
direccin fsica
direccin virtual
bit presente/ausente

Una direccin virtual se divide en un nmero de pgina virtual y un desplazamiento dentro de ella. El nmero de
pgina virtual es utilizado como un ndice en la tabla de pginas a travs del cual encontraremos la direccin del marco de
pgina en memoria fsica.
A pesar de parecer algo simple, tenemos un par de aspectos a considerar:
1. La tabla de pginas puede ser muy grande.
2. La asociacin debe ser rpida.

Administracin de Memoria Sistemas Operativos
10
El tamao de la tabla de pginas que actualmente se utilizan es de 32 bits para direcciones, con los cuales podemos
direccionar 1 M pginas, requirindose 1 M entradas en la tabla de pginas, y debemos considerar que cada proceso requiere
su propia tabla de pginas.
La necesidad de una asociacin rpida:
La asociacin virtual - fsica se requiere para cada una de las referencias a memoria
El diseo ms sencillo (de hardware) consiste en mantener una tabla de pginas en un array de registros
rpidos, con una entrada por cada pgina virtual.
Una desventaja de este mtodo est en el costo del array de registros.
Este array tambin deber ser considerado en el cambio de contexto.
Otra alternativa es contener completamente la tabla de pginas slo en memoria, requirindose ms
referencias a memoria para cada instruccin.

Tablas de pginas de varios niveles.
Para evitar tener que manejar tablas de gran tamao en memoria, se utiliza este esquema, el resto, o sea las tablas no
ocupadas se mantienen en disco. En un esquema con mltiples pginas, la direccin virtual esta compuesta por tantos
campos como tablas de pginas posee y adems el desplazamiento. A continuacin se presenta un esquema de memoria
virtual con mltiples tablas de pginas.

Direccin Virtual

P1 P2 D


+
Tabla pag. 1 nivel Tabla pag. 2 nivel




Direccin real

En el ejemplo de la figura, se maneja una direccin virtual de 32 bits dividida en dos campos de 10 bits para apuntar a
210 = 1024 entradas en cada tabla y un desplazamiento de 12 bits = 4 KB para el tamao de cada pgina.

PT1 PT2 offset
6
5
4
3
2
1
0
7
tabla de pginas
de nivel superior
1023
PT1
10 10 12
tabla de pginas
de segundo nivel

Administracin de Memoria Sistemas Operativos
11
Formato de entrada en la tabla de pginas
Por lo general, la entrada en la tabla de pginas puede estar representada por el siguiente formato:

Bit presente/ausente Bits proteccin Bit Referencia Bit Modificado

En donde se encuentran los siguientes campos.
Bit Presente/Ausente: si es = a 1 entonces indica que la pgina tiene asociado un marco de pgina; si es = a 0 quiere
decir que no tiene asociado un marco de pgina. Cuando el bit Presente/ausente es 0 al momento de la consulta se
dice que ocurre un fallo de pgina.
Bits de proteccin: Puede estar formado por 1 bit o por 3; si es un bit, entonces si el bit esta en 0 indica que tiene
privilegios de lectura y escritura; si esta en 0 entonces tiene privilegios de solo lectura. Si esta formado por 3 bits,
entonces cada uno de ellos representa los privilegios de lectura, escritura y ejecucin; usndose un 1 para
habilitarlos y un 0 para deshabilitarlos.
Bit modificado : Si esta en 1 entonces indica que el marco de pgina asociado a la pgina ha sido modificado.
Bit de referencia: Si est en 1 indica que pgina ha sido referenciada. Esta informacin es utilizada por algunos
algoritmos de reemplazo de pginas.

4.3.3.- Memoria Asociativa
Otro mecanismo que utilizan la mayora de los sistemas de administracin de memoria con el fin de aumentar el
desempeo es la Memoria Asociativa o tambien conocida como TLB ( Translation Lookaside Buffers).
La memoria asociativa consiste bsicamente en un conjunto de registros que se ubican en la MMU con el objetivo
de almacenar all las referencias de las pginas ms referenciadas con sus correspondientes marcos de pginas. La idea con
ello es obtener a partir del nmero de pgina el marco de pgina inmediatamente, sin necesidad de consultar la tabla de
pginas.
El formato de cada entrada en la memoria asociativa es por lo general de la siguiente manera:

Dato vlido Pgina Bit Modificado Bit proteccin Marco pgina

Como se aprecia en la figura el formato contempla el nmero de la pgina, Bits de proteccin el bit modificado el
nmero de marco de pgina.
Dato vlido pgina modificado proteccin marco de pgina
1 140 1 rw 31
1 20 0 rx 38
1 130 1 rw 29
1 129 1 rw 62
1 19 0 rx 50
1 21 0 rx 45
1 860 1 rw 14
1 861 1 rw 75

El mecanismo de traduccin de direccin virtual en direccin real ocurre de la siguiente manera. Con el nmero de
pgina se verifica con cada uno de los registros de la TLB si el nmero de pgina coincide con alguno, si se encuentra
entonces se obtiene el marco de pgina directamente si los bits de proteccin se lo permiten. Si la pgina no se encuentra en
la TLB, entonces se busca en la tabla de pginas y si hay registros libres en la TLB se anota la informacin correspondiente a
esa pgina en ella.
La informacin mantenida en la memoria asociativa esta regida por el grado de utilizacin de las pginas, aquellas
que se referencien con mayor frecuencia se encontrarn en ella.
El nmero de registros pertenecientes a la memoria asociativa es dependiente de la arquitectura. Por lo general son
de 16 o 32 registros.
A continuacin se presenta un esquema de como funciona este mecanismo.
MMU Memoria
TLB
CPU
No Pag No Marco


Administracin de Memoria Sistemas Operativos
12
4.3.4.- Algoritmos de reemplazo de pginas
En un sistema multiprogramado con intercambio, y en particular sistemas que trabajan con memoria virtual con
paginacin, el reemplazo de pginas est implcito, dado que un sistema con memoria virtual permite que un proceso no este
contenido en memoria completamente, quiere decir que parte de l est en disco. Luego, si el sistema de memoria virtual
trabaja con paginacin y el proceso no esta completamente en memoria entonces posee pginas que tienen asociado un
marco de pgina y hay pginas que no tienen asociado un marco, por lo tanto esas pginas estn en disco.
Cuando las instrucciones que se desean ejecutarse estn en pginas que no tienen asociadas marcos, se debe
buscar marcos libres para asociarlas. Sin embargo, puede ocurrir que el sistema no posea marcos de pginas libres o bien el
nmero de marcos libres sea inferior a los exigidos para el buen funcionamiento del sistema. En este caso el sistema debe
ejecutar alguna accin que le permita liberar marcos de pginas para asignrselos a las pginas que lo necesitan. Las pginas
que tienen asociadas marcos de pginas que se elijan como donadoras de marcos deben ser guardadas en disco. De estas
circunstancias nace la necesidad del sistema por poseer algoritmos que le permitan reemplazar pginas de memoria a disco.
Con el fin de utilizar los mejores criterios para el reemplazo de pginas se conocen diversos algoritmos de reemplazo
de pginas. A continuacin se presentan algunos de ellos.
ALGORITMO OPTIMO
La idea de este algoritmo es tener claro cuales sern las instrucciones que sern ejecutadas en el futuro. Con esta
informacin se pueden etiquetar las instrucciones con el nmero de instrucciones que ejecutarn antes que ellas. Una vez
que se tenga esta informacin el algoritmo puede decidir reemplazar la pgina asociada a la instruccin con una etiqueta ms
alta.
El problema de este algoritmo es que es ideal, pues no es realizable, al momento del fallo de pgina no se sabe cual
ser la siguiente pgina que se referenciar. Una situacin parecida ocurre en uno de los algoritmo de planificacin de la CPU
denominado SJF.
ALGORITMO NRU (REEMPLAZO SEGN EL USO NO TAN RECIENTE)
Este algoritmo consiste en reemplazar aquellas pginas que no han sido utilizadas ltimamente. La aplicacin de este
algoritmo requiere del apoyo de dos de los bits que ya hemos analizado, del bit R (bit de referencia) y del bit M (bit
modificado). EL bit R es activado cuando se hace referencia a la pgina y el bit M es activado cuando la pgina es
modificada. El bit R es desactivado peridicamente para poder diferenciar solo aquellas referencias mas recientes.
El algoritmo funciona a un conjunto de clases que se definen de acuerdo a los valores que toman los bits R y M. La
clasificacin en distintas clases se presenta a continuacin:
Clase 0: R=0 y M=0 , no se ha hecho referencia a la pgina ni ha sido modificada.
Clase 1: R=0 y M=1, no se ha hecho referencia a la pgina, pero si ha sido modificada.
Clase 2: R=1 y M=0, se ha hecho referencia a la clase, pero no se ha modificado.
Clase 3: R=1 y M=1, se ha referenciado y se ha modificado la pgina.
Cuando ocurre un fallo de pgina el algoritmo contempla reemplazar aquellas pginas que pertenecen a la clase 0, 1,
2 y 3 en ese orden, es decir, si existen pginas de la clase 0 ellas son las que se reemplazan, si no existen pginas de esa clase
se reemplazan pginas de la clase 1, si no hay de la clase 1 se reemplazan las de la clase 2, y asi, sucesivamente.
ALGORITMO FIFO (SE REEMPLAZA PGINA MS ANTIGUA)
Este algoritmo se implementa con una lista que posee el sistema operativo acerca de todas las pginas que estn en
memoria. Dicha lista esta ordenada por orden de llegada, es decir, la primera pgina de la lista es la ms antigua y la ltima la
mas nueva. Cuando ocurre un fallo de pgina se reemplaza la primera pgina de la lista.
Este algoritmo, asi como se explica no es muy usado pues no considera la importancia de las pginas ni conque
frecuencia se estan utilizando.
ALGORITMO DE REEMPLAZO DE SEGUNDA OPORTUNIDAD
Este algoritmo es el mismo que el FIFO solo con una variacin, se considera la frecuencia con la que son
referenciadas las pginas. El algoritmo acta de la siguiente manera:
Cuando ocurre un fallo de pgina se revisa la lista de pginas desde la ms antigua a las mas nueva. Si el bit R de la
pgina ms antigua es 0 entonces se reemplaza esa pgina pero si el bit R es 1 entonces se coloca el bit R en 0 y se coloca al
final de la lista, luego se consulta por la siguiente pgina ms antigua, y asi sucesivamente.
El algoritmo se llama de segunda oportunidad porque se le da a cada pgina una segunda oportunidad de quedarse
en memoria.
El problema de este algoritmo es que es de implementacin lenta, pues la lista debe modificarse, es decir se debe
sacar un nodo de un sitio para ser insertado en otro lugar.
ALGORITMO DEL RELOJ
Este algoritmo bsicamente es igual al de segunda oportunidad solo que con una implementacin distinta. En este
caso se tiene una lista circular, donde existe un puntero que apunta a la pgina ms antigua, luego cuando ocurre un fallo de
pgina se consulta por el bit R de la pgina, si es 0 entonces esa pgina se elige para el reemplazo, en cambio si el bit R es
Administracin de Memoria Sistemas Operativos
13
igual a 1 entonces el bit R se pone en 0 y se incrementa el puntero de manera que apunte al siguiente nodo de la lista que
corresponde a la siguiente pgina mas antigua.
ALGORITMO DEL RELOJ CON DOS MANECILLAS
El algoritmo aqu es igual al anterior solo que existen dos punteros un puntero va delante de otro, el primer puntero
verifica el bit R de la pgina, si este es igual a 1 se pone en 0, luego cuando pase el segundo puntero verifica el estado del bit
R si es 0 entonces intercambia la pgina sino lo pone en 0 y apunta a siguiente pgina. El objetivo de este algoritmo es
privilegiar a aquellas pginas ms referenciadas para que se queden en memoria.
ALGORITMO LRU (REEMPLAZO DE PGINA DE MENOR USO RECIENTE)
Este algoritmo consiste en reemplazar aquella pgina que no halla sido referenciada en el mayor periodo. La idea de
este algoritmo es que las pginas que no se han referenciado en un buen periodo de tiempo difcilmente sern referenciadas
en un tiempo cercano.
La implementacin de este algoritmo por lo general es caro. Una forma de hacerlo es mantener una lista enlazada de
todas las pginas que tienen asociado un marco de pgina ordenada de tal manera que la primera pgina de la lista es la de
uso ms reciente y la ltima es la de uso menos reciente. El problema surge porque la lista debe ser actualizada
continuamente despus de cada pgina sea referenciada y luego mover dicha pgina al principio de la lista.
Utilizando hardware adicional es posible implementar una solucin en hardware. Una de estas soluciones consiste
en tener un contador por pgina el cual se incrementa despus que la pgina es referenciada. Luego cuando ocurre un fallo
de pgina se elige aquella pgina que posea el contador con menor valor numrico.

4.3.5.- Aspectos de diseo
Modelo de conjunto de trabajo
En la prctica cuando un programa se ejecuta las pginas que contienen las instrucciones que se ejecutan se van
cargando en memoria a medida que se requieran, producindose por lo tanto, tanto fallos de pgina como pginas se
requieran cargar en memoria. A este mecanismo de carga de pginas se denomina Paginacin por demanda.
Por lo general, los procesos no requieren tener todas sus instrucciones ni datos en memoria, sino que tanto los
datos como las instrucciones se necesitan por ciertos periodos de tiempo. Esto significa que por lo general en un periodo de
tiempo el proceso solo requiere un conjunto de sus pginas en memoria. A esta caracterstica de los procesos se le denomina
localidad de referencia. Al conjunto de pginas que requiere un proceso en un intervalo de tiempo de su ejecucin se le
conoce como Conjunto de trabajo. Luego, se dice que si un proceso tiene su conjunto de trabajo en memoria en determinado
momento, entonces el proceso no genera fallos de pginas.
Dadas las caractersticas del conjunto de trabajo muchos sistemas intentan llevar un registro de los conjuntos de
trabajos de los procesos de tal manera que la siguiente vez que se ejecute el proceso las pginas asociadas a sus conjuntos
de trabajo puedan se cargadas antes que se necesiten. A este mecanismo se le conoce como Prepaginacin.
Por otro lado, el concepto de conjunto de trabajo puede ser utilizado por el algoritmo de reemplazo de pginas, pues
a parte de chequear, por ejemplo, por el bit R se puede ver si esa pgina pertenece o no al conjunto de trabajo, si pertenece
entonces esa pgina no se reemplaza.

Tamao de la pgina
El tamao de la pgina es un aspecto de diseo importante de considerar. Si la pgina es muy pequea se necesita
utilizar una gran cantidad de recursos del sistema para poder administrarlas, adems que cada proceso requerir de mas
pginas para almacenarse en memoria.
Por otro lado, si la pgina es muy grande se pierde mas memoria por concepto de fragmentacin interna.
El tamao ptimo debe calcularse considerando los aspectos mencionados mas el tamao promedio de los procesos
que se ejecutan en el sistema.

Pginas compartidas
Otro aspecto de diseo importante de considerar se refiere a la comparticin de pginas. En un sistema multiusuario,
multitarea es frecuente que distintos usurarios ejecuten una misma aplicacin simultneamente. En estas condiciones el
sistema debera permitir compartir las pginas asociadas al cdigo de la aplicacin.
Suponga, por ejemplo que el usuario 1 y el usuario 2 estn usando el mismo editor de texto, el sistema debera dejar
como compartidas las pginas que estn relacionadas con el cdigo ejecutable de la aplicacin y las pginas de datos de
cada uno de los usuarios deberan ser particulares a cada uno de ellos.
Dado que pueden surgir algunas situaciones no deseadas con el manejo de pginas compartidas el sistema maneja
estructuras especiales para el control de estas pginas. Una de estas situaciones , por ejemplo, puede ser que el usuario1
termine de editar su archivo y salga del editor, lo que podra ocurrir es que las pginas fueran reemplazadas, lo cual ira en
desmedro del usuario2 que tendra que volver a cargarlas en memoria.
Administracin de Memoria Sistemas Operativos
14
Algunos autores asocian el concepto de reentrancia con las pginas compartidas, en el sentido que si el cdigo es
reentrante entonces puede ser compartido. Que el cdigo sea reentrante no se modifica a si mismo, de manera que dos o ms
procesos pueden ejecutar el mismo cdigo al mismo tiempo.

Hiperpaginacin
Otro concepto importante que debe quedar claro, es el que se conoce como Hiperpaginacin. Se dice que un
proceso esta hiperpaginado si emplea mas tiempo paginando, es decir, produciendo fallos de pginas y cargando las pginas
en memoria; que ejecutndose propiamente tal. Esto se puede producir, por ejemplo, porque un proceso tiene baja prioridad
de ejecucin y el sistema no le asigna un nmero de marcos de pginas suficientes para cargar sus pginas.

4.4.- Segmentacin
La paginacin es una tcnica que permite aislar al usuario de la perspectiva de la memoria real, el usuario tiene una
visin sobre un espacio de direccionamiento lgico. Sin embargo la perspectiva del usuario con la paginacin es un nico
gran espacio de direccionamiento en donde se encuentra tanto los datos, procedimientos, funciones como programa
principal sin ningn orden predeterminado. Esta visin no es la que por lo general poseen los usuarios respecto a la forma
que se almacena esta informacin, por lo general los usuarios tienden a pensar que los datos se almacenan en algn lugar
determinado, los procedimientos y funciones en otro lugar y el programa principal en otro lugar. Esta perspectiva es mas bien
lgica de donde se encuentra almacenada la informacin.
De esta visin surge la tcnica denominada segmentacin, con ella en un sistema de administracin de memoria se
distinguen diferentes espacios de direccionamiento, los cuales reciben el nombre de segmentos. Cada segmento tiene una
serie lineal de direcciones de un tamao determinado. Una de las principales caractersticas de los segmentos es que son de
longitud variable, es decir que pueden crecer, a diferencia de las pginas. Por otro lado, en un sistema de administracin de
memoria existen segmentos de variados tamaos, vale decir, no son todos iguales. Dado que los segmentos son espacios de
direccin independientes uno de otros y adems como son de longitud variable, cada uno de ellos puede crecer en forma
independiente sin afectar ni ser afectado por los dems.
A continuacin se presenta un esquema que refleja el concepto de segmento.

Segmento1
pila Segmento2

Segmento3 Datos

Procedimientos Segmento4

Prog. princ.


ESPACIO DE DIRECIONAMIENTO LOGICO
Desde el punto de vista de informacin compartida, los segmentos proporcionan mas facilidades que en el caso del
manejo de pginas compartidas, puesto que como los segmentos son entidades lgicas es posible tratar un segmento como
compartido, sin necesidad que los procesos contengan el segmento en su propio espacio de direccionamiento. Con la
utilizacin de pginas compartidas vimos que haba ciertos inconvenientes en el uso de ellas.
Un problema que adolece a la administracin con segmentacin es la fragmentacin externa, pues cuando salen
continuamente diversos segmentos de memoria y se van incorporando otros nuevos, la memoria es fragmentada en diversos
huecos que en algunos casos pueden ser demasiado pequeos para alcanzar a contener a otro.
La implementacin de administracin de memoria con segmentacin puede ser bsicamente de dos tipos:
Segmentacin pura
Segmentacin con paginacin

4.4.1.- Segmentacin pura
En este esquema slo se tienen segmentos para representar el direccionamiento lgico.
El sistema de administracin de memoria con segmentacin pura se representa de manera lgica mediante un nombre
y un tamao que puede variar. Sin embargo para facilitar la implementacin los segmentos se identifican mediante un nmero.
La implementacin de un sistema de administracin con segmentacin contempla un par de registros base y lmite y una
tabla de segmentos. Su relacin se representa mediante el siguiente diagrama.
Administracin de Memoria Sistemas Operativos
15

dir. virtual Memoria
CPU MMU
P D
dir. tabla S



+

M D




M



Tablas de Segmentos
4.4.2.- Segmentacin con Paginacin
En este esquema se identifican las dos tcnicas que hemos vista, segmentacin y paginacin. Este tipo de
administracin contempla la divisin del espacio de direccionamiento lgico en un conjunto de segmentos, en donde cada
segmento tiene asociado a su vez un conjunto de pginas. A continuacin se presenta un esquema de como funciona este
tipo de administracin.
La combinacin de estos dos esquemas ha sido adoptada por muchos microprocesadores con el fin de aminorar las
desventajas que poseen cada uno de estas tcnicas.

Memoria
CPU MMU
S P D
dir. inicio



+
M
M D


tabla de seg. tabla de paginas

You might also like