Linuxにはどのような仮想メモリマネージャがありますか?

Linuxにはどのような仮想メモリマネージャがありますか?

Linuxでは、仮想メモリマネージャの目的は何であり、Linuxシステムの既存の「スワッピング」とどう違うのですか?

答え1

答え2

「仮想メモリ」とは、プロセスなどのオブジェクトが通常、ゼロからCPUが参照できる最大のアドレスまで、一意のメモリアドレス空間を取得することを意味します。 「ページ」(単位で管理されるメモリブロック)は、プロセスの仮想アドレス空間内の物理メモリのページなどにマッピングされる。メモリ管理デバイス(CPUの一部)は、プロセスの「ページテーブル」を使用して、プログラムの実行によって参照される仮想アドレスを、そのページがマッピングされる物理アドレスに変換します。

仮想ページと物理ページの間に一対一の対応はありません。一部の仮想ページはマップされておらず、複数のプロセスの仮想ページは同じ物理ページにマップされます。

「スワップ」を使用すると、カーネルがページ(通常は頻繁に使用されていないページ)を物理メモリからディスクに移動し、他のタスクで使用できるようにその物理ページを取得できます。プロセスがディスクにスワップされたページにマップされた仮想アドレスを参照しようとすると、「ページ障害」が発生します。カーネルは使用可能な物理ページを見つけ、その物理ページの内容をディスクに交換し、元のプロセスページの内容をディスクからその物理ページに交換し、プロセスのページテーブルを更新してページエラーに応答します。します。関連付けられた仮想ページが新しい物理ページにマップされます。この時点で、仮想アドレスへのプロセス参照が続くことがあります。

関連情報