虚拟化有多虚拟?

Vil*_*lx- 5 virtualization

在阅读不同主题的不同材料时,我不时地回到这个问题:虚拟化到底有多虚拟?“虚拟化”是指诸如 Virtual PC 和 VMWare 之类的东西,它们允许您运行来宾操作系统。特别是,我不明白的是:

  • 虚拟机是否提供了一个与物理机从根本上无法区分的环境?当然,会有一些允许检测虚拟机的实际差异(例如管理程序调用逃逸舱口,虚拟硬件组件名称等),但会不会有任何不兼容?
  • 如果环境与物理机完全兼容,那么嵌套虚拟机是否可行?
  • 如果不是,这是否意味着来宾操作系统必须专门适用于在虚拟机内运行?如果是这样,那么这是否意味着当今的大多数操作系统已经适用于大多数 VM 供应商?
  • 基于软件的虚拟化与基于硬件的虚拟化有什么不同吗?
  • 基于软件的虚拟化和基于硬件的虚拟化到底有什么区别?

zne*_*eak 6

据我所知:

  • 有一项研究是关于“无法检测到的 rootkit”的可能性,其中恶意虚拟机管理程序会位于您的计算机和硬件之间。安全公司(和 CPU 供应商)对有人设计了类似的东西并告诉没有人能够检测到它感到愤怒,因此他们实际上提出了一种使用计时函数并将结果与​​外部来源进行比较的方法。因此虚拟化几乎是无法检测到的,但是如果您非常关注小细节并且您有外部参考,则多种方法可以确定您正在被虚拟化。不过,它不应该导致任何不兼容。
  • 它不是。您的虚拟化 CPU 与物理 CPU 的功能不同。例如,英特尔虚拟化指令仅适用于主机操作系统。然而,这并不意味着你不能在虚拟机中安装虚拟机:它只是意味着它会非常慢。
  • 操作系统不必针对虚拟机进行调整。它相反。
  • 是的,它们在某种程度上是。软件虚拟化将始终有效。硬件虚拟化通常不是可传递的(来宾操作系统不能使用硬件虚拟化来托管更多来宾操作系统)。
  • 肯定还有更多,但我认为这是一个好的开始。