12.10.2014 Views

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

TEMA 3. GESTIÓN DE MEMORIA - Universidad de Almería

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>3.</strong> Gestión <strong>de</strong> Memoria<br />

Página: espacio contiguo <strong>de</strong> direcciones lineales <strong>de</strong> tamaño fijo 4Kb (se divi<strong>de</strong> la memoria en 2 20 páginas <strong>de</strong><br />

2 12 bytes) y a los datos contenidos en este grupo <strong>de</strong> direcciones. Cada página está caracterizada por:<br />

dirección base (dirección lineal <strong>de</strong> inicio <strong>de</strong> página) y atributos. De los 32 bits <strong>de</strong> una dirección lineal, los 12<br />

bits menos significativos <strong>de</strong> las direcciones lineal y física son iguales, mientras que los 20 bits más<br />

significativos se traducen <strong>de</strong> la dirección lineal a la física: (1) La página no está presente (swapping). (2) La<br />

página está sin asignar. (3) El acceso es incorrecto (copy-on-<strong>de</strong>mand). Se agrupan las direcciones lineales<br />

contiguas en páginas, que se correspon<strong>de</strong>n con direcciones físicas contiguas. Los chequeos se hacen a nivel<br />

<strong>de</strong> página. La memoria física se divi<strong>de</strong> en marcos <strong>de</strong> página (página física), que contendrán páginas (no<br />

siempre las mismas) Es importante distinguir entre páginas y marcos <strong>de</strong> página. Una página es tan sólo un<br />

bloque <strong>de</strong> datos que ser almacenado en cualquier marco <strong>de</strong> página o en disco.<br />

Para traducir la dirección lineal (32 bits) a física (32 bits) se emplean tablas <strong>de</strong> páginas (estructuras <strong>de</strong><br />

datos). Se necesita una tabla con 2 20 entradas <strong>de</strong> 20 bits más los atributos que son 12 bits (en total 4 bytes =<br />

32 bits) ⇒ La tabla <strong>de</strong> páginas (traducción) ocuparía 4 Mbytes contiguos. Se emplean dos niveles <strong>de</strong> tablas<br />

por motivos <strong>de</strong> eficiencia (directorio <strong>de</strong> tablas <strong>de</strong> páginas (2 10 entradas) y tablas <strong>de</strong> páginas (2 10 entradas<br />

cada una)). Tanto el directorio como las tablas <strong>de</strong> páginas caben en una página (2 10 * 4 = 4Kbytes).<br />

Los 10 bits más significativos <strong>de</strong> la dirección lineal in<strong>de</strong>xan en el directorio <strong>de</strong> tablas <strong>de</strong> páginas, <strong>de</strong> don<strong>de</strong><br />

se obtiene la tabla <strong>de</strong> paginas. Los 10 bits siguientes se emplean para in<strong>de</strong>xar en la tabla <strong>de</strong> páginas y<br />

obtener el marco <strong>de</strong> página. Los 12 últimos bits son <strong>de</strong> <strong>de</strong>splazamiento (offset) <strong>de</strong>ntro <strong>de</strong> la página. Por<br />

tanto, las páginas son pues <strong>de</strong> 4Kb (32 bits).<br />

Es posible compartir páginas entre varios procesos ⇒ tablas con entradas comunes o tabla s <strong>de</strong> páginas<br />

globales. A<strong>de</strong>más, existen buffers <strong>de</strong> traducción (TLB) ⇒ Buffer caché <strong>de</strong> entradas <strong>de</strong> la tabla <strong>de</strong> páginas<br />

con información sobre las últimas páginas accedidas. El directorio y las tablas <strong>de</strong> páginas contienen 1024 (2 10 )<br />

entradas <strong>de</strong> 4 bytes (32 bits). La estructura <strong>de</strong> dichas entradas es (empezando por el bit menos significativo):<br />

P (bit presente), R/W (bit para lectura o lectura/escritura), U/S (bit para indicar el nivel <strong>de</strong> privilegio, user o<br />

supervisor), 0, 0, A (bit para indicar accedido o no accedido), D (dirty bit, modificado), 0, 0, AVL (3 bits para<br />

indicar la disponibilidad), los restantes 20 bits para indicar la dirección <strong>de</strong>l marco <strong>de</strong> página. La dirección <strong>de</strong>l<br />

directorio <strong>de</strong> tablas <strong>de</strong> páginas se almacena en el registro CR3 <strong>de</strong>l procesador (almacena la dirección física<br />

que contiene el primer nivel <strong>de</strong> la tabla <strong>de</strong> páginas (directorio <strong>de</strong> tablas <strong>de</strong> páginas), según el formato anterior.<br />

Dirección lineal<br />

Directorio Tabla Desplazamiento<br />

Página<br />

Directorio <strong>de</strong> Tablas<br />

<strong>de</strong> Páginas<br />

+<br />

Tablas <strong>de</strong> Páginas<br />

+<br />

CR3<br />

+<br />

<strong>3.</strong>4.2.5. Paginación en Linux<br />

Figura <strong>3.</strong>10. Paginación en los procesadores <strong>de</strong> la arquitectura i836<br />

Para tener en cuenta arquitecturas <strong>de</strong> 64 bits, la paginación en Linux tiene 3 niveles <strong>de</strong> tablas <strong>de</strong> páginas en<br />

lugar <strong>de</strong> 2. En los i386, la tabla <strong>de</strong> directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas se obvia.<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!