7

我想问的问题是:

1) 管理程序到底是做什么的?为什么需要它?

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

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

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

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

4

3 回答 3

1

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

于 2013-01-13T06:58:03.620 回答
1
  1. 管理程序或虚拟机管理器是允许多个操作系统共享单个硬件主机的程序。
  2. JVM 或 Java 虚拟机为计算机处理器解释字节码,以便它可以执行 Java 程序指令。
  3. 没有 JVM 不使用管理程序,因为它不是运行操作系统的虚拟机,而只是一个解释器。
  4. 主机操作系统使用 Hypervisor 或虚拟机管理器管理不同的 VM
于 2014-03-02T08:26:48.120 回答
1
  1. Hypervisor 也称为硬件虚拟化,是一个虚拟化层,允许在其上运行一个或多个本机操作系统,就好像它们在物理机器上运行一样。它类似于仿真,但只运行在没有 Hyperviser 的情况下能够运行的操作系统,这要快得多。

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

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

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

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

于 2014-03-16T16:25:45.297 回答