2016-11-14 8 views
0

私は仮想アドレスと物理アドレスの関係を(SOなどで)研究してきました。このコンセプトの理解が正しいかどうかを誰かが確認できたら、私はそれを感謝します。仮想アドレスと物理アドレスの関係についての私の理解は正しいですか?

ページテーブルは「仮想空間」として分類され、各ページの仮想アドレスを含みます。その後、各ページの物理アドレスを含む「物理空間」にマップされます。

私の説明をより明確にするために、ウィキペディアの図:

https://upload.wikimedia.org/wikipedia/commons/3/32/Virtual_address_space_and_physical_address_space_relationship.svg

が正しいこの概念の私の理解ですか?

ありがとうございます。

答えて

1

完全には正しくありません。

各プログラムには独自の仮想アドレス空間があります。技術的には、アドレス空間は物理ランダムアクセスメモリだけです。したがって、ユーザープログラムには独自のアドレス空間を持つように見えるため、「仮想」と呼ばれます。

ここで、一例として命令mov 0x1234, %eax(& T AT)またはMOV EAX, [0x1234](インテル)を取る:

  1. CPUは、その部分のいずれか、MMU仮想アドレス0x1234を送信します。
  2. MMUは、ページテーブルから対応する物理アドレスを取得します。住所を調整するこのプロセスは愛情を込めて「マッサージ」と呼ばれています。
  3. CPUは、物理アドレスが参照するRAMロケーションからデータを取得します。

具体的な翻訳プロセスは、実際のアーキテクチャとCPUに大きく依存します。

+0

謝罪します。私はあなたの答えを受け入れる前に、関連する質問をするのを忘れていました。 3に関しては、物理アドレスが参照する場所であると仮定して、CPUがセカンダリストレージからデータを取得する可能性があるという点で正しいと思いますか? –

+0

@ handler'shandle No. CPUはプライマリストレージに直接アドレスすることができます。セカンダリストレージはコントローラによって「アドレス指定」され、ドライバと一緒にセカンダリストレージからプライマリストレージにデータをロードします。そして、CPUはそれにアクセスすることができる。 x86アーキテクチャでは、ページングを使用することができます。MMUに渡された仮想アドレスがページテーブル内の対応する物理メモリアドレスを持たず、適切なフラグが設定されている場合、セカンダリストレージが参照され、そこからのデータがプライマリこれにより、プログラムはプライマリストレージよりも多くのアドレスに対応できます。 – Downvoter

0

ページテーブルは「仮想空間」として分類され、各ページの仮想アドレスを含みます。その後、各ページの物理アドレスを含む「物理空間」にマップされます。

これは実際には正しくありません。ページテーブルは、ページからなる論理アドレス空間を定義する。ページ・テーブルは論理ページを物理ページ・フレームにマップします。これらのページ・フレームはページ・フレームがメモリに存在しないことを示します。ディスクスペースを使用してメモリをシミュレートすると、ページはVIRTUALになります。

古くは、ページテーブルは常に仮想アドレス空間を確立していました。現在、仮想メモリ(ページング)なしで論理アドレス変換を使用することがますます一般的になりつつあります(例えば、組み込みシステム)。したがって、用語「仮想メモリ」および「論理メモリ」は頻繁に融合される。

物理アドレス空間は、オペレーティングシステムにのみ存在します。このプロセスは、論理アドレス空間のみを認識します。

これは、プロセスが例外または割り込み後にオペレーティングシステムになり、カーネルが共通の論理アドレス範囲内で動作するため、少し単純化されています。しかし、オペレーティングシステムカーネルは物理メモリをある程度管理しなければならない。

たとえば、ページテーブルの一部の側面では、物理アドレスを使用する必要があります。ページテーブルがすべての論理アドレスを使用していた場合、アドレス変換には鶏と卵の問題があります。さまざまなハードウェアシステムがこの問題にさまざまな形で対応しています。

最後に、リンク先の図は非常に貧弱です。

関連する問題