我想问的问题是:
1)虚拟机管理程序的确切作用是什么?为什么需要它?
2)hypervisor和Java Virtual mMchine有什么区别?
3)JVM是否使用管理程序?
4)当像Linux这样的主机操作系统可以处理多个 guest 操作系统时,为什么要使用虚拟机监控程序?
如果有人对此有所帮助,将会有很大的帮助
虚拟机管理程序(Hypervisor)也称为硬件虚拟化,是一个虚拟化层,允许在其上运行一个或多个 native 操作系统,就像它们在物理计算机上运行一样。它与仿真类似,但是仅运行能够在没有Hyperviser的情况下运行的操作系统,该操作系统要快得多。 都是虚拟化层。但是,Java已针对性能和可移植性进行了优化。尽管Java在技术上是模拟器,但它比虚拟机管理程序要快得多。因为仿真平台是为快速仿真而设计的,所以可以实现这一点。 Java不运行x86或x86_64/amd64代码,它运行称为Bytecode的东西。字节码的技术术语是中间语言(IL)。即时编译器(JIT)将其编译为处理器运行时 native 的代码。在JIT进行编译过程时,只需不生成违反此类约束的代码,就可以确保该程序遵循Java:s的安全性约束。虚拟机管理程序通过拦截所谓的特权指令并通过仿真设备(例如磁盘驱动器)来实现安全性约束。这样做是因为程序很难理解 native 的x86或x86_64/amd64代码,并且对其进行更改以使其自我实现安全约束几乎是不可能的。另一方面,Java运行字节码,程序易于理解和掌握字节码,从而可以自动执行安全规则。
简短的答案:虚拟机管理程序比Java慢,但是允许您运行大量完整的操作系统以及适用于它们的所有软件。虽然Java速度更快,但是您只能在其上运行Java软件。如果要在虚拟机中运行Windows和Office,则无法在Java中执行。
我想我已经在上面回答了这个问题,但是没有,它使用代码检查并修改程序,以便它可以自动执行安全规则。之所以可以这样做,是因为可运行的Java应用程序处于称为Bytecode的中间状态,Java易于理解,检查,查找可能违反规则的代码并对其进行修改以便遵守它们。这是一个相当复杂的过程,与虚拟机管理程序相比具有多个优势。第一个优点是“编译一次到处运行”,因为Java是作为字节码进行编译和分发的。第二个优点是速度,即使强制执行严格的安全性,JIT:ed代码也具有与非虚拟代码相同的速度。缺点是只能运行Bytecode程序,因此例如您不能在虚拟机中运行Windows或Linux。 如果您正在运行另一个操作系统,例如Windows或另一个Linux发行版,则您正在运行一个Hyperviser。 KVM,Xen和VirtualBox是虚拟机监控程序的示例。您还可以使用一个共享内核运行多个Linux实例,称为基于OS的虚拟化或“容器”。但是,Container共享内核,因此您只能使用运行OS的虚拟机。容器的优点是它更轻巧,因为您不需要在彼此之上运行多个内核...