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

5
我在研究生阶段学习了编译器、操作系统和计算机架构课程。但是我希望能够在简单但真实的例子中看到这些概念(不要太理论)。 HelloWorld是一个很好的简单例子。
这个小程序的生命周期不仅有趣,而且了解JVM、操作系统和架构如何工作可以帮助我们成为更好的程序员。
总之,我的问题是:我描述的步骤是否正确完整?
详细来说,我需要你的帮助:
1.指出我错误的任何部分;
2.我确定我错过了很多有价值的观点,所以请添加任何有意义的观点以完善生命周期。
我想知道的是HelloWorld是如何通过每一层,然后从每一层回来的。假设该程序在使用Intel CPU的Ubuntu上运行。
我将通过综合好的答案更新帖子,直到最后接受一个答案。
下面是大家都知道的HelloWorld程序。
它被编译为以下字节码。
字节码是不可读的,但我们可以使用“javap -classpath . -c HelloWorld”查看类似以下的助记符。
然后在JVM中加载,链接和初始化。
由于它只有一个线程,让我们假设它是以下JVM运行时数据区域中的左线程。
JVM线程是用户级别线程,因此它将被映射到内核。在Ubuntu中,它是一对一映射,如下所示:
现在JVM生成x86指令吗?(更新)
操作系统在这个特定程序中的作用是什么?
架构中接下来会发生什么?
MIPS的5步取指、译码、执行、访存、写回。
参考资料:
  1. 操作系统基础
  2. 图表

这可能是一个非常困难的问题。不像那种关于如何使用某个API的问题,这需要对几乎所有内容都有所了解。


2
JVM 生成 x86 指令。 - le3th4x0rbot
1
很酷,但我会说它的家在别处。 - Jacob Valenta
我相信我们这里有一个维基或其他类似的东西。如果有足够声望的人经过,他们就有能力将其移动到那里。 - Jacob Valenta
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接