1

私はgalvinの第6版からオペレーティングシステムの概念を研究していましたが、プログラムの実行の流れについていくつか質問があります。図は、ユーザープログラムの処理を次のように説明しています。

ユーザープログラムの多段階処理

リンケージエディタポイントに到達すると、実行可能なバイナリファイルを取得します。本が言うように、「プログラムを実行するには、プログラムをメモリに入れてプロセス内に配置する必要があります」今、私の愚かな質問のいくつかは次のとおりです。

  1. プログラムがメモリにロードされる前に、リンケージエディタによって生成されたバイナリ実行可能ファイルがハードディスクに保存されます。バイナリ実行可能ファイルがハードディスクに保存されているアドレスは、CPUによって生成された論理アドレスですか?

  2. 前の答えが「はい」の場合、CPUが論理アドレスを生成する必要があるのはなぜですか?つまり、実行可能ファイルはアドレスに関連するハードディスクのどこかに保存されているのですが、なぜCPUが個別に処理を実行する必要があるのでしょうか。CPUの主な目的は結局のところ処理です!

  3. 実行可能ファイルが物理メモリ、つまりRAMにある必要があり、ハードディスクで実行できないのはなぜですか?速度の問題によるものですか?

私はこれらの質問をするのが愚かであることを知っていますが、私を信じてください、私は答えを見つけることができません!:|

4

1 に答える 1

0

1)バイナリファイルがハードディスクに保存される論理アドレスは、ディスク内のファイルを管理することを目的としfile systemたコンポーネントであるによって決定されます。Operating System

2)&3)ハードディスクはa)十分に高速ではありませんb)ワードアドレッシングをサポートしていません。ハードディスクはセクターブロックでアドレス指定されます。通常、セクターサイズは512バイトです。CPUは、プログラム内の各マシンワードをアドレス指定して実行できる必要があります。そのため、プログラムはハードディスクに保存され、電源をオフにしてもコンテンツを保持します(電源をオフにするとコンテンツが失われるRAMとは対照的です)。次に、プログラムがRAMにロードされて実行されます。プログラムが終了し、実行結果がハードディスクに保存された後、別のプログラムを実行するためにメモリが解放されます。サンプルのコンパイラとリンケージエディタもプログラムです。それらはハードディスクに保存されます。コンパイラは、ハードディスク内のファイルから入力(プログラムのソーステキスト)を取得します。次に、オブジェクトファイルを保存します。リンケージエディタ、

于 2012-10-20T07:10:13.470 に答える