我在研究生院学习了编译器,操作系统,计算机体系结构课程。但我想在一个简单但真实的例子中看到这些概念(不太理论化)。对于简单的例子,HelloWorld是一个不错的选择。
不仅这个小程序的生命周期很有趣,而且了解JVM,OS和Architecture如何工作可以帮助我们成为更好的程序员。
简而言之,我的问题是:我是否正确而完整地描述了这些步骤?
详细说明,我需要您的帮助:
我想知道的是HelloWorld如何遍历每一层,然后从中回来。假设此程序在 Ubuntu 的 Intel CPU上运行。
我将通过结合良好的答案来更新此帖子,直到最终接受一个答案。
以下是大家都知道的HelloWorld计划。
它被编译为字节码,如下所示。
字节码不可读,但我们可以使用javap -classpath . -c HelloWorld
来查看以下的助记符。
然后它在JVM中加载,链接和初始化。
由于它只有一个线程,我们假设它是以下JVM运行时数据区域中的左线程。
JVM线程是用户级线程,因此它将映射到内核。在Ubuntu中,它是一对一的映射,如下所示:
现在JVM制作了x86指令? (更新)
这个特定程序的操作系统角色是什么?
架构的下一步是什么?
获取指令,解码,执行,存储器访问,以5步MIPS写回。
参考文献:
答案 0 :(得分:3)
Java虚拟机(JVM)是一种可以执行Java字节码的虚拟机。它是Java平台的代码执行组件。
http://en.wikipedia.org/wiki/Java_virtual_machine
图片由维基百科提供: