5

大学院では、コンパイラ、オペレーティング システム、コンピュータ アーキテクチャのコースを受講しました。しかし、これらの概念を単純だが実際の例 (あまり理論的ではない) で見たいと思います。HelloWorld は、単純な例に適しています。

この小さなプログラムのライフ サイクルが興味深いだけでなく、JVM、OS、およびアーキテクチャがどのように機能するかを知ることは、より優れたプログラマーになるのに役立ちます。

要するに、私の質問は次のとおりです。手順を正しく完全に説明していますか?

具体的には、次の点についてあなたの助けが必要です。

  1. 間違っている部分を指摘してください
  2. 私は多くの貴重なポイントを見逃していると確信しているので、ライフサイクルで意味のあるポイントを追加してください.

私が知りたいのは、HelloWorld がどのように各レイヤーを通過し、そこから戻ってくるかです。このプログラムはIntel CPU とUbuntuで実行されると仮定し ます。

1つの回答が最終的に受け入れられるまで、良い回答を組み合わせてこの投稿を更新し続けます.

以下は、誰もが知っている HelloWorld プログラムです。

ここに画像の説明を入力

以下のようなバイトコードにコンパイルされます。

ここに画像の説明を入力

バイトコードは読み取れませんがjavap -classpath . -c HelloWorld、次のようなニーモニックを確認するために使用できます。

ここに画像の説明を入力

次に、JVM でロード、リンク、および初期化されます。

ここに画像の説明を入力

スレッドが 1 つしかないため、次の JVM ランタイム データ領域の左側のスレッドであると仮定します。

ここに画像の説明を入力

JVM スレッドはユーザーレベルのスレッドであるため、カーネルにマップされます。Ubuntu では、次のような 1 対 1 のマッピングです。

ここに画像の説明を入力

JVM は x86 命令を作成しますか? (アップデート)

この特定のプログラムに対するオペレーティング システムの役割は何ですか?

建築の次は何ですか?

命令フェッチ、デコード、実行、メモリアクセス、ライトバックの5ステップMIPS。

ここに画像の説明を入力

参考文献:

  1. OSの基本
  2. ダイアグラム

これは非常に難しい質問かもしれません。特定の API の使用方法の質問とは異なり、これにはほとんどすべてを理解する必要があります。

4

1 に答える 1