【发布时间】:2018-01-19 23:51:26
【问题描述】:
JVM 和 CLR 是虚拟机。与裸机计算机类似,它们提供虚拟机语言。
在真正的计算机上,我们有提供系统调用和 API 的操作系统。例如,著名的《Advanced Programming Unix Environment》一书描述了 Unix 和 Linux 提供的 API。但是,Windows 提供不同的 API。
在像 JVM 和 CLR 这样的虚拟机之上,有什么东西
扮演操作系统的角色,并且
提供编程 API?
如果在 JVM 和 CLR 等虚拟机上没有任何东西扮演操作系统的角色,那么是什么提供类似于操作系统 API 的编程 API(例如 Java、C# 中的 API)?
注意:我问的是虚拟机及其之上,而不是它们的底层。虚拟机不是在它们之上运行一些虚拟操作系统吗?如果没有,为什么没有这个需求?
谢谢。
【问题讨论】:
-
这两个虚拟机都运行在底层操作系统上,不是吗?您不能将它们中的任何一个安装在具有空白的格式化硬盘驱动器的系统上并运行任何东西。 (来吧,试试吧。我们会等的。)
-
我询问的是虚拟机及其之上,而不是它们的底层。虚拟机不是在它们之上运行一些虚拟操作系统吗?
-
是的,他们有。您提到了 Java 和 CLR 虚拟机,我特别提到 这两个虚拟机都运行在底层操作系统上。哪一部分不清楚?
-
您没有回答的是:是否有虚拟操作系统在虚拟机之上运行?虚拟机是裸机的虚拟化,什么是虚拟机上运行的真实操作系统的虚拟化?如果没有,为什么没有这种需要?
-
没有。 下面有一个操作系统在运行,它提供底层功能。例如,在 Windows 上运行的 CLR 会路由到 WIndows 操作系统的底层功能,而在 Linux 上运行时会路由到 Linux 内核中的功能。您将 Java/CLR VM 与创建虚拟化硬件的 计算机 VM 混淆了。它们不是一回事。
标签: jvm virtual-machine clr