- ver mapeamento de memória de um processo: pmap [pid]
- Leiam a man page da chamada de sistema mmap. Ela já faz quase tudo o que voces precisam para a parte 1
- Para declarar um vetor alinhado: char myvec[4096] __attribute__((__aligned__(4096)))
- Para pegar o topo da tabela de páginas do processo atual: current->mm->pgd
- Para descobrir o índice do endereço no nível 1 da tabela de páginas: pgd_index(address)
- Para descobrir o índice do endereço no nivel 2 da tabela de páginas: pte_index(address)
- Leiam a implementação de pgd_index e pte_index. Está em algum lugar (depende do seu kernel)
em include/asm-i386/
- Não se preocupem com pud e pmd. Eles só são necessários para tabelas de 4 níveis
- as tabelas de página apontam para endereços físicos. Converta-os para virtuais com __va
- Endereços virtuais no kernel começam com 0xc000...
- uma entrada nas tabelas terá a forma 8763067 (é um exemplo!). Os 3 últimos algarismos são
as proteções, edevem ser descartadas para fazer acessos. Por exemplo,
para acessar essa página, você deve fazer __va(8763000)