Sistema Operacional Aberto
Gerenciamento de Memória Virtual
Algoritmos de Paginação
Norton Trevisan Roman
Marcelo Morandini
Jó Ueyama
Apostila baseada nos trabalhos de Kalinka Castelo Branco, Antônio Carlos
Sementille, Luciana A. F. Martimiano e nas transparências fornecidas no site de compra do livro "Sistemas Operacionais Modernos"
1
Tabelas de Páginas
TLBs aceleram a tradução entre endereços virtuais e reais
Mas esse é apenas um problema → como traduzir rapidamente
Resta ainda como lidar com grandes espaços de endereços virtuais → Como organizar a tabela de páginas?
Paginação hierárquica (multinível)
Tabelas de página com hash
Tabelas de página invertidas
2
Paginação MultiNível
Quebre o espaço de endereço lógico em múltiplas tabelas de página
Uma técnica simples é uma tabela de página em dois níveis
3
Paginação em Dois Níveis
A idéia é evitar manter na memória todas as tabelas de página o tempo todo
Apenas as necessárias devem estar na memória
Ex.
Suponha que um programa esteja dividido em:
Uma tabela para o código (4MB da base da memória)
Uma para os dados (4MB seguintes)
Uma para a pilha (4MB do topo)
Há um buraco gigante vazio, na tabela (usou apenas 3 páginas)
4
Paginação em Dois Níveis
A idéia é evitar manter na memória todas as tabelas de página o tempo todo
Ex.
Podemos dividir o programa em:
Uma para a pilha (4MB do topo)
Uma para os dados (4MB seguintes)
Uma tabela para o código (4MB da base da memória)
Há um buraco gigante vazio, na tabela (usou apenas 3 páginas)
Mesmo que a tabela inteira seja enorme, para esse programa precisaríamos apenas manter 4 (a principal, e essas outras 3)
As demais (possivelmente não usadas), não estariam na memória. 5
Paginação em Dois Níveis
Tabela Única: 20 bits
→ 1M entradas
Duas Tabelas: