.exe 文件不能直接在 Linux 上运行,Linux 可执行文件也不能直接在 Windows 上运行。但是我们在 Windows 中安装了 VMware,我们可以在相同的硬件和架构上运行这两个文件。可执行文件如何工作?
答案1
为了更深入地了解,你可以查看维基百科中关于 VMware Workstation 的内容[1]以及虚拟机监视器[6]。
VMware Workstation 可以随时保存虚拟机的状态(即“快照”)。这些快照稍后可以恢复,从而有效地将虚拟机返回到保存的状态。
因此,你可以同时运行多个操作系统,每个操作系统都有自己的可执行文件。
这就像一个“超级操作系统”在每个虚拟机之间不断切换。
不同的可执行文件可以在它们编译的系统上运行,如果一切操作正确,他们不会注意到任何差异。
多说几句
一般来说,您可以使用不同的方式来设置机器,以允许其运行为不同的操作系统或不同的体系结构编译的可执行文件:
您可以同时安装多个操作系统,例如 Windows 和 Linux。
在启动时您选择与哪种操作系统兼容。
(+)
您将拥有完整的功能和速度,但需要花费一些时间。
(-)
这意味着要使用驱动器上每次安装所需的空间。您可以拥有模拟器,一个翻译程序(“模仿”)每一条机器指令,也许允许在 32 位机器上运行 64 位代码。例如
bochs
[2]或著名的mame
[3]能够在现代计算机上模拟数千种经典街机视频游戏和硬件。
(+)
您可能会节省驱动器上的空间。
(-)
你会跑得很慢,因为你需要翻译每个指令。您可以拥有兼容层作为
wine
[4](最初是“Wine Is Not an Emulator”的缩写),能够在多种符合 POSIX 标准的操作系统上运行 Windows 应用程序,例如 Linux、Mac OSX 和 BSD,动态地将 Windows API 调用转换为 POSIX 调用。
(+)
比以前更快(-)
并不总是兼容您可以安装虚拟机监视器 (VMM),类型 II [6]。 这虚拟化软件,作为开源 VirtualBox [5],将允许安装一个完整的未修改的操作系统,相关可执行文件将在该操作系统上运行。所谓的虚拟机将运行托管您原来的操作系统(见下图)。
...一种虚拟化技术,允许未经修改的操作系统及其安装的所有软件在特殊环境中运行,在现有的操作系统之上。这种环境称为“虚拟机”,是由虚拟化软件通过拦截对某些硬件组件和某些功能的访问而创建的。5]。
I,II 型 VMM [6]:
最后但同样重要的是,I 型虚拟机管理程序 [6], 或者虚拟机监视器(虚拟机监视器),创建和运行虚拟机的计算机软件、固件或硬件。这次它将直接在硬件上运行,操作系统将是其中一个项目.见上图。
它直接在主机硬件上运行,以控制硬件并管理客户操作系统。因此,它们有时被称为裸机虚拟机管理程序。客户操作系统作为主机上的进程运行。
结论
每个可执行文件都是为一个操作系统编译的,它必须通过该操作系统与硬件进行通信。不同的指令、库、策略……因此,Windows 的可执行文件通常不会在 Linux 下运行,反之亦然但正如你所见,有很多方法可以解决这个问题语言翻译,添加一种不同类型的层,以便程序无法察觉。
笔记:一些汇编程序需要直接访问内存和中断[7]他们可能需要特别的照顾。