模拟器/虚拟计算机如何工作?

时间:2011-03-06 02:30:39

标签: emulation

仿真器如何像android一样工作。还有一台虚拟PC直播VirtualBox?

5 个答案:

答案 0 :(得分:3)

在一种形式中,软件以与真实系统上的硬件相同的方式读取二进制文件,它获取指令解码它们并使用程序中的变量而不是硬件中的寄存器来执行它们。内存和其他I / O类似地模拟/模拟。除了一个指令集模拟器之外,它还需要模拟硬件,因此它可能有假装行为的软件,例如像VGA视频卡,模拟器上运行的软件理想情况下不能告诉内存/ I / O是模拟的硬件,理想情况下你做的足以愚弄被模拟的软件。此外,尽管您尝试通过调用您正在运行的操作系统和/或硬件直接调用这些寄存器写入和读取的含义(假设您的程序当然认为它与硬件而不是模拟器通信)。

下一级是虚拟机。对于我所描述的情况,它是一个匹配的指令集,所以你想要在x86主机上虚拟化x86程序。它的长短是主机处理器/机器具有硬件功能,允许您运行虚拟化程序的实际指令。只要指令是简单的基于寄存器或堆栈或其他本地存储器,一旦程序冒出其存储空间,虚拟化硬件将中断操作系统,虚拟机软件如vmware或virtualbox然后检查内存或I / O来自正在虚拟化的软件的请求,然后确定这是视频卡请求还是USB设备或nic或其他什么,然后它以与纯非虚拟化设置相同的方式模拟有问题的设备。虚拟机通常可以超过纯粹模拟的计算机,因为它允许一定百分比的软件以处理器的全速运行。缺点是你必须有一个与正在运行的软件相匹配的虚拟机。与性能相比,仿真器可以比虚拟机更加准确和便携。

下一级可能会像wine或cygwin那样,你不仅要尝试做虚拟机之类的操作并运行本机指令并捕获内存请求,而且还要超越它并尝试捕获操作系统调用,以便您可以在另一个操作系统上运行为一个操作系统编译的程序,但速度比虚拟机快得多。您可以捕获操作系统调用以获取bitblt或填充或线条绘制或使用特定字体等绘制字符串,而不是对硬件级别寄存器或内存访问视频卡进行操作。然后,您可以通过调用来转换该操作系统请求。本机操作系统。

答案 1 :(得分:1)

在最简单的模拟器或虚拟计算机上提供构建在主机系统(运行模拟器的实际物理系统)之上的抽象层,该抽象层实现模拟系统对要运行的代码的功能。

答案 2 :(得分:1)

仿真器和虚拟机模拟PC或Android手机等硬件。虚拟机(或虚拟PC)查看操作系统的机器代码指令,并在虚拟计算机中的当前(主机)操作系统上运行它们。

答案 3 :(得分:1)

http://en.wikipedia.org/wiki/Virtual_machine

http://en.wikipedia.org/wiki/Emulator

根据类型或虚拟化,虚拟机并不总是模拟器。

答案 4 :(得分:-2)