Uma página com “PROT_NONE bit set” é elegível para troca?

2

A partir do seguinte link: Gerenciamento da Tabela de Páginas - kernel .org , entendi que os bits PROT_NONE e PRESENT podem ser usados para informar ao SO que uma página está protegida, mas está residente na memória. Eu estou usando esses 2 bits para rastrear as páginas que são acessadas por um processo. Aqui está o que estou fazendo,

  1. Limpo o bit PRESENT e defino o PROT_NONE de páginas de um processo que quero acompanhar para que ocorra uma falha de página quando esse processo tentar acessar as páginas rastreadas.
  2. Na falha da página, dentro de __handle_mm_fault antes de chamar o handle_pte_fault (x86), eu limpo PROT_NONE e defino PRESENT se a página for rastreada por mim. Desta forma, a execução prossegue normalmente.

Mas haverá um problema se a página for trocada enquanto isso pelo SO. Então, eu gostaria de saber:

  1. Se uma página com PROT_NONE bit set puder ser trocada?
  2. O que acontece com os bits PROT_NONE , quando essa página protegida é trocada? Eu quero dizer como distinguir se a página é trocada ou não? Porque PRESENT bit já está limpo.

Por favor, indique se algum dos meus conhecimentos está errado.

    
por newbie 01.08.2014 / 17:04

0 respostas