我在研究生院学习了编译器,操作系统,计算机体系结构课程.但我想在一个简单但真实的例子中看到这些概念(不太理论化).对于简单的例子,HelloWorld是一个不错的选择.
不仅这个小程序的生命周期很有趣,而且了解JVM,OS和Architecture如何工作可以帮助我们成为更好的程序员.
简而言之,我的问题是:我是否正确而完整地描述了这些步骤?
详细情况,我需要您的帮助以下内容:
>指出我错的任何部分
>我确信我错过了许多有价值的观点,所以请在生命周期中添加任何有意义的观点.
我想知道的是HelloWorld如何遍历每一层,然后从它返回.假设此程序在带有Ubuntu的Intel cpu上运行.
我会通过结合好的答案来更新这篇文章,直到最终接受一个答案.
以下是大家都知道的HelloWorld计划.
它被编译为字节码,如下所示.
字节码不可读,但我们可以使用javap -classpath. -c HelloWorld看到如下的助记符.
然后它在JVM中加载,链接和初始化.
由于它只有一个线程,我们假设它是以下JVM运行时数据区域中的左线程.
JVM线程是用户级线程,因此它将映射到内核.在Ubuntu中,它是一对一的映射,如下所示:
现在JVM制作了x86指令? (更新)
操作系统对此特定程序的作用是什么?
建筑的下一步是什么?
获取指令,解码,执行,存储器访问,以5步MIPS写回.
参考文献:
这可能是一个非常困难的问题.与如何使用某种API的问题不同,这需要了解几乎所有内容.
解决方法
A Java virtual machine (JVM) is a virtual machine that can execute Java bytecode. It is the code execution component of the Java platform.
http://en.wikipedia.org/wiki/Java_virtual_machine
图片由维基百科提供: