Operating system 虚拟机监控程序和java虚拟机

Operating system 虚拟机监控程序和java虚拟机,operating-system,jvm,virtualization,Operating System,Jvm,Virtualization,我想问的问题是: 1) 虚拟机监控程序到底做什么?为什么需要它 2) 虚拟机监控程序和Java虚拟机之间的区别是什么 3) JVM是否使用虚拟机监控程序 4) 当像linux这样的主机操作系统可以处理多个来宾操作系统时,为什么要使用hypervisor 如果有人在回答你的问题之前解释一下这一点,我会建议你在维基百科中搜索相关条目。虚拟机监控程序用于运行多个来宾操作系统,而JVM用于解释java字节码。JVM在操作系统上运行,它不关心操作系统是在裸机上运行还是在虚拟机监控程序上运行。实际上,lin

我想问的问题是:

1) 虚拟机监控程序到底做什么?为什么需要它

2) 虚拟机监控程序和Java虚拟机之间的区别是什么

3) JVM是否使用虚拟机监控程序

4) 当像linux这样的主机操作系统可以处理多个来宾操作系统时,为什么要使用hypervisor


如果有人在回答你的问题之前解释一下这一点,我会建议你在维基百科中搜索相关条目。虚拟机监控程序用于运行多个来宾操作系统,而JVM用于解释java字节码。JVM在操作系统上运行,它不关心操作系统是在裸机上运行还是在虚拟机监控程序上运行。实际上,linux可以使用KVM处理多个来宾操作系统,KVM是linux内核的一部分。所以最后一个问题的描述是完全错误的

  • Hypervisor或virtual machine manager是一个允许多个操作系统共享单个硬件主机的程序
  • JVM或Java虚拟机为计算机处理器解释字节码,以便它可以执行Java程序指令
  • 没有JVM不使用hypervisor,因为它不是运行操作系统的虚拟机,而只是一个解释器
  • 主机操作系统使用虚拟机监控程序或虚拟机管理器管理不同的虚拟机
  • 虚拟机监控程序也称为硬件虚拟化,是一个虚拟化层,允许在其上运行一个或多个本机操作系统,就像它们在物理机器上运行一样。它与仿真类似,但只运行能够在没有虚拟机监控程序的情况下运行的操作系统,而虚拟机监控程序的运行速度要快得多

  • 两者都是虚拟化层。但是,Java在性能和可移植性方面进行了优化。虽然Java在技术上是一个模拟器,但它比hyperviser快得多。这是可以实现的,因为仿真平台是为快速仿真而设计的。Java不运行x86或x86_64/amd64代码,它运行一种叫做字节码的东西。字节码的技术术语是中间语言(IL)。它由即时编译器(JIT)编译成运行时处理器本机的代码。当JIT执行编译过程时,它可以确保程序遵循Java:s的安全约束,只需不生成违反这些约束的代码即可。Hyperviser通过拦截所谓的特权指令和模拟磁盘驱动器等设备来强制执行安全约束。之所以这样做,是因为原生x86或x86_64/amd64代码对于程序来说非常难以理解,并且更改代码以使其自行实施安全约束几乎是不可能的。另一方面,Java运行字节码,这些字节码很容易让程序理解,也很容易出错,因此它可以自行执行安全规则

  • 简单的回答是:hyperviser比Java慢,但允许您运行大量完整的操作系统,以及所有可用的软件。虽然Java速度更快,但您只能在其上运行Java软件。如果您想在虚拟机中运行Windows和Office,则不能在Java中运行

  • 我想我已经回答了上面的问题,但是没有,它使用代码检查并修改程序,以便能够自我执行安全规则。之所以能够做到这一点,是因为可运行的Java应用程序处于一种称为字节码的中间状态,Java很容易理解、检查、查找可能违反规则的代码并对其进行修改以遵守这些规则。这是一个相当复杂的过程,与hypervisor相比有几个优点。第一个优点是“编译一次,到处运行”,因为Java是以字节码的形式编译和分发的。第二个优点是速度,JIT:ed代码与非虚拟化代码具有相同的速度,即使在强制执行严格的安全性时也是如此。缺点是只有字节码程序才能运行,因此您不能在虚拟机内运行Windows或Linux

  • 如果您正在运行另一个操作系统,如Windows或另一个Linux发行版,那么您正在运行一个虚拟机管理程序。KVM、Xen和VirtualBox是虚拟机监控程序的示例。您还可以使用一个共享内核(称为基于操作系统的虚拟化或“容器”)运行多个Linux实例。但是一个容器共享内核,因此您只能在运行操作系统的虚拟机上运行。容器的优点是它更加轻量级,因为您不需要在每个内核上运行多个内核