管理程序和java虚拟机

Dha*_*tri 7 virtualization operating-system jvm

我想问的问题是:

1)hypervisor到底做了什么?为什么需要?

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

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

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

如果有人对此有所了解,那将会很有帮助

use*_*170 3

  1. 虚拟机管理程序也称为硬件虚拟化,是一个虚拟化层,允许在其上运行一个或多个本机操作系统,就像它们在物理机上运行一样。它与仿真类似,但仅运行无需虚拟机管理程序即可运行的操作系统,速度要快得多。

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

简短的回答是:虚拟机管理程序比 Java 慢,但允许您运行多个完整的操作系统以及它们可用的所有软件。虽然Java速度更快,但你只能在上面运行Java软件。如果您想在虚拟机中运行 Windows 和 Office,则无法在 Java 中执行此操作。

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

  2. 如果您正在运行其他操作系统,例如 Windows 或其他 Linux 发行版 - 您正在运行虚拟机管理程序。KVM、Xen 和 VirtualBox 是虚拟机管理程序的示例。您还可以使用一个共享内核运行多个 Linux 实例,称为基于操作系统的虚拟化或“容器”。但是容器共享内核,因此您只能使用正在运行的操作系统来创建虚拟机。容器的优点是它更轻量级,因为您不需要在彼此之上运行多个内核......