La tabla de páginas en Windows



Documentos relacionados
Jerarquía de Memoria. Sistema de Memoria. El Cache. Efectividad del Cache. Patrón de Accesos a Memoria Generado por Programas

Organización del Computador I Verano. Memoria Virtual Basado en el capítulo 5 del libro de Patterson y Hennessy

MANUAL EASYCHAIR. A) Ingresar su nombre de usuario y password, si ya tiene una cuenta registrada Ó

Los bloques DLL (Figura A.1) externos permiten al usuario escribir su propio código y

Capítulo 4 Gestión de memoria

Tema 6. Gestión de la memoria

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de SEGUNDA PARTE - SOLUCIONES

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

Administración avanzada de paquetes. apt-proxy.

iseries Operations Navigator Administración de aplicaciones

V.- V.-El El manejo de de las las Interrupciones

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:

OSCILLATION 512 (LM 3R)

Requerimientos Principales de un Sistema Operativo. Descripción y Control de Procesos. Proceso

Sistemas Operativos. Curso 2016 Procesos

Para acceder al campus virtual de Espiral debes realizar los siguientes pasos:

Programación estructurada (Interfaces Windows y Unix)

Tablas internas 1-12

Guía del usuario de KIP sobre el estado de la impresora Instalación y guía del usuario de KIP sobre el estado de la impresora

Sistema basado en firma digital para enviar datos por Internet de forma segura mediante un navegador.

Agustiniano Ciudad Salitre School Computer Science Support Guide Second grade First term

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

Arquitectura de Computadores

Guía de instalación de Gesclivet.

Diseño y Administración de Redes de Computadoras

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

P á g i n a 1 / 15. M A N U A L I N S T A L A C I Ó N C o p y r i g h t P r i v a t e P l a n e t L t d.

Capitulo V Administración de memoria

Sistemas operativos. Tema 7: Gestión n de memoria

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Siemens Industry IA/DT/BT Service&Support - Automation Service, Automation Sup...

Un kilobyte (KB) son 1024 bytes, un Megabyte (MB) son 1024 KB, un Gigabyte son 1024 Mb

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

La ventana de Microsoft Excel

Guía de usuario de MyUTM

Router Teldat. Proxy ARP

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VÍA CPANEL Y VÍA FTP. (CU00813B)

Bases de datos. 1. Introducción

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

GUÍA DE INSTALACIÓN DEL PROVEEDOR DE DISPOSITIVOS

Hardware y Estructuras de Control. Memoria Virtual. Ejecución de un Programa. Ejecución de un Programa

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, Madrid

Pipelining o Segmentación de Instrucciones

Sistemas Operativos II Febrero 2009 Nombre:

Guía rápida del alumno. Versión 6.2

Sistemas de Operación II

Conmutación de Tareas

ESCUELA DE ADMINISTRACIÓN

Para examinar una señal se usa la ventana de edición. Esto se hace marcando el botón EDIT

Anexo B. Comunicaciones entre mc y PC

Redes y Consultoría al Comercio Exterior. Manual Técnico

Boot Camp Manual de instalación y configuración

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

Implementando NAT64 / DNS64

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

DIRECCIÓN DE SISTEMAS DE INFORMACIÓN DEPARTAMENTO CERES

Sistemas de ficheros en Servidores de Información multimedia

Módulo: Ahorra espacio ÍNDICE 1. QUÉ ES WINRAR? 3

NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Introducción a ZEUS. Introducción. Curso Doctorado Sistemas Multi-agente. Zeus es una herramienta de desarrollo de SMA.

Matemáticas Muestra Cuadernillo de Examen

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

GE Power Management. 6S``O[WS\bORS1]\TWUc`OQWÕ\g. GE-FILES 7\ab`cQQW]\Sa 539$ &

La Video conferencia con Live Meeting

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

El Modelo de Geometrías

Modulo 1 El lenguaje Java

Procedimiento para acceder a los mapas y bases de datos del catastro de suelos por regiones.

Estimado usuario. Tabla de Contenidos

Aplicaciones web 2.0 en el aula Abalar

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)

MANEJANDO FICHEROS Y CARPETAS

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo.

Tarea 4.2 Memoria Virtual

1. Sign in to the website, / Iniciar sesión en el sitio,

Figura 1.4. Elementos que integran a la Tecnología de Información.

Cisco CSS Series Content Services Switches

1. Investigar 5 programas para borrar y 3 opciones. Basta usar el comando apropos delete para ver los comandos que están relacionados con borrar.

Protección de Contenido en Microsoft Internet Explorer 6 y superior.

SIU-Tehuelche. Sistema de Gestión de Becas

SUBIR ARCHIVOS CON FTP. TRABAJAR EN UN SERVIDOR REMOTO. CREAR UNA PÁGINA WEB CON PROGRAMACIÓN PHP. (CU00814B)

Centro de Capacitación en Informática

Guía de Usuario. Seguridad Internet. Triara.com SA de CV. Todos los derechos reservados

Manual Usuario Wordpress. Índice

Introducción. Sistemas Operativos. Pedro Chávez Lugo 23 de marzo de 2010

Creating your Single Sign-On Account for the PowerSchool Parent Portal

Manual de Usuario del Sistema RECIBOS DE HABERES UNLu Contacto:

Manual del Usuario. Programa para el cálculo de los ángulos asociados a la geometría de iluminación y observación de la escena SAC-C MMRS. Versión 1.

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

KMR SCA-05 Mounting Instructions Instrucción de Montaje Instruções de Montagem

Transcripción:

SESIÓN 4 Objetivos Esta sesión práctica tiene como objetivo fundamental la comprensión por parte del alumno del funcionamiento de la paginación sobre una arquitectura real y su uso por un sistema operativo real. En particular, la arquitectura IA-32 y los sistemas operativos Windows 2000 y Windows X. Conocimientos y materiales necesarios ara poder realizar esta sesión: El alumno debe conocer el funcionamiento básico de la paginación en la arquitectura IA-32, estudiado en la parte teórica de la asignatura. Es necesario que el ordenador de prácticas tenga instalado el paquete software winmem, necesario en esta sesión para poder acceder al directorio de páginas y a las tablas de páginas de una tarea en Windows. Haber leído previamente la documentación de Intel sobre el funcionamiento de la paginación en la arquitectura IA-32, incluida en el apéndice B 1. 1. Introducción a la paginación en Windows La gestión de memoria en la arquitectura IA-32 es bastante compleja en comparación a otras arquitecturas. No sólo permite combinar las técnicas de segmentación y paginación, sino que además admite varios esquemas de paginación diferentes, algunos de los cuales pueden usarse simultáneamente en un mismo sistema. En clase de teoría se estudia el mecanismo de paginación más comúnmente 1 Esta documentación está escrita en inglés, lo cual no debería representar problema alguno para un futuro informático. 38

empleado, basado en dos niveles de traducción sobre un espacio de direcciones físicas de 32 bits. Sin embargo, la arquitectura IA-32 permite otras posibilidades: A partir del entium ro, la arquitectura IA-32 se extiende para poder trabajar con direcciones físicas de 36 bits, lo que permite el direccionamiento de hasta 64 Gbytes de memoria física. ara poder hacer uso de esta extensión debe activarse el modo AE (hysical Address Extension) del procesador, lo cual se consigue programando adecuadamente un bit del registro de control CR4. Bajo este modo, el procesador admite dos tamaños de página: 4 Kbytes y 2 Mbytes. En el primer caso la paginación trabaja con tres niveles de traducción y en el último con dos niveles de traducción. El modo AE puede usarse en las versiones Windows de servidor, cuando es necesario disponer de más de 4 Gbytes de memoria principal. A partir del entium III se añade un nuevo modo de paginación, denominado SE (age Size Extension) que permite trabajar con direcciones físicas de 36 bits y direccionar por tanto hasta 64 Gbytes de memoria. ara hacer uso de esta extensión debe desactivarse el modo AE y activar un bit del registro de control CR4. Este modo trabaja con un único nivel de traducción y páginas de tamaño 4 Mbytes. Sin embargo no se usa en la práctica. Cuando el modo AE no está activo, como ocurre en las versiones de Windows de estación de trabajo, hay dos esquemas posibles de paginación: uno que emplea páginas de 4 Kbytes y doble traducción, el cual coincide con el estudiado en clase de teoría, y otro que emplea páginas de 4 Mbytes y simple traducción. Una explicación exhaustiva de estos dos esquemas de paginación se encuentra en el apéndice. La sesión práctica la llevaremos a cabo sobre una estación de trabajo Windows, por lo que únicamente consideraremos la última de las tres posibilidades anteriores (ni AE, ni SE). El empleo de páginas de 4 Kbytes tiene ventajas y desventajas sobre el uso de páginas de 4 Mbytes. or un lado, con el uso de páginas de 4 Kbytes el desperdicio de memoria es menor. or ejemplo, una tarea que requiere tres Kbytes desperdicia 1 Kbyte con páginas de tamaño 4 Kbytes y casi 4 Mbytes con páginas de tamaño 4 Mbytes. Sin embargo, el núcleo de un sistema operativo como Windows requiere gran cantidad de memoria y debe estar residente en memoria, por lo que el empleo de páginas de tamaño 4 Kbytes exigiría un gran número de páginas y un gran número de entradas en el TLB, reduciendo el número de entradas en el TLB para las tareas. La arquitectura IA-32 permite trabajar simultáneamente con páginas de tamaño 4 Kbytes y 4 Mbytes. Windows utiliza páginas de tamaño 4 MBytes para el núcleo, cuya imagen está en el archivo ntoskrnl.exe, y para la capa de abstracción del hardware (HAL), definida en el archivo hall.dll. De esta forma, se reduce la frecuencia de fallos de TLB en el acceso a la memoria del sistema operativo. Además, la arquitectura IA-32 dispone de dos TLBs, uno específico para las páginas de 4Kbytes y otro para las páginas de 4Mbytes. Con el tamaño de páginas de 4 Mbytes, desaparece el campo índice de la tabla de páginas de la dirección virtual, a costa de aumentar el desplazamiento de 12 39

a 22 bits, tal como se muestra en la figura 3-13 del apéndice B. or lo tanto, la entrada del directorio de páginas coincide con el número de página virtual y se elimina uno de los niveles de traducción. Independientemente del tamaño de página empleado, el sistema operativo debe programar de forma adecuada las entradas del directorio de páginas y tablas de páginas de las tareas. Esto significa que el sistema operativo necesita poder leer y escribir cualquiera de esas entradas. El sistema operativo, lo mismo que cualquier otro programa trabaja con direcciones virtuales 2. ara poder acceder al directorio de páginas y a las tablas de páginas de una tarea debe asociarles direcciones virtuales. or supuesto, estas direcciones virtuales deben estar dentro de los 2 Gbytes más altos del espacio de direcciones virtuales de la tarea, para que así una tarea no pueda acceder a las entradas de su directorio de páginas y de sus tablas de páginas. Windows almacena las entradas del directorio de páginas y las entradas de la tabla de páginas de una tarea en el rango de direcciones virtuales C0000000h- C03FFFFFh de dicha tarea. Se trata de un área de memoria virtual de tamaño 4 Mbytes. La dirección virtual a partir de la cual se almacena la entrada de la tabla de páginas, ET, asociada a una página virtual viene dada por la siguiente expresión: Dir. virtual de ET = C0000000h + ag. virtual x 4 El número 4 proviene del hecho que cada entrada de la tabla de páginas ocupa 4 bytes. or ejemplo, la entrada de la tabla de páginas asociada a la página virtual 40000h se almacena en las direcciones virtuales C0100000h-C0100003h. La dirección virtual a partir de la cual se almacena la entrada del directorio de páginas de una página virtual cualquiera se obtiene aplicando la siguiente expresión: Dir. virtual de ED = C0300000h + (ag. virtual >> 10) x 4 El desplazamiento de 10 bits a la derecha sirve para obtener el índice en el directorio de páginas asociado a la página virtual. El número 4 proviene del hecho que cada entrada del directorio de páginas ocupa 4 bytes. or ejemplo, la entrada del directorio de páginas asociada a la página virtual 40000h se almacena en las direcciones virtuales C0300400h-C0300403h. Debe tenerse en cuenta que las entradas del directorio de páginas cuyo bit S (bit 7) es 1 hacen referencia a páginas de tamaño 4 Mbytes. En este caso, la entrada del directorio de páginas proporciona los bits 31 a 22 del marco de página 3. ara obtener la dirección física y el contenido asociados a una dirección virtual cualquiera podríamos usar la función EscribeVirtualFisicaDato de la librería vfd.lib, presentada en la sesión anterior. Sin embargo, esta función es un poco 2 Windows utiliza un modelo de memoria plano que permite ignorar los segmentos, de tal forma el desplazamiento de la dirección lógica coincide con la dirección lineal. En este caso, la dirección lineal es la dirección virtual efectos prácticos. 3 Los bits 21 a 0 del marco de página son cero, pues el marco de página comienza en una dirección múltiplo de 4 M. 40

tosca cuando se intentan analizar varias direcciones virtuales dentro del mismo programa, pues aparece una ventana cada vez. En esta sesión práctica usaremos la función extern int VirtualFisicaDato(void *dir_virtual, unsigned *pdir_fisica, unsigned *pdato_32bits); la cual proporciona la dirección física y el contenido (4 bytes) asociados a una dirección virtual cualquiera. Devuelve un valor 0 cuando se ejecuta con éxito, un valor -1 cuando la página virtual a la que pertenece la dirección virtual no tiene un marco de página asociado, y el valor -2 cuando la función no puede comunicarse con el controlador driverw2k spy. 41

Desarrollo de la práctica Copia a tu unidad de trabajo el archivo 2-4tabla1.c. El profesor te indicará su ubicación. Se trata de un programa que básicamente proporciona la dirección virtual, dirección física y contenido de: Una variable global. La entrada en la tabla de páginas asociada a la página virtual que incluye la variable global. La entrada en el directorio de páginas de la tabla de páginas anterior. El código fuente del programa puedes encontrarlo en el apéndice A. Compila, enlaza y ejecuta el programa anterior. Si todo a ocurrido con normalidad se generará un archivo de texto de nombre salida1.txt en tu unidad de trabajo. Copia el contenido del archivosalida1.txt al siguiente cuadro. Teniendo en cuenta la información del cuadro anterior y los campos que componen las entradas de tabla de páginas (ET) y las entradas de directorio de páginas (ED), descritas en el apéndice B, responde a las siguientes preguntas. Crees que la dirección virtual de la variable global cambia entre diferentes ejecuciones del programa? or qué? La dirección virtual de la ET y ED asociadas a la variable global crees que cambian entre diferentes ejecuciones del programa? or qué? 42

Comprueba tus dos respuestas anteriores ejecutando de nuevo el programa 2-4tabla1.exe y comparando el fichero de salida con la información del fichero de salida anterior, la cual has escrito en uno de los cuadros de respuesta. El resultado de la nueva ejecución lo ignoraremos, de tal forma que debes responder a las siguientes preguntas usando la información almacenada en el cuadro de la primera ejecución. Cuál es el índice en el directorio de páginas de la dirección de la variable global? 1 1 A partir de qué dirección física se almacena el directorio de páginas de la tarea? 2 2 Cuál es el índice en la tabla de páginas de la dirección de la variable global? 3 3 Teniendo en cuenta el valor de la ED correspondiente a la dirección de la variable global, a partir de qué dirección física se almacena la tabla páginas correspondiente a la dirección de la variable global? 4 4 Teniendo en cuenta ahora la dirección física en la que se almacena la ET correspondiente a la dirección de la variable global, a partir de qué dirección física se almacena la tabla páginas correspondiente a la dirección de la variable global? 5. Comprueba que 5 este valor coincide con el obtenido en el apartado anterior. Teniendo en cuenta el valor de la ET correspondiente a la dirección de la variable global, qué marco de página contiene la variable global? 6 En que dirección física comienza dicho marco? 7 6 Teniendo en cuenta la respuesta del apartado anterior, en qué dirección física se encuentra almacenada la variable global? 8. Comprueba si este valor coincide con el que habías escrito en el cuadro correspondiente al primer fichero salida1.txt? A partir del contenido de la ET correspondiente a la página virtual que incluye la variable global debes indicar si dicha página virtual es de lectura o lectura/escritura, usuario o supervisor, la estrategia de escritura en cache, si puede cachearse, si ha sido accedida y si está presente en la memoria física. ara ello debes usar la información proporcionada en el apéndice B. 7 8 43

2. Autoevaluación 2.1. Archivos en el disco Una vez llegado a este punto, en tu unidad de trabajo debes tener al menos el archivo2-4tabla1.c, 2-4tabla1.exe ysalida1.txt. 2.2. Ejercicios Modifica el programa 2-4tabla1.c para que en todas las operaciones se lleven a cabo sobre la variable localdato 32bits. Guarda el programa con el nombre2-4tabla2.c. Sigue con el programa 2-4tabla2.c los mismos pasos que con el programa 2-4tabla1.c y responde a las mismas preguntas. Modifica el programa 2-4tabla1.c para que en todas las operaciones se lleven a cabo sobre la función WinMain. Guarda el programa con el nombre2-4tabla3.c. Sigue con el programa 2-4tabla3.c los mismos pasos que con el programa 2-4tabla1.c y responde a las mismas preguntas. 44

3. Apéndice A Este apéndice contiene el código fuente del programa 2-4tabla1.c. #include <windows.h> #include <stdio.h> #include "vfd.h" int global=0x12345678; int AIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hrevinstance, LSTR lpcmdline, int ncmdshow) { FILE *fichero; void *dir_virtual; unsigned dir_fisica; unsigned dato_32bits = 0xABCDEF012; unsigned pag_virtual; /* Abre el fichero salida1.txt para escritura */ if ((fichero = fopen("salida1.txt", "w"))==null) { MessageBox(NULL, "No se puede abrir el fichero", "",MB_OK MB_ICONSTO); exit(-1); } /* Direccion (virtual) de la variable global */ dir_virtual = &global; /* agina virtual asociada a la direccion virtual */ pag_virtual = ((unsigned)dir_virtual) >> 12; /* Obtiene la direccion fisica y contenido de la direccion virtual */ if (VirtualFisicaDato(dir_virtual, &dir_fisica, &dato_32bits)!= 0) { MessageBox(NULL, "Error en VirtualFisicaDato()", "",MB_OK MB_ICONSTO); exit(-1); } /* Escribe en el fichero los resultados anteriores */ fprintf(fichero, "Dir. virtual = %.8Xh\n", dir_virtual); fprintf(fichero, "ag. virtual = %.5Xh\n", pag_virtual); fprintf(fichero, "Dir. fisica = %.8Xh\n", dir_fisica); fprintf(fichero, "Contenido = %.8Xh\n", dato_32bits); 45

fprintf(fichero, "-----------------------------\n"); /* Direccion virtual en la que se almacena la ET */ dir_virtual = (void *)(0xC0000000 + pag_virtual*4); /* Obtiene la direccion fisica y contenido de la ET */ if (VirtualFisicaDato(dir_virtual, &dir_fisica, &dato_32bits)!= 0) { MessageBox(NULL, "Error en VirtualFisicaDato()", "",MB_OK MB_ICONSTO); exit(-1); } /* Escribe en el fichero los resultados anteriores */ fprintf(fichero, "Dir. virtual de ET = %.8Xh\n", dir_virtual); fprintf(fichero, "Dir. fisica de ET = %.8Xh\n", dir_fisica); fprintf(fichero, "Contenido de ET = %.8Xh\n", dato_32bits); fprintf(fichero, "------------------------------\n"); /* Direccion virtual en la que se almacena la ED */ dir_virtual = (void *)(0xC0300000 + (pag_virtual>>10)*4); /* Obtiene la direccion fisica y contenido de la ED */ if (VirtualFisicaDato(dir_virtual, &dir_fisica, &dato_32bits)!= 0) { MessageBox(NULL, "Error en VirtualFisicaDato()", "",MB_OK MB_ICONSTO); exit(-1); } /* Escribe en el fichero los resultados anteriores */ fprintf(fichero, "Dir. virtual de ED = %.8Xh\n", dir_virtual); fprintf(fichero, "Dir. fisica de ED = %.8Xh\n", dir_fisica); fprintf(fichero, "Contenido de ED = %.8Xh\n", dato_32bits); fprintf(fichero, "------------------------------\n"); } exit(0); 46

4. Apéndice B ROTECTED-MODE MEMORY MANAGEMENT G Flag, CR0 AE Flag, CR4 Table 3-3. age Sizes and hysical Address Sizes SE Flag, CR4 S Flag, DE SE-36 CUID Feature Flag age Size hysical Address Size 0 X X X X aging Disabled 1 0 0 X X 4 KBytes 32 Bits 1 0 1 0 X 4 KBytes 32 Bits 1 0 1 1 0 4 MBytes 32 Bits 1 0 1 1 1 4 MBytes 36 Bits 1 1 X 0 X 4 KBytes 36 Bits 1 1 X 1 X 2 MBytes 36 Bits 3.7.1. Linear Address Translation (4-KByte ages) Figure 3-12 shows the page directory and page-table hierarchy when mapping linear addresses to 4-KByte pages. The entries in the page directory point to page tables, and the entries in a page table point to pages in physical memory. This paging method can be used to address up to 2 20 pages, which spans a linear address space of 2 32 bytes (4 GBytes). Linear Address 31 22 21 12 11 Directory Table Offset 12 0 4-KByte age 10 age Directory 10 age Table hysical Address Directory Entry age-table Entry 20 32* CR3 (DBR) 1024 DE 1024 TE = 2 20 ages *32 bits aligned onto a 4-KByte boundary. Figure 3-12. Linear Address Translation (4-KByte ages) To select the various table entries, the linear address is divided into three sections: age-directory entry Bits 22 through 31 provide an offset to an entry in the page directory. The selected entry provides the base physical address of a page table. 47

ROTECTED-MODE MEMORY MANAGEMENT age-table entry Bits 12 through 21 of the linear address provide an offset to an entry in the selected page table. This entry provides the base physical address of a page in physical memory. age offset Bits 0 through 11 provides an offset to a physical address in the page. Memory management software has the option of using one page directory for all programs and tasks, one page directory for each task, or some combination of the two. 3.7.2. Linear Address Translation (4-MByte ages) Figure 3-12 shows how a page directory can be used to map linear addresses to 4-MByte pages. The entries in the page directory point to 4-MByte pages in physical memory. This paging method can be used to map up to 1024 pages into a 4-GByte linear address space. Linear Address 31 22 21 Directory Offset 0 22 4-MByte age 10 age Directory hysical Address 32* Directory Entry CR3 (DBR) 10 1024 DE = 1024 ages *32 bits aligned onto a 4-KByte boundary. Figure 3-13. Linear Address Translation (4-MByte ages) The 4-MByte page size is selected by setting the SE flag in control register CR4 and setting the page size (S) flag in a page-directory entry (see Figure 3-14). With these flags set, the linear address is divided into two sections: age directory entry Bits 22 through 31 provide an offset to an entry in the page directory. The selected entry provides the base physical address of a 4-MByte page. age offset Bits 0 through 21 provides an offset to a physical address in the page. NOTE (For the entium processor only.) When enabling or disabling large page sizes, the TLBs must be invalidated (flushed) after the SE flag in control 48

ROTECTED-MODE MEMORY MANAGEMENT register CR4 has been set or cleared. Otherwise, incorrect page translation might occur due to the processor using outdated page translation information stored in the TLBs. See Section 9.9., Invalidating the Translation Lookaside Buffers (TLBs), for information on how to invalidate the TLBs. 3.7.3. Mixing 4-KByte and 4-MByte ages When the SE flag in CR4 is set, both 4-MByte pages and page tables for 4-KByte pages can be accessed from the same page directory. If the SE flag is clear, only page tables for 4-KByte pages can be accessed (regardless of the setting of the S flag in a page-directory entry). A typical example of mixing 4-KByte and 4-MByte pages is to place the operating system or executive s kernel in a large page to reduce TLB misses and thus improve overall system performance. The processor maintains 4-MByte page entries and 4-KByte page entries in separate TLBs. So, placing often used code such as the kernel in a large page, frees up 4-KByte-page TLB entries for application programs and tasks. 3.7.4. Memory Aliasing The IA-32 architecture permits memory aliasing by allowing two page-directory entries to point to a common page-table entry. Software that needs to implement memory aliasing in this manner must manage the consistency of the accessed and dirty bits in the page-directory and page-table entries. Allowing the accessed and dirty bits for the two page-directory entries to become inconsistent may lead to a processor deadlock. 3.7.5. Base Address of the age Directory The physical address of the current page directory is stored in the CR3 register (also called the page directory base register or DBR). (See Figure 2-5 and Section 2.5., Control Registers, for more information on the DBR.) If paging is to be used, the DBR must be loaded as part of the processor initialization process (prior to enabling paging). The DBR can then be changed either explicitly by loading a new value in CR3 with a MOV instruction or implicitly as part of a task switch. (See Section 6.2.1., Task-State Segment (TSS), for a description of how the contents of the CR3 register is set for a task.) There is no present flag in the DBR for the page directory. The page directory may be notpresent (paged out of physical memory) while its associated task is suspended, but the operating system must ensure that the page directory indicated by the DBR image in a task's TSS is present in physical memory before the task is dispatched. The page directory must also remain in memory as long as the task is active. 49

ROTECTED-MODE MEMORY MANAGEMENT 3.7.6. age-directory and age-table Entries Figure 3-14 shows the format for the page-directory and page-table entries when 4-KByte pages and 32-bit physical addresses are being used. Figure 3-15 shows the format for the page-directory entries when 4-MByte pages and 32-bit physical addresses are being used. The functions of the flags and fields in the entries in Figures 3-14 and 3-15 are as follows: age base address, bits 12 through 32 (age-table entries for 4-KByte pages.) Specifies the physical address of the first byte of a 4-KByte page. The bits in this field are interpreted as the 20 mostsignificant bits of the physical address, which forces pages to be aligned on 4-KByte boundaries. 31 age-directory Entry (4-KByte age Table) 12 11 9 8 7 6 5 4 3 2 1 0 age-table Base Address Avail G S 0 A C D W T U / S R / W Available for system programmer s use Global page (Ignored) age size (0 indicates 4 KBytes) Reserved (set to 0) Accessed Cache disabled Write-through User/Supervisor Read/Write resent 31 age-table Entry (4-KByte age) age Base Address 12 11 9 8 7 6 5 4 3 2 1 0 Avail G A T D A C D W T U / S R / W Available for system programmer s use Global age age Table Attribute Index Dirty Accessed Cache Disabled Write-Through User/Supervisor Read/Write resent Figure 3-14. Format of age-directory and age-table Entries for 4-KByte ages and 32-Bit hysical Addresses 50

ROTECTED-MODE MEMORY MANAGEMENT (age-directory entries for 4-KByte page tables.) Specifies the physical address of the first byte of a page table. The bits in this field are interpreted as the 20 most-significant bits of the physical address, which forces page tables to be aligned on 4-KByte boundaries. (age-directory entries for 4-MByte pages.) Specifies the physical address of the first byte of a 4-MByte page. Only bits 22 through 31 of this field are used (and bits 12 through 21 are reserved and must be set to 0, for IA-32 processors through the entium II processor). The base address bits are interpreted as the 10 most-significant bits of the physical address, which forces 4-MByte pages to be aligned on 4-MByte boundaries. 31 age-directory Entry (4-MByte age) 22 21 13 12 11 9 8 7 6 5 4 3 2 1 0 age Base Address Reserved A T Avail. G S D A C D W T U / S R / W age Table Attribute Index Available for system programmer s use Global page age size (1 indicates 4 MBytes) Dirty Accessed Cache disabled Write-through User/Supervisor Read/Write resent Figure 3-15. Format of age-directory Entries for 4-MByte ages and 32-Bit Addresses resent () flag, bit 0 Indicates whether the page or page table being pointed to by the entry is currently loaded in physical memory. When the flag is set, the page is in physical memory and address translation is carried out. When the flag is clear, the page is not in memory and, if the processor attempts to access the page, it generates a page-fault exception (#F). The processor does not set or clear this flag; it is up to the operating system or executive to maintain the state of the flag. If the processor generates a page-fault exception, the operating system generally needs to carry out the following operations: 1. Copy the page from disk storage into physical memory. 2. Load the page address into the page-table or page-directory entry and set its present flag. Other flags, such as the dirty and accessed flags, may also be set at this time. 51

ROTECTED-MODE MEMORY MANAGEMENT 3. Invalidate the current page-table entry in the TLB (see Section 3.11., Translation Lookaside Buffers (TLBs), for a discussion of TLBs and how to invalidate them). 4. Return from the page-fault handler to restart the interrupted program (or task). Read/write (R/W) flag, bit 1 Specifies the read-write privileges for a page or group of pages (in the case of a page-directory entry that points to a page table). When this flag is clear, the page is read only; when the flag is set, the page can be read and written into. This flag interacts with the U/S flag and the W flag in register CR0. See Section 4.11., age-level rotection, and Table 4-2 for a detailed discussion of the use of these flags. User/supervisor (U/S) flag, bit 2 Specifies the user-supervisor privileges for a page or group of pages (in the case of a page-directory entry that points to a page table). When this flag is clear, the page is assigned the supervisor privilege level; when the flag is set, the page is assigned the user privilege level. This flag interacts with the R/W flag and the W flag in register CR0. See Section 4.11., age-level rotection, and Table 4-2 for a detail discussion of the use of these flags. age-level write-through (WT) flag, bit 3 Controls the write-through or write-back caching policy of individual pages or page tables. When the WT flag is set, write-through caching is enabled for the associated page or page table; when the flag is clear, write-back caching is enabled for the associated page or page table. The processor ignores this flag if the CD (cache disable) flag in CR0 is set. See Section 9.5., Cache Control, for more information about the use of this flag. See Section 2.5., Control Registers, for a description of a companion WT flag in control register CR3. age-level cache disable (CD) flag, bit 4 Controls the caching of individual pages or page tables. When the CD flag is set, caching of the associated page or page table is prevented; when the flag is clear, the page or page table can be cached. This flag permits caching to be disabled for pages that contain memory-mapped I/O ports or that do not provide a performance benefit when cached. The processor ignores this flag (assumes it is set) if the CD (cache disable) flag in CR0 is set. See Chapter 9, Memory Cache Control, for more information about the use of this flag. See Section 2.5., Control Registers, for a description of a companion CD flag in control register CR3. Accessed (A) flag, bit 5 Indicates whether a page or page table has been accessed (read from or written to) when set. Memory management software typically clears this flag when a page or page table is initially loaded into physical memory. The processor then sets this flag the first time a page or page table is accessed. This flag is a sticky flag, meaning that once set, the processor does not implicitly clear it. Only software can clear this flag. The accessed and dirty flags are provided for 52

ROTECTED-MODE MEMORY MANAGEMENT use by memory management software to manage the transfer of pages and page tables into and out of physical memory. Dirty (D) flag, bit 6 Indicates whether a page has been written to when set. (This flag is not used in page-directory entries that point to page tables.) Memory management software typically clears this flag when a page is initially loaded into physical memory. The processor then sets this flag the first time a page is accessed for a write operation. This flag is sticky, meaning that once set, the processor does not implicitly clear it. Only software can clear this flag. The dirty and accessed flags are provided for use by memory management software to manage the transfer of pages and page tables into and out of physical memory. age size (S) flag, bit 7 page-directory entries for 4-KByte pages Determines the page size. When this flag is clear, the page size is 4 KBytes and the page-directory entry points to a page table. When the flag is set, the page size is 4 MBytes for normal 32-bit addressing (and 2 MBytes if extended physical addressing is enabled) and the page-directory entry points to a page. If the page-directory entry points to a page table, all the pages associated with that page table will be 4-KByte pages. age attribute table index (AT) flag, bit 7 in page-table entries for 4-KByte pages and bit 12 in page-directory entries for 4-MByte pages (Introduced in the entium III processor.) Selects AT entry. For processors that support the page attribute table (AT), this flag is used along with the CD and WT flags to select an entry in the AT, which in turn selects the memory type for the page (see Section 9.12., age Attribute Table (AT) ). For processors that do not support the AT, this bit is reserved and should be set to 0. Global (G) flag, bit 8 (Introduced in the entium ro processor.) Indicates a global page when set. When a page is marked global and the page global enable (GE) flag in register CR4 is set, the page-table or page-directory entry for the page is not invalidated in the TLB when register CR3 is loaded or a task switch occurs. This flag is provided to prevent frequently used pages (such as pages that contain kernel or other operating system or executive code) from being flushed from the TLB. Only software can set or clear this flag. For page-directory entries that point to page tables, this flag is ignored and the global characteristics of a page are set in the page-table entries. See Section 3.11., Translation Lookaside Buffers (TLBs), for more information about the use of this flag. (This bit is reserved in entium and earlier IA-32 processors.) Reserved and available-to-software bits For all IA-32 processors. Bits 9, 10, and 11 are available for use by software. (When the present bit is clear, bits 1 through 31 are available to software see Figure 3-16.) In a page-directory entry that points to a page table, bit 6 is reserved and should be set to 0. When the SE and AE flags in control register CR4 are set, the processor generates a page fault if reserved bits are not set to 0. 53

ROTECTED-MODE MEMORY MANAGEMENT For entium II and earlier processors. Bit 7 in a page-table entry is reserved and should be set to 0. For a page-directory entry for a 4-MByte page, bits 12 through 21 are reserved and must be set to 0. For entium III and later processors. For a page-directory entry for a 4-MByte page, bits 13 through 21 are reserved and must be set to 0. 3.7.7. Not resent age-directory and age-table Entries When the present flag is clear for a page-table or page-directory entry, the operating system or executive may use the rest of the entry for storage of information such as the location of the page in the disk storage system (see Figure 3-16). 31 0 Available to Operating System or Executive 0 Figure 3-16. Format of a age-table or age-directory Entry for a Not-resent age 54