Falhas de página e como elas são manipuladas

0

Este é o meu primeiro post no fórum. Eu estou tentando entender o modelo de memória do Linux e como ele lida com solicitações de alocação de memória de programas c / c ++.

Pelo que entendi, as falhas de página ocorrem quando o endereço de memória virtual não está na tabela de páginas. Como o kernel do linux faz inicialização de memória lenta, os pedidos de alocação de memória de uma chamada malloc, que podem chamar brk () ou sbrk (), não alocam a página de memória física até que a memória seja tocada. Assim, quando a memória é tocada, ocorre uma falha de página e a MMU chama o manipulador de falhas de página, que verifica se é uma falha de página boa e aloca a página. Por favor, corrija-me se isso estiver incorreto.

Minhas perguntas são as seguintes -

  1. O manipulador de falhas de página atualiza a tabela de páginas de processo com o novo endereço ou é o trabalho de MMU?
  2. O que significa "alocação de páginas"? O processo de "alocação de páginas" é sobre como fazer entradas na tabela de páginas?
  3. Se as alocações de páginas são lentas, então o que uma chamada de brk () ou sbrk () faz? E como o Kernel sabe quais endereços passar para o chamador?
  4. A chamada para brk ou sbrk passa pela MMU ou o kernel trata ela própria?

O que acontece depois de uma falha de página? menciona o que acontece depois uma falha de página, mas não discute o caso em que uma nova página ainda deve ser alocada.

Por favor, tenha paciência comigo enquanto estou tentando envolver minhas coisas. Parece que minha compreensão não tem uma peça crucial.

Obrigado RG

    
por user6907475 26.01.2018 / 19:48

0 respostas