O endereço virtual para o mapeamento de endereços físicos nos sistemas de computador é um processo crucial que permite que vários processos sejam executados simultaneamente enquanto aparentemente tenham acesso exclusivo a toda a memória do sistema. É alcançado através de uma combinação de componentes de hardware e software, principalmente a
mmu (unidade de gerenciamento de memória) e a tabela
página . Aqui está um colapso:
1. Endereços virtuais: * Cada processo recebe seu próprio espaço de endereço virtual privado. Esse espaço é independente dos espaços de endereço virtual de outros processos, o que significa que um processo pode acessar o endereço 0x1000 sem conflito com outro processo também usando 0x1000.
* Esse espaço de endereço virtual é grande, muitas vezes excedendo em muito a RAM física disponível. Isso permite que os processos usem mais memória do que existe fisicamente.
2. Endereços físicos: * Estes são os endereços reais no RAM físico. O MMU traduz endereços virtuais em endereços físicos.
* O espaço de endereço físico é limitado pela quantidade de RAM instalada no sistema.
3. A Unidade de Gerenciamento de Memória (MMU): * O MMU é um componente de hardware que executa a tarefa crucial de traduzir endereços virtuais em endereços físicos. Faz isso em tempo real, toda vez que um processo tenta acessar a memória.
* Ele usa a tabela de páginas (descrita abaixo) para executar a tradução.
4. Tabelas de página: * As tabelas de página são estruturas de dados residentes na memória que contêm o mapeamento entre páginas virtuais e quadros físicos.
* Páginas
: O espaço de endereço virtual é dividido em blocos de tamanho fixo chamados páginas. Um tamanho de página típico é de 4KB.
*
quadros: A memória física é igualmente dividida em blocos de tamanho fixo chamados quadros, geralmente do mesmo tamanho que as páginas.
* A tabela de páginas atua essencialmente como uma tabela de pesquisa. Dado um número de página virtual, ele retorna o número do quadro físico correspondente.
5. O processo de tradução (simplificado): 1.
Segmentação de endereço virtual: O endereço virtual é dividido em duas partes:o número da página virtual (VPN) e o deslocamento da página.
2.
Página pesquisa de tabela: A VPN é usada como um índice na tabela de páginas para encontrar a entrada correspondente. Esta entrada contém o número do quadro físico (PFN) e outras informações como permissões de acesso (leia, escreva, execute).
3.
Construção de endereço físico: O PFN é combinado com o deslocamento da página do endereço virtual original para criar o endereço físico final.
4.
Acesso à memória: O MMU usa este endereço físico para acessar o local da memória.
6. Tabelas de página de vários níveis: Para evitar tabelas de página excessivamente grandes (o que seria o caso se uma tabela de página única mapeasse todo o espaço de endereço virtual), muitos sistemas usam tabelas de páginas de vários níveis. Isso cria uma estrutura hierárquica, onde cada nível aponta para o próximo, levando ao número do quadro físico. Isso salva a memória e melhora a eficiência.
7. Tradução Buffer Lookaside (TLB): O TLB é um cache dentro da MMU que armazena recentemente as traduções de endereço virtual-físico. Isso acelera consideravelmente o processo de tradução, pois o acesso ao TLB é muito mais rápido do que acessar a memória principal para procurar a tabela de páginas. Se uma tradução não for encontrada no TLB (uma Miss TLB), o MMU deve acessar a tabela de páginas, que é significativamente mais lenta.
8. Paging e troca: *
Paging: Se um processo tentar acessar uma página que não está atualmente na RAM (uma falha de página), o sistema operacional carrega a página necessária do armazenamento secundário (disco rígido) na RAM.
*
troca: O sistema operacional pode trocar os espaços de endereço virtual dos processos inteiros dentro e fora da RAM para gerenciar a memória com eficiência.
em resumo: O endereço virtual ao mapeamento de endereços físicos é um mecanismo complexo, mas essencial, que permite gerenciamento eficiente de memória, proteção e execução simultânea de vários processos. O MMU, as tabelas de página e o TLB trabalham juntos para executar essa tradução sem problemas, tornando -a transparente para os aplicativos.