Gerenciamento de memória no Linux

Descrição. Principais características

Cada processo do Linux, em uma máquina de 32 bits, dispõe de 3GB de espaço de endereçamento virtual para si próprio, com 1GB restante para reservado para suas tabelas de páginas e outros dados do núcleo. O 1GB do núcleo não é visível quando o processo executa no modo usuário, mas torna-se acessível quando o processo faz uma chamada ao núcleo.
Assim:

  • Endereço de 0x00000000 a PAGE_OFFSET-1 pode ser endereçado tanto pelo modo usuário e modo kernel. user or kernel mode
  • Endereço de PAGE_OFFSET to 0xffffffff pode ser endereçado somente no modo kernel
  • O PAGE_OFFSET é normalmente igual a 0xc00000000,para arquitetura de 32 bits.

O espaço de endereçamento virtual é dividido em áreas ou regiões organizadas em páginas contíguas homogêneas. Isso quer dizer que cada área consiste de uma série de páginas consecutivas com proteção e propriedades de paginação idênticas.

O tamanho das páginas varia de arquitetura para arquitetura, entretanto a maioria costuma usar paginas de 4096 bytes. (A constante PAGE_SIZE informa o tamanho da página para uma dada arquitetura).

O endereço da memória virtual ou física é dividido em número de pagina (PAGE_MASK) e offset (PAGE_SIZE). Se a página tem um tamanho 4096 bytes, e a arquitetura suporta endereços de 32 bits por exemplo, então os últimos 12 bits menos significativos corresponde ao offset, e o restante corresponde ao número de página.

Cada endereço virtual é quebrado em até quatro campos. O campo PGD (campo diretório) é usado como índice de diretório global, sendo que existe um privado para cada processo. O valor encontrado é um ponteiro para PMD (diretório intermediário de página), o quel é indexado por um campo de endereço virtual. A entrada selecionada aponta para PTE (tabela de página final), indexada pelo campo página do endereço virtual. A entrada encontrada aponta para a página requisitada.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License