首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仿真器/虚拟计算机是如何工作的?

仿真器/虚拟计算机是如何工作的?
EN

Stack Overflow用户
提问于 2011-03-06 10:30:39
回答 5查看 595关注 0票数 0

仿真器是如何像android仿真器一样工作的。和一个虚拟的pc live VirtualBox?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-08 22:50:30

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

下一级将是虚拟机。对于我所描述的情况,它是一个匹配的指令集,所以您想要在x86主机上虚拟化一个x86程序。简而言之,主机处理器/机器具有硬件功能,允许您运行正在虚拟化的程序的实际指令。只要指令是基于简单寄存器或堆栈或其他本地存储器的,一旦程序冒险超出其存储器空间,虚拟化硬件将中断操作系统,然后虚拟机软件(如vmware或virtualbox )检查来自正被虚拟化的软件的存储器或I/O请求,然后确定这是否是视频卡请求、usb设备或nic或其他任何东西,然后它以与纯非虚拟化设置几乎相同的方式来仿真所述设备。虚拟机通常可以超过纯仿真机器,因为它允许一定百分比的软件以处理器的全速运行。缺点是你必须有一个与正在运行的软件相匹配的虚拟机。以牺牲性能为代价,仿真器可以比虚拟机更准确和可移植。

下一级将是类似wine或cygwin的东西,在这些东西中,您不仅要尝试执行虚拟机之类的操作并运行本机指令和捕获内存请求,而且您还将超越这一点,尝试捕获操作系统调用,以便您可以在另一个操作系统上运行为一个操作系统编译的程序,但速度要比虚拟机快得多。不是捕获硬件级寄存器或对显卡的内存访问,而是捕获操作系统调用,以使用特定字体或填充或线条绘制或字符串绘制等。然后,您可以通过调用本机操作系统来转换该操作系统请求。

票数 3
EN

Stack Overflow用户

发布于 2011-03-06 10:33:15

在最简单的情况下,仿真器或虚拟计算机提供了一个构建在主机系统(运行仿真器的实际物理系统)之上的抽象层,该抽象层将仿真系统的功能实现为要运行的代码。

票数 1
EN

Stack Overflow用户

发布于 2011-03-06 10:34:03

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5208250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档