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