Capítulo 9

Anuncio
Capítulo 9
Es un procedimiento de gestión de memoria muy eficaz en los SO multitarea que manejan
memoria virtual. Divide y manipula los programas y los datos en trozos de tamaño fijo (páginas).
Las páginas no guardan relación con la estructura lógica con la que se ha construido el software.
La paginación utiliza bloques de tamaño físico.
La mayor ventaja esta en la transferencia e intercambio de elementos entre la memoria virtual y la
física. El tamaño fijo facilita la ocupación de la memoria y el rendimiento en su explotación. Los SO
que manejan la paginación son muy simples y rápidos debido a que los algoritmos de
transferencia son muy simples (optimiza el aprovechamiento del espacio de memoria y acelera la
velocidad de acceso).
El mayor inconveniente es el mal aprovechamiento de memoria. Como el tamaño es fijo, puede
que un objeto de código requiera varias o menos de una página. La paginación no se adapta a
las necesidades de espacio que precisa el software.
Solo es necesario que un reducido número de páginas de la tarea en curso este ubicado en la MP
en cada momento.
El procesador Pentium siempre trabaja con segmentación, puede trabajar con paginación de
forma optativa.
Mecanismo de paginación
La unidad de paginación esta implantada en hardware dentro del Pentium.
Solo opera en modo protegido. Para su habilitación basta con poner 1b (PG) de uno de los
registros de control (programador de sistemas).
Cuando esta habilitada se divide a cada segmento en páginas sucesivas de 4KB c/u (el SO
realiza varios accesos a memoria para conseguir la misma información que se conseguía con la
segmentación en un solo acceso). El Pentium puede manejar páginas de hasta 4MB.
A medida que se necesitan las páginas, se cargan y distribuyen sobre la memoria física en forma
aleatoria.
La activación del bit PSE (del registro CR4) implica trabajar con páginas de 4MB, de otra manera
trabajara con páginas de 4KB.
El Pentium utiliza un buffer (BTB) de predicción de bifurcaciones que evita la necesidad de eliminar
las instrucciones que ya han sido buscadas y decodificadas.
La unidad de paginación traduce la dirección lineal a física. La paginación gobierna la memoria
con una gran tabla de millones de entradas, una por página. En cada entrada se guardarían la
dirección base de comienzo de la página y los atributos de la misma, como un descriptor, pero sin
el campo LÍMITE.
Los 32b de la dirección lineal no van directamente a la MP, sino que se llevan a la unidad de
paginación. Desarrolla la misma función pero en tabla de paginas.
Para referenciar la base de una página bastan 20b. De esta forma la tabla de páginas
proporciona en c/u de sus entradas los 20b de más peso de la dirección de la base. Finalmente se
le suma a la base el valor del desplazamiento (12b de menos peso de la dirección lineal) para
obtener la dirección física de 32b que apunta a la posición referenciada en una página de la MP.
Si cada entrada consta de 32b, la tabla de páginas tendrá un tamaño de 4MB.
Tablas de páginas
Quedan definidas por 3 parámetros:
 Base → 32b, los 12 últimos deberán ser 0 (páginas de 4KB) → solo se necesitan 20b
 Límite → no es necesario → tamaño fijo
 Atributos
Como la tabla tiene un tamaño de 4MB y debe residir en la MP para poder ser manejada por la
CPU, utiliza una gran cantidad de MP. Para reducir el espacio de memoria que ocupan las tablas,
Intel recurrió a una traducción en dos niveles.
En un primer nivel de traducción lo soporta la tabla denominada directorio de tablas de paginas,
consta de 1K entradas de 32b c/u, ocupa una pagina de 4KB y controla hasta 1.024, se
seleccionan mediante los 10b de mas peso de la dirección lineal. Cada entrada apunta a otra
página que se llama tabla de páginas y tiene la misma estructura que el directorio.
El directorio es fijo para cada tarea y su base esta almacenada en el registro de control de la CPU.
Para posibilitar la paginación es imprescindible que el directorio de paginación este ubicado en la
MP.
El acceso a una entrada del directorio se calcula sumándole a la base el valor de los 10b de más
peso. La entrada seleccionada tiene la dirección de la base de una página, que actúa como una
segunda tabla de páginas formada por 1K entradas de 32b. Para acceder a estas se le suma a la
base el valor de los 10b centrales. Y en esta se guarda la referencia a una página de trabajo de la
MP.
El directorio tiene 1K entradas y cada una de ellas direccionan a una tabla de páginas que hace
referencia a 1K páginas de la memoria, entre ambas se puede manejar 1M páginas. Para
mantener la paginación solo se precisan 8KB de la MP.
Cuando el Pentium maneja páginas de 4MB, los 10b de más peso de la dirección lineal se le
suman al contenido del registro CR3 para direccionar una entrada del directorio en donde se
guarda la base de la página a acceder y sus atributos. Como desplazamiento en la página se
utilizan los 22b de menos peso. Como las páginas son de 4MB la traducción se efectúa en un solo
nivel.
Ventaja en dos niveles: poco espacio de memoria principal que se precisa
Desventaja en dos niveles: inconveniente de lentitud, ya que la CPU debe acceder 3 veces a MP
para conseguir el dato.
Para acelerar el proceso Intel introdujo el mecanismo LTB. Otra solución para reducir el tamaño de
la tabla, es la tabla de páginas inversa (una entrada por cada marco de páginas). Esta solo da
información de las páginas guardadas en los marcos. Si se produce un fallo debe existir un
mecanismo de traducción de la información a memoria secundaria. El tamaño de la tabla es
constante, pero la paginación es más compleja.
Fallo de página
Cada vez q se detecta que la información no esta en MP, se genera un fallo, que origina una
excepción que llama a una rutina del SO que traslada dicha página desde la memoria virtual o
disco a la memoria física o RAM y actualiza el contenido de las entradas de las tablas de
traducción.
Como no se sabe con anticipación, el SO habitualmente crea espacio en disco para todas las
páginas del proceso en curso. También crea una estructura (puede ser parte de la tabla) para
grabar la zona del disco donde almacena cada página virtual.
Protección a nivel de página
Dos niveles de protección:
 Usuario: nivel de privilegio 3
 Supervisor: niveles 0, 1, 2
Siempre se toman como válidos los bits U/S Y R/W más restrictivos (numéricamente inferior) entre los
que hay en el directorio de páginas y los de la tabla de páginas que corresponda a la página en
cuestión.
U/S
R/W
Protección de
usuario (nivel 3)
Protección de
supervisor
(niveles 0, 1, 2)
0
0
Ninguno
Lectura/Escritura
0
1
Ninguno
Lectura/Escritura
1
0
Solo lectura
Lectura/Escritura
1
1
Lectura/Escritura
Lectura/Escritura
Formato de las entradas del directorio de las tablas de páginas
31
ATRIBUTOS
12 11
DIRECCION FISICA
DE LA PÁGINA (20)
DEFINIBLE
S
0
S
I
Z
D
A
0
P
C
D
P
W
T
U
/
S
R
/
W
P
Tabla de traducción de direcciones lineales (TLB)
La traducción de dirección lineal en dirección física es lenta, porque consulta a las dos tablas
(supone acceder fuera del microprocesador a la MP). Para acelerarlo, Intel introdujo una
pequeña memoria caché especial ultrarrápida (TLB: Translation lookaside buffer). Esta caché es de
acceso por contenido (CAM) y contiene etiquetas (dirección lineal) con sus respectivos datos
asociados (dirección física).
Cada vez que el mecanismo de paginación hace una traducción, guarda en la TLB el resultado.
En el Pentium hay una TLB de 32 entradas para la caché de instrucciones y otra similar para la de
datos.
Estructura y funcionamiento de la TLB
Con las 32 entradas de la TLB se controlas las 32 últimas páginas que ha manejado la CPU (espacio
total de 128 KB, suficiente para contener el área de trabajo de un proceso). El Pentium maneja 64
páginas y 256 KB.
Si el comparador no encuentra una etiqueta igual a la información suministrada, la CAM no
contiene la traducción que se busca y señaliza AUSENCIA o FALLO. Dos posibilidades:
1. La pagina esta presente en memoria y solamente se necesita crear la entrada de la TLB
que falla.
2. La pagina no esta presente en memoria y se necesita transferir el control al sistema
operativo para que trate un fallo de página.
El Pentium tiene 2 TLB independientes:
 Caché de instrucciones.
 Caché de datos: tiene 8 entradas exclusivas para páginas de 4MB y 64 para las de 4KB. Si se
aumenta el nº de páginas  se incrementa el nº de aciertos.
Ambas son invisibles para todos los programas (excepto los del SO con nivel de prioridad PL = 0).
Descargar