2013-01-11 83 views
4

我想问的问题是:管理程序和Java虚拟机

1)管理程序到底做了什么?为什么需要?

2)hypervisor和Java Virtual mMchine有什么区别?

3)JVM是否使用虚拟机管理程序?

4)当像linux这样的主机操作系统可以处理多个客户操作系统时,为什么要使用虚拟机管理程序?

将是很大的帮助,如果有人阐明这一

回答

1
  1. 管理程序也被称为硬件虚拟化是允许在它上面运行的一个或多个本机操作系统虚拟化层就好像它们在物理机器上运行一样。它与仿真类似,但只运行能够在没有Hyperviser的情况下运行的操作系统,该系统速度更快。

  2. 两者都是虚拟化层。不过,Java针对性能和可移植性进行了优化。虽然Java技术上是模拟器,但它比hyperviser要快得多。这可以实现,因为仿真平台是专为快速仿真而设计的。 Java不运行x86或x86_64/amd64代码,它运行一个名为Bytecode的东西。字节码的技术术语是中间语言(IL)。通过Just In Time编译器(JIT),它被编译为您的处理器本地的代码。由于JIT执行编译过程,它可以确保程序遵循Java的安全性约束,只需不生成违反这些约束的代码即可。 Hyperviser通过拦截所谓的特权指令并通过仿真诸如磁盘驱动器的设备来强制执行安全约束。这样做是因为本机x86或x86_64/amd64代码对于程序来说很难理解,并且改变它以便自我实施安全约束几乎是不可能的。另一方面,Java运行Bytecode,这对于程序来说很容易理解,并且可以自动执行安全规则。

简而言之:hyperviser比Java慢,但允许您运行大量完整的操作系统以及所有可用的软件。虽然Java速度更快,但您只能在其上运行Java软件。如果你想在你的虚拟机上运行Windows和Office,你不能用Java来做到这一点。

  1. 我想我回答了上面的问题,但不是,它使用代码检查和修改程序,以便它自行实施安全规则。可以这样做,因为可运行的Java应用程序处于称为Bytecode的中间状态,Java可以轻松理解,检查,查找可能违反规则并修改规则以遵从它们的代码。与虚拟机管理程序相比,这是一个相当复杂的过程。第一个优势是“编译一次就可以运行”,因为Java是以字节码形式编译和分发的。第二个优点是速度,JIT:即使执行严格的安全性,ed代码也具有与非虚拟代码相同的速度。缺点是只能运行Bytecode程序,所以你不能在虚拟机中运行Windows或Linux。

  2. 如果您正在运行Windows或其他Linux发行版的其他操作系统 - 您正在运行Hyperviser。 KVM,Xen和VirtualBox是Hypervisor的例子。您还可以使用一个共享内核(称为基于OS的虚拟化或“Container”)运行多个Linux实例。但是Container共享内核,因此您只能使用运行的操作系统的虚拟机。容器的优点是它更轻巧,因为您不需要在多个内核之间运行多个内核......

0

回答你的问题之前,我会建议你搜索维基百科相关的条目。虚拟机管理程序用于运行多个访客操作系统,而JVM用于解释java字节码。 JVM运行在操作系统之上,并不在乎操作系统是在裸机上还是在虚拟机管理程序上运行。实际上,linux可以使用KVM作为Linux内核的一部分处理多个客户操作系统。所以最后一个问题的描述是完全错误的。

-1
  1. 虚拟机管理程序或虚拟机管理程序,是允许多个操作系统共享单个硬件主机的程序。
  2. JVM或Java虚拟机解释计算机处理器的字节码,以便它可以执行Java程序指令。
  3. 没有JVM不使用管理程序,因为它不是运行操作系统的虚拟机,而只是一个解释器。
  4. 主机操作系统管理使用管理程序或虚拟机管理器的不同的虚拟机