Sistemas Operacionais
Aula 16: Memória virtual: Linux
Referências:
Gerência de Memória Física
Como o usuário aloca memória ?
Como o núcleo aloca memória ?
- Por exemplo, para uso interno ou como o sistema de memória virtual aloca memória ?
- Como fazer para identificar blocos de memória disponíveis com tamanhos variáveis ?
Buddy Heap
Páginas (ou conjuntos de páginas) são agrupados em blocos de 2:
Truque: uma lista encadeada para cada tamanho de blocos.
Caches do Núcleo
Dois tipos de cache são mantidos no núcleo:
Caches X Memória Virtual
A interação entre estes caches é estreita:
Para evitar redundância de espaço e cópias as páginas físicas são compartilhadas.
Contadores de Referência
Mapeamento Endereço Virtual -> Real
Paginação de 3 níveis:
Motivo: É necessário por causa do espaço de endereçamento no Alpha - muito grande.
Problema: Os x86 só permitem paginação de 2 níveis.
Solução: Reduzir o nível do meio a um elemento só.
Diversos Sabores de Páginas
Páginas da memória virtual podem ser:
Outra classificação:
Compartilhamento de Memória
Como fazer um fork ?
Método ineficiente:
Que horrível!... E se as duas tarefas compartilhassem as páginas ?
Não dá, porque quando um processo modificar a memória esta mudança seria visível ao outro.
Copy on Write
E que tal se a gente compartilhasse a página somente na leitura ?
As páginas marcadas como copy-on-write são:
Ou seja, um fork é feito simplesmente compartilhando as páginas:
O efeito é de compartilhamento máximo, tudo que pode ser compartilhado será:
Compartilhar é Preciso
Copy-on-write compartilha por exemplo:
Mas não compartilha quando por exemplo:
ELF X a.out
O formato de binário a.out é antigo e usado por diversos Unix.
O formato ELF usado por versões mais modernas do Linux é linkado dinamicamente:
Shared Libraries
Cuidado a ser tomado:
Porque ? Isto não tinha sido resolvido muito antes com paginação e segmentação ?
Compartilhar é Necessário
Compartilhamento de memória permite um ganho significativo na performance.
No Linux podemos identificar compartilhamento de memória: