Mapeamento de página de dois níveis
- 4 minutos
Ao contrário dos SOs em sistemas tradicionais, com a virtualização do sistema, o hipervisor aloca um espaço de memória endereçável contíguo para cada VM criada (não processo). Esse espaço de memória, alocado por VM, é chamado de memória real. Em troca, cada SO convidado em execução em uma VM aloca um espaço de memória endereçável contíguo para cada processo em sua memória real. Esse espaço de memória, alocado por processo, é chamado de memória virtual (o mesmo nome usado nos sistemas tradicionais). Cada SO convidado mapeia as memórias virtuais de seus processos para a memória real da VM subjacente, enquanto o hipervisor mapeia as memórias reais de suas VMs para a memória física do sistema. Claramente, ao contrário dos SOs tradicionais, isso envolve dois níveis de mapeamentos entre três tipos de endereços: virtual, real e físico. Na verdade, esses mapeamentos de virtual para real e de real para físico definem a virtualização de memória do sistema. Essa ideia básica de virtualização de memória por meio de mapeamento de página de dois níveis é resumida no seguinte vídeo:
Figura 2: Virtualização de memória em uma VM do sistema nativo
Semelhante a qualquer SO de uso geral, um SO convidado ainda terá seu conjunto de tabelas de páginas. Além disso, o hipervisor teria um outro conjunto de tabelas de páginas para o mapeamento de endereços reais para físicos. As tabelas de páginas no hipervisor são chamadas de tabelas de mapa reais. A Figura 2 demonstra a virtualização de memória do sistema em uma VM do sistema nativo. Ela mostra tabelas de páginas mantidas por VMs convidadas e tabelas de mapa reais mantidas pelo hipervisor. Cada entrada em uma tabela de página mapeia uma página virtual de um programa para uma página real na respectiva VM. Da mesma forma, cada entrada em uma tabela de mapa real mapeia uma página real em uma VM para uma página física na memória física. Quando um SO convidado tenta estabelecer uma entrada de mapeamento válida em sua tabela de página, ele faz a interceptação para o hipervisor. Subsequentemente, o hipervisor estabelece um mapeamento correspondente na tabela de mapa real da VM relevante.