VM如何虚拟化硬件

时间:2014-10-23 21:59:55

标签: io operating-system virtual-machine hardware vm-implementation

假设我有一台运行Mac OS X的计算机,它运行的是运行Ubuntu的VMware,它在shell中运行规范helloworld.c。在我按下Enter并在屏幕上弹出Hello World!之间发生的高级事件序列是什么?

我可以理解,Ubuntu上方的所有内容都无意中发生了虚拟化。另外,从Mac OS X的角度来看,我可以理解,VMware只是另一个程序 - 没什么特别的。但是,我不明白Ubuntu是如何认为它与HW交互的,特别是如果它实际上并没有以内核模式运行?

我只是在学习操作系统 - 所以可能无法理解全貌。 OS管理程序下面是否有一个额外的sw / fw层?

1 个答案:

答案 0 :(得分:1)

什么' Ubuntu'是(或任何其他应用程序)是一组字节,它们代表指令(操作代码长的代码)或数据。
指令由CPU解码和执行。数据主要读入内存(假设有一组常量,静态变量等)。

VMware基本上是一个虚拟计算机硬件平台(这里是x86平台的虚拟化)。这意味着它读取应用程序的所有字节(原始二进制文件,PE或ELF exec,无论如何)并尝试充当x86 CPU。如果做得恰当,这与它所解释的任何东西都无法区分 这不是抽象 - 它不会隐藏与硬件的通信方法,而是将其抽象为某种更高级别的访问方法(例如Linux文件系统)。它只是尝试尽可能地像x86 CPU一样,抽象将是一个清晰可见的层。

作为一个例子 - C是对ASM /机器语言的抽象,你可以非常清楚地区分它们。