最近,我突然意识到,用于高级编程语言的虚拟机非常类似于操作系统。它管理资源,例如堆栈、堆等,类似于操作系统管理资源的方式,如果编程语言支持线程,那么虚拟机也会进行时间共享和上下文切换,类似于操作系统的工作方式。
这个类比又能走多远呢?为什么我们没有JVM的简单实现呢?似乎所有的碎片都在那里,那么,为什么这些东西不更普遍呢?
发布于 2014-03-08 05:18:40
这能走多远?
很远。您可能需要查看jnode () (github回购),它是JVM的一个完整的基本实现。只有大约500 K的组装,作为一个“纳米内核”,用于引导过程。一旦操作系统运行,所有运行的代码实际上都是java。
为什么我们没有JVM的简单实现呢?
JVM开发人员习惯于认为“就在那里”的许多东西实际上都得到底层OS的支持,JVM只是使用OS资源。例如:设备驱动程序。如果您查看上面的jnode代码,您将发现正在进行构建设备驱动程序的工作。它们需要用java编写,在其他地方您将永远看不到它。
发布于 2014-03-08 04:11:16
裸金属JVMs做(做了?)存在,但规模不够的规模,以资助足够的开发研发,以跟上超大容量主流处理器的实现。一个x86 (在一个小的纳米进程中)或ARM最终运行一个JVM,速度更快、成本更低,并且使用的功率比多个摩尔斯定律代落后(因此,在大纳米或微米进程中)定制JVM。目前,它需要数千万到数十亿美元才能跟上。
同样的事情也发生在一些非消费者驱动的RISC体系结构和一些不那么专业的DSP上。
发布于 2014-03-08 02:05:48
JVM 确实存在的硬件实现,有一个数字可供选择。然而,他们并不是没有一些缺点。首先,如果机器是用硅写的,你很难升级它。
https://softwareengineering.stackexchange.com/questions/231659
复制相似问题