O gerenciamento de memória no Kernel do Linux é feito usando paginação ou segmentação ou ambos?
O gerenciamento de memória no Kernel do Linux é feito usando paginação ou segmentação ou ambos?
Respostas:
O Linux usa os dois. Ele usa a segmentação para mapear todo o espaço de endereço disponível e ao mesmo tempo conceder direitos de acesso diferentes: basicamente um kernel e uma visualização do espaço do usuário. Você pode grep o código fonte do Linux para KERNEL_DS (segmento de dados do kernel) para alguns exemplos.
A paginação é então usada para implementar a memória virtual (Grep para "struct gdt_page" no kernel, para um ponto de partida)
O gerenciamento de memória no Linux funciona exclusivamente por paginação.
O Linux suporta páginas "pequenas" (geralmente 4kB) e "grandes" (2M). O primeiro "apenas funciona" sem que você saiba ou faça algo especial, e o último precisa de tratamento especial (deve ser reservado no momento da inicialização e mapeado por um dispositivo especial).
O único contexto em que "segmento" aparece no Linux é o syscall brk () que é usado para aumentar o segmento de dados de um processo (você normalmente não precisará disso, o malloc faz isso sem que você precise se preocupar). De qualquer forma, a memória vem em páginas e é gerenciada em páginas, e não tem nada a ver com a segmentação x86.