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

Rya*_*yan 5 java architecture compiler-construction operating-system

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

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

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

详细情况,我需要您的帮助以下内容:

  1. 指出我错的任何部分
  2. 我敢肯定我会错过很多有价值的观点,所以请在生命周期中添加任何有意义的观点.

我想知道的是HelloWorld如何遍历每一层,然后从它返回.假设此程序在带有UbuntuIntel CPU上运行 .

我会通过结合好的答案来更新这篇文章,直到最终接受一个答案.

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

操作系统对此特定程序的作用是什么?

建筑的下一步是什么?

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

在此输入图像描述

参考文献:

  1. 操作系统基础知识

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

dur*_*597 3

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

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

图片由维基百科提供:

在此输入图像描述