キャッシングとページは直交する概念です。
キャッシュは、高速の「メモリ」であり、大きな低速の「メモリ」へのアクセス回数を最小限に抑えるように動作します。最も一般的な意味では、高速「メモリ」は、Webから取り出したWebページ(低速「メモリ」)をキャッシュするためのハードディスクです。言うまでもなく、コンピュータアーキテクチャの文脈において、「キャッシュ」という用語は、より遅いRAMまたはディスクへのアクセスを高速化するために使用される物理RAMを指す場合があります。
OTOHは、単にRAMまたはディスクの内容の管理単位です。
仮想メモリシステムの実装では、これらの2つの概念が結びついています。プロセスは500 MBのメモリを割り当てることができます。これは、物理RAMをプロセスに与えることができるほど多くなる可能性があります。そのため、オペレーティングシステムは、ページと呼ばれるディスク上にブロックを割り当てます。このブロックは、プロセスのアドレス空間内の特定の論理ページの内容を保持します。
プロセスがアドレス空間内の場所にアクセスし、関連するページが現在物理メモリにマップされていない場合、CPUはページフォルトを通知し、OSはプロセスが実行されている間にディスクからページを取得して応答します中断状態である。ページがマップされると、プロセスは再開し、あたかもそこにあるかのようにそのメモリロケーションにアクセスすることができます。
仮想メモリは、プロセスをトリックしてRAMが大量になっていると考えるという共通の見解は、これを考える唯一の方法ではありません。また、プロセスのアドレス空間がディスクページに論理的に格納されていると考えることもできます.OSによるRAMへのマッピングは、プロセスがハードドライブに継続的にアクセスしないようにページの内容をキャッシュする方法に過ぎません。この意味では、キャッシュとページングされた仮想メモリは論理的に同じです。この観点は、2つの概念間の関係を理解するのに役立つかもしれませんが、仮想メモリなしでも物理メモリだけで実行できるので、完全に正確ではありません(実際には、こちらです)。
私は、基本的にページがキャッシュ "セット"(複数のキャッシュされたブロックがあるセットアソシエイティブキャッシュを前提としています)にあるということを頭の中に持っていたと思います。従って、アドレスがプログラムによってOSに呼び出され、それが「範囲外」であった場合、OSはキャッシュにアドレスを呼び出してミスを引き起こし、それを主メモリから取得することを強制するが、私はあなたが言っているのは、ページは一般にRAM上にあるが、プログラムはハードウェアで定義されていないと定義されているということです...私はそれが役立つと思います!どうもありがとう。 – onaclov2000
これは、ページがRAM上に存在せず、ページフォールトが発生した場合、論理的にキャッシュから取得するか、またはディスクアクセスが残っていることを意味しますか? (キャッシュは次に必要なページを「予測」しません) – onaclov2000
仮想メモリのコンテキストでは、RAMページとバッキングストア(ディスクページ)の間にキャッシュはありません。物理RAMは、本質的にディスク上に存在するページのキャッシュとして機能します。ページフォールトが発生した場合、それはあなたが行くプラッター(または最近のSSDチップ)に影響します。 –