我了解什么是陷阱和仿真,但我很难理解二进制翻译是什么以及它与陷阱和仿真有何不同。我对这个2006年论文中的介绍非常陌生,正在尝试理解:“直到最近,x86架构还没有允许传统的陷阱和仿真虚拟化。针对x86的虚拟机监视器,例如VMware ® Workstation和Virtual PC,改用了客户机内核代码的二进制翻译。但是,英特尔和AMD现在都引入了体系结构扩展来支持经典虚拟化。”
此外,我也不理解上下文中“经典虚拟化”是什么,它与陷阱和仿真以及二进制翻译有何不同。希望能帮助我理解这些术语。
我认为这个链接会对你有所帮助。我已经尝试概括了它,想要更多信息请参考链接。
每当客户操作系统尝试执行这些特权操作时,处理器将“捕获”指令并将控制权移交给主机操作系统或超级监视程序,以便它可以执行所需的操作,然后将控制权返回给客户端。但是,在现实世界中,包括x86在内的大多数指令集都没有考虑到虚拟化。因此,存在一些特权指令没有相应的陷阱设施。
二进制翻译直接解决了这个问题。它不依赖于处理器本身来检测特权指令,而是使用虚拟化软件在软件中检查指令流。每当虚拟化软件检测到问题指令时,它会即时重新编写指令,通常用手动陷阱替换,以在适当的时刻将控制权移交给超级监视程序。希望这可以帮助到你。