Como algo como o VirtualBox Guest Additions se comunica com o host?

Como algo como o VirtualBox Guest Additions se comunica com o host?

Imagino que o processo inclua observar algum padrão específico na memória virtualizada e alterá-lo, mas estou me perguntando como exatamente isso funciona. Talvez uma nova espécie de chamada de BIOS? (Semelhante ao sistema operacional que consulta a hora no RTC.) Estou interessado porque estou pensando se eu mesmo poderia me conectar a ele para comunicação de dados arbitrária entre o host e o cliente.

Responder1

Primeiro entenda que o Virtualbox é um programa instalado no sistema operacional host, portanto ele fornece executáveis, bibliotecas e outros recursos. Muitas dessas bibliotecas chamarão funções e serviços do sistema operacional host para realizar seu trabalho.

O Virtualbox também instala drivers no kernel do sistema operacional. Esses drivers definem como o kernel pode fornecer interfaces de hardware para a camada de Hardware Virtual do Virtualbox.

A camada de hardware virtual fica entre o sistema operacional host e o convidado. Para o Host é apenas mais um programa, mas para o Guest parece ser um hardware real.

É importante entender que o Virtualbox como programa está sendo executado enquanto o convidado está, mas os dois estão fazendo coisas totalmente diferentes. O Virtualbox está trabalhando com o host para apresentar um computador falso ao convidado, enquanto o convidado está apenas executando como um sistema operacional no hardware falso.

Os drivers do sistema operacional geralmente não são adequados para o convidado ou apresentam funcionalidade extremamente limitada. O convidado não sabe que é uma VM e não pode fazer perguntas ao host. É por isso que precisamos de ferramentas para convidados.

As Guest Tools atualizam os drivers do sistema com aqueles apropriados ao hardware virtualizado e se comunicam com o hardware falso para fazer perguntas como "qual é a minha resolução máxima". O VBox, por sua vez, pergunta ao sistema operacional e reporta ao convidado.

As Ferramentas Convidadas também permitem outros recursos, como mapeamento de pastas compartilhadas, instalando software no convidado que pode se comunicar com o VBox. O VBox então usa tecnologias de sistema operacional como pipes nomeados ou ole (no Windows) ou rede IPC (Linux) para transmitir dados entre ele e o sistema operacional host.

A conclusão importante aqui é que o convidado não sabe que é uma VM e o host não sabe que está executando VMs. O Vbox fica entre os dois e intermedia toda a comunicação. Não há dependência extraordinária do BIOS físico.

O que pode estar fazendo você pensar no BIOS são as extensões de virtualização. Por favor, entenda que VT é um conjunto de instruções da CPU e não está relacionado ao BIOS. VBox executa código que foi compilado em chamadas de instrução VT (quando apropriado) para que possa executar instruções otimizadas relacionadas a operações virtuais. Mais uma vez, o sistema operacional host tem pouco a ver com isso.

informação relacionada