Pergunta

Eu tenho tentado a olhar em volta no código fonte do Linux para uma estrutura / união que tinha correspondem ao PTE no sistema x86 com PAE desactivada. Até agora eu encontrei apenas o seguinte no arch / x86 / include / asm / page_32.h

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

Estou um pouco confuso agora desde que eu tenho o Manual Intel Referência 3A Vol aberto na minha frente e nada no que corresponde sindicais aos campos ímpares dúzia apresentar na PTE como o manual explica.

Esta poderia ser uma questão trivial, mas para mim, tornou-se mais como um obstáculo no processo de gerenciamento de memória entendimento no kernel do Linux.

EDIT: Eu tenho a fonte 2.6.29 comigo

Foi útil?

Solução

O pteval_t apenas trata a entrada da tabela de página como um blob opaco -. Na arquitetura que você está olhando, é apenas um de 32 bits valor sem sinal

Os campos dentro do PTE são acessados ??usando operadores bit a bit e máscaras - na fonte que eu tenho à mão (Linux 2.6.24), estes são definidos no include/asm-x86/pgtable_32.h. Os campos que você vê na Intel Manual de Referência (a maioria dos quais são bandeiras de um único bit) são definidos aqui - por exemplo:

#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

Outras dicas

Eu recomendaria compra Compreender a Linux Kernel da O'Reilly, bem como Linux Device Drivers . E assinando LWN.net ; mas você pode obter um bom começo muito de seu kernel do índice página mesmo sem uma assinatura.

Para o gerenciamento de memória, olhar na página de índice para a seção "Gerenciamento de memória" ... ea seção "sistemas de memória Large". Este último tem alguns artigos que falam sobre a mudança para tabelas de páginas de quatro nível que deve ser útil na compreensão desta área do código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top