2

CPUはどのようにメモリアドレスを生成できますか、メモリセルへのアドレスはそれ自体の前に定義されているので、その意味は何ですか、cpuはメモリアドレスを生成しますか??

4

1 に答える 1

0

上記のコンテキストから、OS のメモリ管理の概念を理解しようとしているように見えます。ところで、Galvin は素晴らしい情報源ですが、Galvin のかなりの数の場所で、上記のような紛らわしい記述があることに同意します。

それにもかかわらず、あなたの質問に対して、私はそれについての私の理解のアイデアを与えようとします:

CPU がメモリアドレスを生成-

したがって、OS は、すべてのプロセスが独自のアドレス空間で実行され、別のプロセスまたは OS 自体のアドレス空間に不正にアクセスしようとしないことを確認する必要があります。

これを行うために、OS は Base レジスターと Limit レジスターを利用します。これらのレジスタは、特別な命令を介して OS によってのみアクセスおよび変更できます。OS はカーネルモードで動作するため、これらの特殊命令は OS によってのみ実行できます。ユーザー プログラムはユーザー モードで実行されるため、これらのレジスタにアクセスできず、ベース レジスタとリミット レジスタの値を変更できません。

ここで、コンパイル済みのプログラムを作成し、その exe (バイナリまたはむしろ、上記のプログラムのインスタンス - プロセス) が入力キューに常駐し、メイン メモリに取り込まれる準備ができている状況を考えてみましょう。実行のために CPU に取り込まれます。したがって、OS は、このプロセスが割り当てられたアドレス空間にのみロードされるようにします。

これまでのところ、すべて良いです。ここで、プロセス内の命令の 1 つ (現在はメモリ内、独自のアドレス空間内) が、あるメモリ位置からデータにアクセスする必要があるとします。CPU がこの命令を実行するとき (その命令サイクル、Fetch-Decode-Execute)、この命令の実行を完了するために、CPU は他のメモリ位置からデータにアクセスする必要があることを認識します。

命令に記載されているように、このメモリ位置は実際の物理アドレスではありません。むしろ再配置可能なアドレスです。リンカ/ローダは、このアドレスを絶対アドレスに変換します。CPU は、このアドレスを論理アドレスに変換します (または、ジェネレートと呼びましょう)。(OSは、CPUによって生成されたこの論理アドレスを、メモリバンクの1つで実際の物理アドレスに変換します。この変換は、実際にはMMU - ハードウェアによって行われます)

これは、「CPUがメモリアドレスを生成する」というフレーズに対する私の理解です。

于 2014-12-07T07:31:35.720 に答える