quinta-feira, 9 de julho de 2009

Tabelas de Página

Todo processo possui seu próprio espaço de endereçamento virtual e, como explicado nos posts antigos, o endereço virtual é transformado em um endereço físico. Esta conversão de endereço virtual para endereço físico é realizada com o auxílio da tabela de páginas.
O endereço virtual é separado em duas partes: o número da página virtual e o offset. Considere o exemplo de endereços de 16 bits, utilizando 4 bits para definir a página virtual e os 12 bits restantes para definir o offset dentro da página.
Os 4 bits definem um índice que será utilizado para encontrar o número da página que será utilizado para formar o endereço físico a ser procurado na memória. Este índice é passado para a tabela de página, que guarda o índice da página que devemos procurar na memória.
Desse modo, concluímos que a função da tabela de páginas é mapear endereços virtuais em endereços físicos.

A arquitetura mais simplificada da tabela de páginas consiste de um array de registradores com uma entrada para cada página virtual, sendo acessada através do número da página virtual. Contudo, como cada processo possui sua própria tabela de páginas, teríamos uma área muito grande ne memória principal sendo ocupada pela tabela de páginas, o que resultaria em uma perda de desempenho e aumento no custo do hardware a ser projetado.

Como solução, utilizamos uma tabela de páginas multinível. armazenada também na memória principal. Neste modelo, que permite um armazenamento não contiguo, alocamos novas páginas a medida que os processos crescem, preenchendo a tabela de páginas.


Observemos que na descrição da Tabela de Páginas, quando desejamos acessar a memória, devemos acessar inicialmente a tabela de páginas para obter o endereço físico e, em seguida, realizar um acesso à memória física para obter o dado ou instrução.

Nenhum comentário:

Postar um comentário