Digamos que estamos trabalhando com um sistema que possui 40 bits de endereço físico. O espaço físico total do endereço (assumindo memória endereçável por byte) é bytes ou 1 TiB. E se os endereços virtuais tiverem 48 bits, isso significa que há mais endereços disponíveis na memória virtual do que os locais na memória física.
Isso faz sentido para mim, porque os endereços "em excesso" também podem se referir aos locais do disco rígido. No entanto, o que não entendo é como ocorre a tradução entre endereços virtuais e físicos. Suponho que exista um mapeamento armazenado em algum lugar que vincule os locais do VAS aos locais físicos. Se houver mais locais de endereços virtuais do que locais físicos, como todos esses mapeamentos podem ser armazenados na memória? No mínimo, você precisaria de 48 bits para armazenar cada endereço virtual e outros 40 para armazenar o local físico para o qual ele mapeia. Portanto, obviamente, você não pode simplesmente armazenar um mapeamento 1: 1 de cada endereço virtual em sua contraparte física, pois o mapeamento de cada local exigiria mais memória do que a própria memória física.
O que exatamente estou perdendo aqui?
fonte
Respostas:
O truque para fazer isso funcionar é "paginação". Ao trazer dados de um disco rígido para a memória física, você não apenas traz alguns bytes. Você traz uma página inteira. 4k bytes é um tamanho de página muito comum.
Se você só precisa acompanhar as páginas, e não cada byte individual, o mapeamento fica muito mais barato. Se você tiver um espaço de endereço de 48 bits e páginas de 4096 bytes, precisará rastrear qual das 2 ^ 36 páginas (aproximadamente 69 bilhões de páginas). Isso é muito mais fácil! O registro de onde todas as páginas são encontradas é conhecido como "tabela de páginas".
Se você realmente precisa de 1-256 TiB de memória, abrir alguns gigabytes para armazenar esta tabela de páginas não é grande coisa. Na prática, no entanto, faremos coisas como usar tabelas de páginas de vários níveis , o que nos permite ser um pouco mais eficientes, mantendo as páginas apenas para regiões do espaço de endereço que estamos realmente usando.
fonte