Princípio de gerenciamento de memória usado pelo Linux

9

O gerenciamento de memória no Kernel Linux é feito usando paginação ou segmentação ou ambos?

    
por Gilles 12.03.2011 / 19:05

2 respostas

7

O Linux usa os dois. Ele usa segmentação para mapear todo o espaço de endereço disponível, fornecendo diferentes direitos de acesso: basicamente um kernel e uma visualização de espaço do usuário. Você pode usar o código-fonte do Linux para KERNEL_DS (segmento de dados do kernel) para alguns exemplos.

Paginação é então usada para implementar a memória virtual (Grep para "struct gdt_page" no kernel, para um ponto de partida)

    
por 14.03.2011 / 16:44
6

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 você saber ou fazer nada de especial, e este último precisa de tratamento especial (tem que ser reservado no momento da inicialização e mapeado por meio de um dispositivo especial).

O único contexto em que "segmento" aparece sob o Linux é o syscall de brk () que é usado para aumentar o segmento de dados de um processo (você normalmente não precisará disso, malloc faz isso sem você ter que se importar). Mas 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.

    
por 12.03.2011 / 19:13