• 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)