Como a RAM funciona em uma máquina virtual?

1

Eu configurei uma máquina virtual Linux com o VBox e o sistema operacional do host é o Windows. Eu gostaria de entender como a RAM opera na máquina virtual.

  • O host aloca o convidado usado em RAM como um único serviço?
  • ou a RAM está diretamente alocada pelo convidado?

Em resumo, o host procura o convidado como um único aplicativo, ou o sistema convidado atribui diretamente suas necessidades ao hardware? Eu não estudei ciência da computação ou algo assim, então eu percebo o problema da seguinte forma:

  • Se eu fizer um único cálculo no sistema convidado e o sistema host perceber o convidado como um único serviço, o cálculo será um dos muitos serviços que o convidado produzirá naquele momento e meu cálculo terá um atraso.
  • Se o convidado se conecta diretamente com a RAM, os outros serviços já alocaram na RAM e flutuam e o novo será atribuído mais rapidamente.
por Commissar Vasili Karlovic 22.03.2018 / 10:07

1 resposta

2

Primeiro: A alocação de RAM está sempre sob o controle final do sistema operacional do host.

Além disso, depende.

Com um hipervisor simples, basta informar ao hipervisor a quantidade de RAM que cada VM recebe. Essa quantia é deduzida da RAM disponível em seu sistema host quando a VM é iniciada e está "em uso" pelo hipervisor, desde que a VM seja corrida. O sistema operacional em execução na VM funciona como sempre para alocar RAM aos processos e aos usos do sistema operacional. O antigo "Virtual PC" da Microsoft, que era amplamente usado para executar o "Modo XP" no Windows 7, funciona dessa maneira. O VirtualBox também faz isso. Em ambos, se você configurar uma VM para 1 GB de RAM e iniciá-lo, seu host de repente terá 1 GB a menos de RAM "disponível". Geralmente não é muito eficiente no uso de RAM, mas é simples de implementar.

Com um hipervisor mais complexo, o valor que você aloca para a VM é simplesmente um limite superior. O sistema operacional convidado vê essa quantidade de RAM como "total", mas, por trás das cenas, algumas ou até mesmo a maior parte do que o cliente pensa é que a RAM pode ser virtual no que diz respeito ao host. Isso é particularmente verdadeiro no que o Windows chama de RAM "Livre" ou "Zerada" no convidado - como não tem conteúdo de interesse, não há necessidade de armazená-lo em lugar algum. Mas mesmo a RAM que o convidado vê como "em uso" pode ser virtual no host, com o conteúdo em um arquivo de paginação ou em um arquivo mapeado.

O sistema operacional convidado continua a manipular a RAM como sempre acontece, mas se o SO guest se referir a alguma RAM que ainda não está realmente lá, o hipervisor pode alocar mais RAM real para o convidado. (Em outras palavras, uma referência de memória que parece funcionar sem uma falha de página no convidado pode incorrer em uma falha de página no host.) Dentro da RAM disponível total e dos limites configurados, o hipervisor ajusta a quantidade de RAM "in" o sistema operacional convidado para tentar manter sua taxa de falha de página no host baixa.

Isso geralmente é chamado de "thin provisioning". É mais complexo implementar no hipervisor, mas resulta em um uso mais eficiente da RAM do host.

    
por 23.03.2018 / 16:53