14

「プログラムが : のような命令を実行するMOV REG,1000と、メモリ アドレス 1000 の内容が REG にコピーされます。アドレスは、インデックス、ベース レジスタ、セグメント レジスタ、およびその他の方法を使用して生成できます。

これらのプログラム生成アドレスは仮想アドレスと呼ばれ、仮想アドレス空間を形成します。」

誰でも私に説明してもらえますか、それはどういう意味ですか(これらのプログラムで生成されたアドレスは仮想アドレスと呼ばれます) ?

4

2 に答える 2

38

プログラムやデータは、メモリセルに数値として格納されます。各メモリ セルには、アドレスと呼ばれる固有の番号があります。有効なアドレスを表す数値の範囲は、アドレス空間と呼ばれます。

プログラムが実行されると、CPU はメモリからデータを読み取り、結果をメモリに書き戻します。CPU は、読み取りまたは書き込み操作の対象となるメモリ セルのアドレスを指定することにより、目的の位置をメモリに伝達します。

CPU がアドレスを取得する方法は複数あります (アドレスは単なる数字であることを思い出してください)。アドレスを表す数値は、レジスタにある場合もあれば、別のメモリ位置に格納されている場合もあり、レジスタへのオフセットを加算または減算することで計算されている場合もあります。すべての場合において、コンパイルされたプログラムは、読み取りまたは書き込みに必要なアドレスを作成 (または生成)する方法を CPU に指示します。

最新のアーキテクチャでは、複数のプログラムが論理アドレス空間全体を所有しているかのように実行できます。つまり、いくつかのプログラムは、互いの結果をステップオーバーすることなく、同じアドレスのメモリ位置に書き込むことができます。これは、アドレス空間を仮想化することによって行われます。プログラム A と B が 0x1000 のメモリ位置への書き込みを生成するとします。CPU は、オペレーティング システムの支援を受けて、アドレスをさらに調整し、プログラム A の物理アドレス 0x60001000 に、プログラム B の物理アドレス0x5F001000 にマップすることができます。仮想アドレス空間。メモリのモデルは、0 から始まり 0x000100000000 まで続く連続ブロックです (システムにプロセスで使用できるメモリが 4GiB あると仮定します)。ただし、このモデルが機能するのは、CPU が追加で論理アドレスを物理アドレスに変換し、プログラムの実行プロセスで必要に応じて割り当てられたり削除されたりするためです。

アドレスを表す同じ数字は、プログラムと CPU にとって異なるものを意味するため、プログラムのアドレス空間は仮想と呼ばれ、CPU のアドレス空間は物理と呼ばれます。

于 2012-02-23T14:40:40.857 に答える