首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚拟机管理程序和java虚拟机

虚拟机管理程序和java虚拟机
EN

Stack Overflow用户
提问于 2013-01-11 14:48:24
回答 3查看 3.7K关注 0票数 7

我想问的问题是:

1)虚拟机管理程序具体做什么?为什么需要它?

2)虚拟机管理程序和Java Virtual mMchine之间的区别是什么?

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

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

会有很大的帮助,如果有人能解释清楚的话

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-17 00:25:45

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

简短的答案是:虚拟机管理程序比Java慢,但它允许您运行许多完整的操作系统,以及它们可用的所有软件。这虽然Java更快,但你只能在它上面运行Java软件。如果你想在你的虚拟机上运行Windows和Office,你不能用Java来做。

  1. 我想我在上面回答了这个问题,但不是,它使用代码检查并修改程序,使其自我执行安全规则。这是因为可运行的Java应用程序处于称为字节码的中间状态,这对Java来说很容易理解、检查、发现可能违反规则的代码并修改它以遵守规则。这是一个相当复杂进程,与虚拟机管理程序相比有几个优点。第一个优点是“一次编译,到处运行”,因为Java是以字节码的形式编译和分发的。第二个优势是速度,即使实施了严格的安全性,JIT:ed代码也具有与非虚拟化代码相同的速度。缺点是只有字节码程序可以运行,因此你不能在虚拟机中运行Windows或Linux。
  2. 如果你运行的是另一个操作系统,如Windows或另一个Linux发行版,那么你正在运行一个Hyperviser。Xen和VirtualBox都是虚拟机管理程序的示例。您还可以使用一个共享内核运行多个Linux实例,这称为基于操作系统的虚拟化或“容器”。但是一个容器共享内核,因此你只能在你运行的操作系统上运行虚拟机。容器的优点是它更轻量级,因为您不需要在彼此之上运行多个内核...
票数 1
EN

Stack Overflow用户

发布于 2013-01-13 14:58:04

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

票数 1
EN

Stack Overflow用户

发布于 2014-03-02 16:26:48

  1. 虚拟机或

虚拟机管理器是一种允许多个操作系统共享单个硬件主机的程序。Java或

  1. 虚拟机解释计算机处理器的字节码,以便它可以执行Java程序。JVM不使用虚拟机管理程序,因为它不是运行操作系统的虚拟机,而是一个解释器。
  2. 主机操作系统使用虚拟机管理程序或虚拟机管理器

管理不同的虚拟机

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14273118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档