如果没有虚拟化支持,Java虚拟机如何在系统上运行?

Xin*_*nus 3 jvm

如果硬件支持是虚拟化必须的,那么Java虚拟机如何在不支持虚拟化的机器上运行?或者JVM不是虚拟机?

bma*_*ies 11

JVM与VirtualBox或VMWare虚拟机的虚拟性不同.它是一个实现Java字节码的"机器",而不是实际硬件的虚拟化版本.

对于以下场景,很久以前就已经创造了术语"虚拟机":

  1. 组成一台电脑,就像Knuth的MIX一样.
  2. 编写一个实现组合计算机的计算机程序.
  3. 运行程序

当这个虚拟机运行时,它是一个完全普通的程序,完全在用户模式下运行.它不需要硬件或操作系统的特殊帮助就能很好地工作.对于JVM尤其如此,因为Java字节代码不处理低级硬件I/O或其他难以模拟的事物.

后来,在历史上,(选择一个特定的实例),IBM发明了VM/370.VM/370使用术语"虚拟机"的另一种含义.在后来的意义上,硬件和操作系统合作允许单个物理机器托管(或多或少)相同体系结构的多个虚拟实例,其中整个操作系统的多个副本被写入,就好像它们运行在更多或更少的裸硬件.后来,X86的设计具有促进这一点的功能.

所以,是的,任何虚拟机都在使用一些物理硬件,除非你用一张桌子周围的纸张来实现它(步伐John Searle).但是当虚拟机与运行的机器没有任何相似之处时,就不需要操作系统和硬件的特殊帮助,也不需要像VM/370或VMware那样复杂的任何东西.

  • 不,JVM能够访问硬件,因为运行JVM的操作系统允许它. (3认同)