
como ocorrerá a tradução do endereço no modo de usuário? se o usuário tiver uma tabela de páginas separada, onde elas serão armazenadas? Além disso, como o usuário acessará as tabelas de páginas armazenadas no espaço de endereço do kernel em um sistema com mecanismo de movimentação de tabelas de páginas de hardware?
Responder1
O kernel configura as tabelas de páginas para cada processo. O mapeamento de endereços virtuais para físicos é feito pela unidade de gerenciamento de memória (MMU) no hardware. Isso é feito de forma transparente para o código do modo de usuário. O modo de usuário não altera as tabelas de páginas e elas são visíveis apenas para o kernel.
O espaço de endereço virtual do processo é dividido em áreas com propriedades diferentes: algumas áreas são somente leitura, outras são leitura-gravação e, normalmente, a maioria dos endereços virtuais não possui nenhum mapeamento. As violações de acesso são tratadas pelo kernel. Por exemplo, quando um processo acessa um local de memória que não possui mapeamento para um quadro de memória física, uma exceção é gerada. Essa exceção (trap) é tratada pelo código do kernel, que pode encerrar o processo, enviar um sinal para ele ou o kernel pode criar um mapeamento transparente para a página.
O mapeamento de uma página de forma transparente (para o código do modo de usuário) pode acontecer porque a página foi trocada. Neste caso, o chamado manipulador de falhas de página mapeia a página para um quadro RAM físico livre e faz com que a página seja lida a partir do espaço de troca. Quando a página for restaurada, o processo será agendado para ser executado novamente e poderá continuar a execução como se nada tivesse acontecido.