Linuxでは、仮想メモリマネージャの目的は何であり、Linuxシステムの既存の「スワッピング」とどう違うのですか?
答え1
あなたはすべてが混ざっています。スワップはLinux VMの一部です。
Linuxのメモリ管理を説明する多数のページがあります。
https://www.tldp.org/LDP/tlk/mm/memory.html
https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html
https://www.win.tue.nl/~aeb/linux/lk/lk-9.html
https://www.thegeekstuff.com/2012/02/linux-memory-management/
答え2
「仮想メモリ」とは、プロセスなどのオブジェクトが通常、ゼロからCPUが参照できる最大のアドレスまで、一意のメモリアドレス空間を取得することを意味します。 「ページ」(単位で管理されるメモリブロック)は、プロセスの仮想アドレス空間内の物理メモリのページなどにマッピングされる。メモリ管理デバイス(CPUの一部)は、プロセスの「ページテーブル」を使用して、プログラムの実行によって参照される仮想アドレスを、そのページがマッピングされる物理アドレスに変換します。
仮想ページと物理ページの間に一対一の対応はありません。一部の仮想ページはマップされておらず、複数のプロセスの仮想ページは同じ物理ページにマップされます。
「スワップ」を使用すると、カーネルがページ(通常は頻繁に使用されていないページ)を物理メモリからディスクに移動し、他のタスクで使用できるようにその物理ページを取得できます。プロセスがディスクにスワップされたページにマップされた仮想アドレスを参照しようとすると、「ページ障害」が発生します。カーネルは使用可能な物理ページを見つけ、その物理ページの内容をディスクに交換し、元のプロセスページの内容をディスクからその物理ページに交換し、プロセスのページテーブルを更新してページエラーに応答します。します。関連付けられた仮想ページが新しい物理ページにマップされます。この時点で、仮想アドレスへのプロセス参照が続くことがあります。