5

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

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

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

详细地说,我需要你的帮助:

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

我想知道的是,HelloWorld 是如何通过每一层,然后从其中返回的。假设这个程序在 带有Ubuntu的Intel CPU 上运行。

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

下面是大家都知道的HelloWorld程序。

在此处输入图像描述

它被编译成如下的字节码。

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

操作系统对于这个特定程序的作用是什么?

建筑学的下一步是什么?

在 5 步 MIPS 中获取指令、解码、执行、内存访问、写回。

在此处输入图像描述

参考:

  1. 操作系统基础
  2. 图表

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

4

1 回答 1

3

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

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

图片由维基百科提供:

在此处输入图像描述

于 2013-05-01T02:37:27.387 回答