Sunteți pe pagina 1din 7

Gestin y Programacin de Memoria en Sistemas Linux

Gestin de Memoria en UNIX


En el sistema operativo UNIX, la gestin de memoria ha variado de las versiones
antiguas a las actuales. Antes, UNIX se basaba slo en el intercambio (swapping)
donde se empleaban particiones variables sin ningn tipo de esquema de memoria
virtual. Las versiones actuales se basan en la memoria virtual paginada, utilizando
para ello la paginacin combinado con el intercambio.
Las direcciones lgicas generadas por un programa se dividen en un nmero de
pginas con el mismo tamao. Este tamao vara dependiendo de la versin,
utilizndose en versiones anteriores tamaos de 512 bits o 1024 bits. Hoy en da,
con las CPUs actuales el tamao de pgina en los equipos a 32 bits es de 4 KB, por
lo que el espacio de direcciones es de 2 elevado a 32 bits (4 GB).
Respecto a la paginacin. UNIX utiliza las tablas de pginas, el descriptor del bloque
donde se almacena la informacin para acceder a la pgina en memoria secundaria
y los marcos de pgina que guarda informacin acerca del estado de la pgina, el
nmero de procesos que referencia al marco y el dispositivo que contiene la copia
de la pgina.
Los marcos no asignables a un proceso son marcos libres asignables a cualquier
proceso. El sistema define el nmero mnimo de marcos libres, que comprueba
peridicamente. Si en un instante no se alcanza dicho lmite, un proceso paginador
envejece las pginas. Toda referencia a una pgina pone a cero la edad de la
pgina. Si la pgina pasa una edad, la pgina pasa a estado libre. La pgina de un
marco libre puede ser rescatada en una referencia si el marco no hubiera sido
asignado antes.
En situaciones donde hay mucha demanda por parte de los procesos, puede ocurrir
que el paginador no sea capaz de conseguir marcos libres a la velocidad necesaria.
Entonces es cuando se produce el swapping, mediante el cual se saca algn
proceso de la memoria principal y se pasa a la memoria secundaria (swap out). En
cambio cuando existe espacio en la memoria principal, se intercambian los procesos
a memoria copiando desde el rea de intercambio (swap in). Los criterios de
eleccin se basan en el estado del proceso, su prioridad, el tamao del programa y
el tiempo que lleva en memoria.
Para soportar swapping se requiere un espacio de intercambio en almacenamiento
secundario, normalmente en un disco. Se puede utilizar un dispositivo especfico,
una particin del disco o incluso compartir la misma particin del sistema de
ficheros. En los sistemas UNIX se suele utilizar una particin del disco para ello.

En estos sistemas se puede observar como en memoria se carga todo lo que se


pueda. Es decir, se utiliza la memoria como cach de datos. Esto se utiliza para
optimizar el sistema y hacerlo ms rpido.
En memoria se carga todos los datos a los que tenga que acceder la CPU, por lo que
si sta tiene los datos en memoria en vez de en el disco, la rapidez de acceso a los
mismos ser mayor, por lo que el rendimiento aumenta. Ello hace que se optimice
la mayor cantidad de memoria principal disponible, ya que el uso de la misma es
del 100%. En cuanto, un proceso requiera de memoria se utilizar los mecanismos
de swapping ya descritos liberando la memoria utilizada para cach.
En UNIX las pginas pueden estar en diferentes estados. El valor de este estado se
refleja en el campo flags de la pgina. A continuacin se describen los estados que
puede estar una pgina:

Linux comparte muchas de las caractersticas de los esquemas de gestin de otros


sistemas UNIX, ms sin embargo tiene sus caractersticas propias y nicas.
El modelo utilizado es simple para que Linux pueda implementarse en mquinas
con amplias diferencias en las unidades de administracin de memoria, hasta una
que posea un hardware de paginacin muy sofisticado. sta es un rea que ha
cambiado muy poco en dcadas, ha funcionado tan bien que no ha necesitado
mucha revisin.

Conceptos fundamentales
Utiliza un esquema de paginacin a tres niveles.

Paginacin por demanda, aunque para ser ms eficiente pre-pgina algunas


pginas cuando se produce un fallo de pgina.

No utiliza el concepto de conjunto de trabajo


Tamao de pgina fijo. En el Pentium de 4KB
Cada proceso de usuario tiene su propio espacio de direcciones virtual

Si las direcciones son de 32 bits, el espacio de direcciones virtual, de 4GB, dividido


en:

3GB para el espacio de direcciones virtual para el proceso


1GB para sus tablas de pginas y otros datos del kernel, accesible slo en
modo ncleo usando llamadas al sistema.

El espacio de direcciones virtual se divide en reas o regiones homogneas y


contiguas.
Cada rea consiste en una serie de pginas consecutivas con las mismas
propiedades en cuanto a proteccin y paginacin. El segmento de texto podra ser
un ejemplo de rea donde puede haber huecos entre las distintas reas y cualquier
referencia a la memoria que caiga dentro de un hueco producir un fallo de pgina.
Para cada rea el sistema operativo almacena, entre otros, los siguientes datos:

Modo de proteccin (si es paginable o no)


Direccin en la que crece (hacia arriba el segmento de datos, hacia abajo la

pila)
Si es privada o compartida
Si tiene asignado hueco en la zona de intercambio, y si lo tiene, dnde.

Ejemplo de divisin en reas del espacio de direcciones virtuales de dos procesos


que comparten el cdigo:

Esquema de paginacin de tres niveles


Se tienen los siguientes tipos de tablas:

Directorio global, cada proceso tiene slo uno que ha de estar en memoria, y
su tamao es de una pgina. Cada entrada apunta a un directorio intermedio

de pginas (tabla intermedia de pginas).


Directorio intermedio de pginas, que puede ocupar varias pginas. Cada

entrada seala a una pgina de la tabla de pginas final.


Tabla de pginas, que puede ocupar varias pginas. Cada una de sus
entradas hace referencia a la pgina virtual requerida.

En el Pentium, que utiliza paginacin a 2 niveles:


Cada directorio intermedio de pginas tiene una nica entrada. As que, la entrada
del directorio global sirve para seleccionar la tabla de pginas que se usar.
Cada direccin virtual se divide en 4 campos:

Directorio: 1er campo, para consultar el directorio global.


Intermedio: 2do campo, para consultar el directorio intermedio de pginas.
Pgina: 3ro campo, para acceder a la tabla de pginas.
Desplazamiento dentro de la pgina seleccionada, 4to campo.

Administracin de memoria fsica


Una parte de la memoria es utilizada para el kernel el resto de la memoria est
disponible para (entre otros usos):
Pginas de usuario.
El cach de buffer empleado por el sistema de ficheros contiene bloques de disco
que se han ledo recientemente, o que se han ledo por adelantado su tamao es
dinmico y compite por la misma reserva de pginas que las pginas de usuario.
El cach de paginacin, formado por un conjunto de pginas de usuario que ya no
se necesitan y estn esperando que se les pagine a disco. Si una pgina se reutiliza
antes de que se desaloje de la memoria, podr recuperarse con rapidez.
Gestin de memoria libre:
Linux utiliza el sistema de colegas para asignar/liberar todos los marcos de pgina:

El sistema de colegas le permite asignar intervalos de marcos contiguos de tamao


arbitrario, si se solicitan para registrar la memoria libre. Mantiene listas de grupos
de marcos contiguos de tamao fijo: 1, 2, 4, 8,. . . marcos libres. El tamao ms
pequeo que se puede asignar es de un marco y la asignacin contigua de marcos
permite aumentar la eficiencia de cargar y descargar pginas a y desde la memoria
principal.
Asignacin de memoria para el ncleo:
La memoria del kernel es permanente, ninguna de sus partes se pgina a disco el
kernel, como programa que es, necesita asignar y liberar memoria de forma
dinmica:
Por ejemplo, maneja mdulos, que normalmente son controladores de dispositivos,
que se cargan dinmicamente, tienen un tamao arbitrario y se les debe asignar un
rea de memoria de kernel contigua usando el sistema de colegas se asigna
memoria contigua en el kernel.
Problema: se puede producir mucha fragmentacin interna ya que, por ejemplo, hay
que asignar 128 marcos a un mdulo que necesita slo 65 marcos contiguos.
Para pequeas asignaciones de memoria, Linux usa un segundo mtodo de
asignacin para evitar la fragmentacin interna:
Empleando el sistema de colegas, se reserva memoria que se divide en fragmentos
ms pequeos que una pgina, que son administrados aparte. Los fragmentos se
mantienen en un conjunto de listas enlazadas, una por cada tamao de fragmento
(32, 64, 128, 252, 508, 2040 y 4080 bytes).
Los fragmentos pueden dividirse y agregarse de forma similar al sistema de
colegas, movindose de una lista a otra en funcin de ello, la asignacin de
memoria implica determinar cul es la lista apropiada y luego tomar el primer
fragmento libre de la lista (o bien asignar una nueva pgina y dividirla en
fragmentos si no queda un fragmento libre adecuado).
Un tercer mtodo permite asignar memoria cuando slo tiene que estar contigua en
el espacio virtual, pero no en la memoria fsica.
Zona de intercambio
Gestiona particiones y ficheros de paginacin. A las particiones de paginacin se
accede como un dispositivo crudo, permite hasta un mximo de 8 ficheros, que se
crean con un tamao fijo que no cambia durante su uso, es ms eficiente usar una
particin que un archivo:

No es necesario que haya correspondencia entre bloque de archivo y bloques de


disco (ahorra la E/S de disco por lectura de bloques indirectos). Las escrituras fsicas
pueden ser de cualquier tamao, no tienen que ser del bloque de archivo entero y
una pgina siempre se escribe contigua en el disco, en un archivo de paginacin
podra o no quedar contigua.
La asignacin del hueco de intercambio se hace cuando se necesita. Los segmentos
de texto se paginan desde su archivo en disco, no se les asigna hueco en la zona de
intercambio.
Para cada particin/archivo de paginacin hay un mapa de bits para controlar los
huecos asignados/libres. A las particiones/ficheros se les puede asignar un valor de
prioridad, se les asigna mayor prioridad (lo normal) cuando se necesita asignar un
hueco a una pgina, se escoge la particin/archivo de ms alta prioridad y con un
hueco disponible.
Algoritmo de reemplazo de pginas
Trata de mantener algunos marcos desocupados, creando una reserva de marcos
libres, para poderlos usar cuando se solicite un nuevo marco. El verdadero
algoritmo de paginacin se encarga de mantener esta reserva de marcos libres, un
demonio de paginacin peridicamente comprueba si hay suficientes marcos libres:

Si hay suficiente: se desactiva hasta la prxima vez.


Si no hay suficientes: trata de recuperar marcos de diferentes tipos.

El demonio de paginacin tambin se puede activar si se necesitan marcos libres y


no hay suficientes.
Su cdigo consiste en un ciclo que se ejecuta hasta 6 veces, con urgencia creciente,
invoca a tres procedimientos que se encargan de recuperar diferentes tipos de
pginas el valor de urgencia se pasa como parmetro, para que el procedimiento
sepa cunto debe esforzarse por recuperar pginas.
El efecto de este algoritmo es que primero se toman las pginas fciles de cada
categora para despus ir tras las difciles cuando se han recuperado suficientes
pginas se duerme otra vez.
Los procedimientos para recuperar marcos:
1. Trata de recuperar pginas del cach de paginacin y del cach de buffer a
los que no se haya hecho referencia ltimamente, empleando un algoritmo
tipo reloj.
2. Busca pginas compartidas que al parecer ninguno de los usuarios est
utilizando mucho.
3. Intenta recuperar pginas de usuarios ordinarias.
Primero se ejecuta un ciclo que abarca todos los procesos y determina cul
es el que ms pginas tiene en memoria Una vez localizado ese proceso se

examinan todas sus pginas en orden por direccin virtual, partiendo del
punto donde se qued por ltima vez el procedimiento:
Si una pgina no es vlida, est ausente de la memoria, se comparte, est fija en la
memoria, o se est usando para DMA, se pasa por alto. Si la pgina tiene encendido
el bit de referencia, ste se apaga, y la pgina se pasa por alto. Si el bit de
referencia est apagado, la pgina se desaloja (esta parte es similar al algoritmo del
reloj, excepto que las pginas no se examinan en orden FIFO).
Respecto a la pgina seleccionada:
Si no est modificada, se abandona de inmediato, si est modificada, y tiene
asignado hueco en la zona de intercambio, se planifica para su escritura en disco, si
est modificada y no tiene asignado un hueco en la zona de intercambio, se coloca
en la cach de paginacin (de donde se podra volver a utilizar).
Examinar las pginas en orden por direccin virtual se basa en la esperanza de que
pginas cercanas entre s en el espacio de direcciones virtual tiendan a usarse o no
de manera colectiva.
Otro demonio, de forma peridica, verifica si la fraccin de pginas modificadas en
memoria es demasiado grande. En ese caso, comenzar a escribirlas a disco.

S-ar putea să vă placă și