物理アドレッシングとは、プログラムが実際に RAM の実際のレイアウトを認識していることを意味します。アドレス 0x8746b3 の変数にアクセスすると、物理 RAM チップに実際に格納されます。
仮想アドレッシングでは、すべてのアプリケーション メモリ アクセスがページ テーブルに移動し、ページ テーブルが仮想アドレスから物理アドレスにマップされます。したがって、すべてのアプリケーションには独自の「プライベート」アドレス空間があり、プログラムは別のプログラムのメモリを読み書きできません。これはセグメンテーションと呼ばれます。
仮想アドレス指定には多くの利点があります。貧弱なポインター操作などによってプログラムが互いにクラッシュするのを防ぎます。各プログラムには独自の個別の仮想メモリ セットがあるため、どのプログラムも別のデータを読み取ることができません。これは安全性とセキュリティ プラスの両方です。仮想メモリはページングも可能にします。この場合、プログラムの物理 RAM は、使用されていないときにディスク (または現在は低速のフラッシュ) に格納され、アプリケーションがページにアクセスしようとするとコールバックされます。また、特定の物理ページには 1 つのプログラムしか常駐できないため、物理ページング システムでは、a) すべてのプログラムをコンパイルして異なるメモリ アドレスにロードする必要がある、または b) すべてのプログラムが位置独立コードを使用する必要がある、または c)一部のプログラム セットは同時に実行できません。
物理仮想マッピングは、ソフトウェア (メモリ トラップのハードウェア サポートを使用) または純粋なハードウェアで実行できます。ページ テーブル自体が特別なハードウェア メモリ セット上にある場合もあります。どの組み込みシステムが何をするのかは頭の中でわかりませんが、すべてのデスクトップにはハードウェア TLB (Translation Lookaside Buffer、基本的には仮想物理マッピングのキャッシュ) があり、一部のデスクトップには高度なメモリ マッピング ユニットがあります。仮想マシンなど。
仮想メモリの唯一の欠点は、ハードウェアの実装が複雑になり、パフォーマンスが低下することです。