como os flags do pte são restaurados quando uma página é trocada da área de troca?

1

Eu gostaria de entender corretamente o processo de troca e, no entanto, não consegui encontrar uma explicação completa de como os flags de uma página são restaurados quando uma página é trocada de volta para a memória - já que a informação é "perdida" ao trocar out e o endereço da área de disco correspondente é inserido na entrada pte de uma página trocada. Eu entendo que os sinalizadores de um endereço virtual são armazenados em vm_area_struct , mas não conseguiam rastrear o estágio quando ele é usado durante o procedimento de permuta.

outro problema em potencial é - o que acontece se um processo pai fork ed, e pai e filho forem trocados: até onde eu considero, em ambas as tabelas de páginas - o read_only está ativado mas vm_area_struct permite escrever já que ambos têm VM_MAYWRITE permissão para algumas áreas-mem mas uma vez trocada a read_only flag no pte correspondente é "apagada" .da técnica COW ainda é aplicável uma vez uma página que ambas apontam para a página é trocado e o processo filho quer escrever?

    
por Asher Yartsev 30.07.2017 / 14:50

1 resposta

2

Como você disse, o vm_area_struct informa em qual área de memória ocorreu a falha e os sinalizadores de proteção estão contidos nessa estrutura. A função __do_page_fault chama find_vma para obter um ponteiro para o vm_area_struct . Essa estrutura é então passada via handle_pte_fault até do_swap_page (no parâmetro vm_fault *vmf ), que chama mk_pte com os bits de proteção como parâmetro.

Seu outro problema: se uma página COW for trocada e um processo quiser gravar nela. Nesse caso, você recebe uma falha de página porque a página é desativada. O manipulador cuida da situação e o processo entra em suspensão até que a página seja lida do disco. Quando o processo está agendado para ser executado novamente, ele re-executa a instrução de gravação com falha e o BANG! - recebemos uma nova falha, desta vez, uma vez que a página é somente leitura por causa da cópia na gravação.

    
por 01.08.2017 / 21:15