Do meu entendimento, quando o Linux troca um quadro de página física de entrada/saída de RAM, ele precisa definir um bit válido para todas as páginas virtuais mapeadas nessa página física. Mapear uma página virtual para um quadro de página física parece ser bem explicado em livros didáticos, mas como o kernel encontra todas as páginas virtuais de um quadro de página física? A implementação real no código-fonte do Linux seria apreciada.
relate perguntas
-
Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?
-
Inicie/pare o serviço systemd usando o atalho de teclado [fechado]
-
Necessidade de algumas chamadas de sistema
-
astyle não altera a formatação do arquivo de origem
-
Passe o sistema de arquivos raiz por rótulo para o kernel do Linux
Cada página física de memória é rastreada no kernel usando struct page . Isso permite que o kernel descreva como cada página é usada; em particular, para mapeamentos anônimos e baseados em arquivo, o campo de mapeamento aponta para a
address_space
estrutura usada para descrever o objeto mapeado.Para código que precisa encontrar mapeamentos virtuais usando uma determinada página física, o kernel fornece um conjunto de funções de mapeamento reverso . Eles permitem que os mapeamentos reversos para mapeamentos anônimos e mapeamentos baseados em arquivo sejam percorridos. Por exemplo,
try_to_unmap
percorre os mapas procurando qualquer uso de uma determinada página física, para que possa desmapeá-la.shrink_page_list
chamatry_to_unmap
quando decide que precisa desmapear uma página que está mapeada em processos.