如何打印“Hello World”? - 完整的生命周期

时间:2013-05-01 02:23:05

标签: java architecture compiler-construction operating-system

我在研究生院学习了编译器,操作系统,计算机体系结构课程。但我想在一个简单但真实的例子中看到这些概念(不太理论化)。对于简单的例子,HelloWorld是一个不错的选择。

不仅这个小程序的生命周期很有趣,而且了解JVM,OS和Architecture如何工作可以帮助我们成为更好的程序员。

简而言之,我的问题是:我是否正确而完整地描述了这些步骤?

详细说明,我需要您的帮助:

  1. 指出我错的任何部分
  2. 我确信我错过了许多有价值的观点,所以请在生命周期中添加任何有意义的观点。
  3. 我想知道的是HelloWorld如何遍历每一层,然后从中回来。假设此程序在 Ubuntu Intel CPU上运行。

    我将通过结合良好的答案来更新此帖子,直到最终接受一个答案。

    以下是大家都知道的HelloWorld计划。

    enter image description here

    它被编译为字节码,如下所示。

    enter image description here

    字节码不可读,但我们可以使用javap -classpath . -c HelloWorld来查看以下的助记符。

    enter image description here

    然后它在JVM中加载,链接和初始化。

    enter image description here

    由于它只有一个线程,我们假设它是以下JVM运行时数据区域中的左线程。

    enter image description here

    JVM线程是用户级线程,因此它将映射到内核。在Ubuntu中,它是一对一的映射,如下所示:

    enter image description here

    现在JVM制作了x86指令? (更新)

    这个特定程序的操作系统角色是什么?

    架构的下一步是什么?

    获取指令,解码,执行,存储器访问,以5步MIPS写回。

    enter image description here

    参考文献:

    1. OS basics
    2. Diagrams
    3. 这可能是一个非常困难的问题。与如何使用某种API的问题不同,这需要了解几乎所有内容。

1 个答案:

答案 0 :(得分:3)

  

Java虚拟机(JVM)是​​一种可以执行Java字节码的虚拟机。它是Java平台的代码执行组件。

http://en.wikipedia.org/wiki/Java_virtual_machine

图片由维基百科提供:

enter image description here