Como coexistem paginação estendida (4MB) e regular (4KB)?

5

Na arquitetura x86, a "paginação estendida" permite que quadros de páginas (memória física) sejam 4 MB em vez de 4 KB.

O livro "Entendendo o Kernel Linux, 3a" no capítulo 2 "Endereçamento de Memória", subcapítulo "Paging no Linux", seção "Tabelas de Páginas do Kernel", explica que para o último kernel Tabela de Páginas quando o tamanho da RAM é menor de 896 MB:

[...]the kernel can address the RAM by making use of large pages (see the section "Extended Paging" earlier in this chapter).

No entanto, na seção "Paginação estendida" (subcapítulo "Paginação no hardware"), está escrito:

Extended paging coexists with regular paging.

Na verdade, não vejo como a paginação estendida e regular coexiste. Pode por favor alguém explicar essas perguntas:

  • Em quais casos o kernel usa 4 MB páginas? ou páginas de 4 KB?
  • Qual tamanho de quadro de página será usado para operações kmalloc? para vmalloc?
  • Se assumirmos que o código inicial & dados (segmentos do kernel, tabelas de páginas provisórias e 128 KB para dados dinâmicos) cabem nos primeiros 8 MB de RAM (conforme o exemplo dado pelo livro), e se a quantidade real de código & os dados são apenas 5MB: o kernel desperdiçará 8 - 5 = 3 MB?
por telenn 13.06.2012 / 12:23

1 resposta

2

1. In which cases the kernel uses 4 MB pages? or 4 KB pages?

O aplicativo pode se aplicar a uma página grande, o kernel não determinará o tamanho da página, a menos que compile o PAGE_SIZE no código-fonte do kernel. Usar sinalizadores mmap pode determinar o tamanho da página no código-fonte do aplicativo.

2. Which page frame size will be used for kmalloc operations? for vmalloc?

O kmalloc usa o tamanho de página padrão no kernel do Linux, que é PAGE_SIZE no kernel, que é compilado ou determinado em tempo de execução. O mesmo para vmalloc.

3. If we assume that the initial code & data (kernel's segments, provisional Page Tables, and 128 KB for dynamic data) fit in the first 8 MB of RAM (as the example given by the book), what if the real amount of code & data is 5MB only: will the kernel waste 8 - 5 = 3 MB?

O tamanho da memória residual é determinado por PAGE_SIZE e os dados, se o tamanho da página for 4MB, os dados forem 5MB, o tamanho da memória desperdiçada será (PAGE_SIZE * N) - 5MB = 3MB.

    
por 19.09.2018 / 08:12