Como o kernel sabe quanta memória endereçável pelo usuário é reservada?

1

Eu estava lendo um artigo bastante datado sobre o kernel gerenciando memória e tinha essa pergunta sobre onde as entradas da tabela de páginas (PTE) entrariam.

Para este exemplo, o autor assume que estamos em uma máquina de 32 bits com 4 GB de memória sem o PAE. O artigo pressupõe que 3 GB sejam endereçáveis como memória virtual (páginas de 4KB de 3 GB == 786.432 páginas). Mas se houvesse um PTE de 4 bytes para cada página, isso por si só seria responsável por ~ 3.1MB de memória que deveria ser separada pelo kernel. Isso vai fazer parte da memória do kernel? ie. memória reservada do kernel além dos 3GB endereçáveis pelo usuário?

Então, o kernel calcula primeiro e chega a quantidade de memória do kernel (sistema) necessária e quanto pode marcar como memória endereçável pelo usuário durante a inicialização?

Quais outras coisas residiriam na memória reservada do kernel / sistema?

    
por Optimized Coder 24.11.2013 / 11:21

1 resposta

0

Normalmente, no x86 sem PAE, haverá uma divisão de kernel / usuário de 3Gb / 1Gb. Isso significa que o 1Gb de memória superior é reservado para o kernel, enquanto o espaço do usuário acessa a memória no 3Gb inferior. Isso é feito dessa maneira para evitar a necessidade de atualizar o registro que aponta para as tabelas de páginas (CR3) e liberar o TLB toda vez que houver uma alternância de contexto. Com essa otimização, o CR3 é atualizado e o TLB é liberado apenas ao agendar um processo diferente.

As informações sobre como os endereços virtuais devem ser interpretados são armazenadas em três locais:

  • Áreas de memória virtual (também conhecidas como VMAs, também conhecidos como mapeamentos): associam uma região de memória contígua a um armazenamento de backup (um arquivo ou troca, para mapeamentos anônimos.
  • Entradas da tabela de páginas: associam uma página inteira de endereços virtuais aos endereços físicos correspondentes e contém permissões e sinalizadores variados. PTEs são carregados preguiçosamente dos VMAs: um PTE não será necessariamente instanciado (e a página correspondente paginada em: isto é paginação sob demanda) até que um acesso seja tentado; somente processos que acessam os 3GB de memória precisarão de 3Mb de tabelas de páginas.
  • O TLB: este é um cache de HW da tabela de páginas.
por 25.11.2013 / 15:43