Pregunta

He estado intentando buscar en el código fuente de Linux una estructura / unión que correspondería al PTE en el sistema x86 con PAE deshabilitado. Hasta ahora solo he encontrado lo siguiente en arch / x86 / include / asm / page_32.h

typedef union {
        pteval_t pte;
        pteval_t pte_low;
} pte_t;

Estoy un poco confundido en este momento ya que tengo el Manual de referencia de Intel Vol. 3A abierto frente a mí y nada en esa unión corresponde a la docena de campos impares presentes en el PTE como explica el manual.

Esta podría ser una pregunta trivial, pero para mí se ha convertido más en un obstáculo en el proceso de comprender la administración de memoria en el kernel de Linux.

EDITAR: tengo la fuente 2.6.29 conmigo

¿Fue útil?

Solución

pteval_t solo trata la entrada de la tabla de páginas como un blob opaco; en la arquitectura que está viendo, es solo un valor sin signo de 32 bits.

Se accede a los campos dentro del PTE utilizando operadores y máscaras bit a bit; en la fuente que tengo a mano (Linux 2.6.24), estos se definen en include / asm-x86 / pgtable_32.h . Los campos que ve en el Manual de referencia de Intel (la mayoría de los cuales son indicadores de un solo bit) se definen aquí, por ejemplo:

#define _PAGE_PRESENT   0x001
#define _PAGE_RW    0x002
#define _PAGE_USER  0x004
#define _PAGE_PWT   0x008
#define _PAGE_PCD   0x010
#define _PAGE_ACCESSED  0x020
#define _PAGE_DIRTY 0x040
#define _PAGE_PSE   0x080   /* 4 MB (or 2MB) page, Pentium+, if present.. */
#define _PAGE_GLOBAL    0x100   /* Global TLB entry PPro+ */
#define _PAGE_UNUSED1   0x200   /* available for programmer */
#define _PAGE_UNUSED2   0x400
#define _PAGE_UNUSED3   0x800

Otros consejos

Recomiendo comprar Comprensión del kernel de Linux de O'REILLY, así como Controladores de dispositivos Linux . Y suscribiéndose a LWN.net ; aunque puede obtener un buen comienzo desde su página del índice del kernel incluso sin una suscripción.

Para la gestión de memoria, busque en la página de índice la " Gestión de memoria " sección ... y los "Sistemas de memoria grande" sección. Este último tiene algunos artículos que hablan sobre el cambio a tablas de páginas de cuatro niveles que deberían ser útiles para comprender esta área del código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top