ANUNCIOS
Imagen de ArticuloTablas de memoria
en Linux

TABLAS DE MEMORIA EN LINUX

El direccionamiento de memoria virtual de Linux, hace uso de una estructura de tabla de páginas con tres niveles, formada por los siguientes tipos de tablas (cada tabla individual es el tamaño de una página):

Linux supone que hay tres niveles de páginas:

El directorio de tablas de páginas (punteros a las tablas intermedias).

La tabla de páginas intermedia (punteros a tablas de páginas).

Las tablas de páginas (punteros a páginas).


Tablas de páginas de tres niveles

(1) Directorio de páginas: Un proceso activo tiene un solo directorio de páginas que es del tamaño de una página. Cada entrada en el directorio de páginas apunta a una página del directorio intermedio de páginas. Para un proceso activo, el directorio de páginas tiene que estar en la memoria principal.

(2) Directorio intermedio de páginas: Este directorio puede ocupar varias páginas y cada entrada de este directorio apunta a una página de la tabla de páginas.

(3) Tabla de páginas: Esta tabla de páginas también puede ocupar varias páginas, y cada entrada de la tabla de página hace referencia a una tabla virtual de procesos.

Para utilizar esta estructura de la tabla de páginas a tres niveles, una dirección virtual en Linux se ve como un conjunto de cuatro campos, donde cada uno de ellos representa un desplazamiento dentro de una tabla de páginas. Para traducir una dirección virtual a una física, el procesador tiene que tomar el contenido de cada uno de estos campos, convertirlos en desplazamientos de la página física que contiene la tabla de páginas y leer el número de marco de página del siguiente nivel de la tabla de páginas.

El campo más a la izquierda (más significativo) se utiliza como índice en el directorio de páginas. El siguiente campo sirve como índice en el directorio intermedio de páginas. El tercer campo sirve como índice en la tabla de páginas. Y el cuarto y último campo, indica el desplazamiento dentro de la página seleccionada de la memoria. La estructura de tabla de Linux es independiente de la plataforma y fue diseñada para ajustarse al procesador Alpha de 64 bits, el cual proporciona el soporte de hardware para los tres niveles de paginación.

Para la asignación de páginas y aumentar la eficiencia de cargar y descargar páginas a y desde la memoria principal, Linux define un mecanismo para tratar bloques de páginas contiguos correspondientes a bloques de marcos de página contiguos.  Para este propósito, se utiliza el Buddy System. El kernel mantiene una lista de grupos de marcos de página contiguos de tamaño fijo; un grupo puede estar formado por 1, 2, 3, 8, 16 o 32 marcos de páginas. Como las páginas se asignan y liberan en la memoria principal, los grupos se dividen y se intercalan utilizando el algoritmo de los colegas.

Cada nivel de tablas contiene el número de marco de página del siguiente nivel en la tabla de páginas. Una dirección virtual se divide en un número de campos, donde cada uno de ellos representa un desplazamiento dentro de una tabla de páginas. Para traducir una dirección virtual a una física, el procesador tiene que tomar el contenido de cada uno de estos campos, convertirlos en desplazamientos de la página física que contiene la tabla de páginas y leer el número de marco de página del siguiente nivel de la tabla de páginas. Esta operación se repite tres veces hasta que se encuentra el número de la página física que contiene la dirección virtual. Ahora el último campo de la dirección virtual se utiliza para encontrar el dato dentro de la página. 

Nota: El Buddy System (sistema de colegas) tiene como objetivo principal evitar la fragmentación externa. Linux utiliza el algoritmo Buddy para asignar y liberar eficientemente bloques de páginas.


Diseño de sistemas operativos. Tema 3: Gestión de memoria. [En línea]. Disponible en: http://www.ual.es/~acorral/DSO/Tema_3.pdf
Lección 11: Paginación en Linux. [En línea]. Disponible en: http://sopa.dis.ulpgc.es/ii-dso/leclinux/mm/paginacion/LEC11_PAGINACION.pdf.

Etiquetas:   GESTION DE MEMORIA   LINUX   MEMORIA   TABLAS DE MEMORIA

Articulos Relacionados
Publicidad
Comentarios
comments powered by Disqus