Infelizmente, vários grupos têm reportado "erros bizarros" na hora de trocar as páginas. Analisando , concluí que os erros se devem à existência do reverse mapping, ou seja, um mapeamento das páginas físicas para virtuais. Manejar este mapeamento é mais complicado do que o intuito original do projeto, então não vamos fazer essa parte.

Em vez disso, a última parte da parte 2, passa a ser:

implemente a função de leitura do ifs_swap. A função deve retornar para o buffer do usuário (não esqueça o copy_to_user!) o endereço físico dos vetores passados para a função write. Note que o endereço físico não contém as flags! (últimos 12 bits da pte)

Ao final, seu programa de espaço de usuário deve executar:
printf("Virtual1 %lx => Fisico1 %lx\n, chr1, phys1);
printf("Virtual2 %lx => Fisico2 %lx\n, chr2, phys2);