スワップスペースは、匿名ページのバッキングストア、または「プライベート」マッピングのダーティページです(たとえば、実行可能ファイルのデータセグメントは実行ファイルから読み取られましたが、変更はファイルを更新しません)。
プロセスの仮想アドレス空間内の変更されていないページは、ディスク(または任意のライブラリ)上の実行可能ファイルによって引き続きバックアップされます。
ほとんどの最新のOSは、プロセスが割り当てる仮想メモリページ(これはオーバーコミットと呼ばれます)に十分なスワップがあることを確認するために実際には厳密な会計処理を行いませんが、OSは、仮想メモリが割り当てられます。
OSが実行されておらず、ハードディスクにアイドル状態であっても、プログラムはページのアドレス空間を分割しますか?
私はこの部分にどこから回答するかほとんど分かりません。オペレーティング・システムの教科書を探しに行く(またはウィキペディア)と見上げる:
- プロセス:プログラム
- 実行可能ファイルの実行中のインスタンス:何かがそれを実行するまでも他のファイルとは別の、ディスク上に存在しないバイトを。
- 仮想アドレス空間と物理アドレス空間。
プログラムが実行されていない場合、プロセスはなく、アドレススペースもありません。それが実行されている場合、各プロセスには独自の仮想アドレス空間があります。 (読み取り専用ページはすべてディスク上の同じファイルにバックアップされています)。
ハードディスクがアドレス空間にありません。 –
@OliverCharlesworth詳細を教えていただけますか? – Zephyr
ハードディスクや(より一般的にはファイルシステム)が物理アドレス空間と仮想アドレス空間のどちらにもありません。しかし、通常、OSでは[ファイルを仮想アドレス空間にマップする]ことができます(https://en.wikipedia.org/wiki/Memory-mapped_file)。 –