1

OSは実際にプロセスのアドレス空間をページに分割するのはいつですか?スワップ空間またはページファイルのページ

プログラムを作成して保存するとします。実行されておらず、ハードディスクにアイドル状態であっても、OSはプログラムのアドレス空間をページに分割しますか?

サイズが設定可能なハードディスク内にあるスワップスペースまたはページファイルと呼ばれる部分があり、物理メモリからハードディスクにスワップされた未使用のページやページが含まれていることがあります。

プログラムの実行前に、プログラム全体がスワップ領域にコピーされているのですか、それともハードディスクのどこからでも実行できますか?

+0

ハードディスクがアドレス空間にありません。 –

+0

@OliverCharlesworth詳細を教えていただけますか? – Zephyr

+2

ハードディスクや(より一般的にはファイルシステム)が物理アドレス空間と仮想アドレス空間のどちらにもありません。しかし、通常、OSでは[ファイルを仮想アドレス空間にマップする]ことができます(https://en.wikipedia.org/wiki/Memory-mapped_file)。 –

答えて

0

スワップスペースは、匿名ページのバッキングストア、または「プライベート」マッピングのダーティページです(たとえば、実行可能ファイルのデータセグメントは実行ファイルから読み取られましたが、変更はファイルを更新しません)。

プロセスの仮想アドレス空間内の変更されていないページは、ディスク(または任意のライブラリ)上の実行可能ファイルによって引き続きバックアップされます。

ほとんどの最新のOSは、プロセスが割り当てる仮想メモリページ(これはオーバーコミットと呼ばれます)に十分なスワップがあることを確認するために実際には厳密な会計処理を行いませんが、OSは、仮想メモリが割り当てられます。

OSが実行されておらず、ハードディスクにアイドル状態であっても、プログラムはページのアドレス空間を分割しますか?

私はこの部分にどこから回答するかほとんど分かりません。オペレーティング・システムの教科書を探しに行く(またはウィキペディア)と見上げる:

  • プロセス:プログラム
  • 実行可能ファイルの実行中のインスタンス:何かがそれを実行するまでも他のファイルとは別の、ディスク上に存在しないバイトを。
  • 仮想アドレス空間と物理アドレス空間。

プログラムが実行されていない場合、プロセスはなく、アドレススペースもありません。それが実行されている場合、各プロセスには独自の仮想アドレス空間があります。 (読み取り専用ページはすべてディスク上の同じファイルにバックアップされています)。

+0

Windowsで設定する仮想メモリのサイズは、すべてのプロセスまたはスワップ領域のサイズに割り当てることができる仮想メモリの総量と同じですか? – Zephyr

+0

@Zephyr:いいえ、ファイルから読み込み専用にマップされたページは、スワップスペースではなくバッキングストアとして使用できます。また、Windowsではオーバーコミットが可能で、スワップ領域がなくても実行できます。その場合、ダーティページは物理RAMを占有し、OSはそれらの物理ページ(オペレーティングシステム用語によってはページフレーム)を再利用する方法がありません。さて、スワップの形でメモリ内圧縮を使用する以外...とにかく、私はあなたの "合計"が物理メモリ+ページファイルのサイズを含むかどうかわからないので、Windowsを使用しませんが、そうであれば、オーバーコミットにより多くの仮想割り当てが可能になります。 –

+0

このサイトは、ページングファイルまたはスワップスペースのサイズはhttps://www.makeuseof.com/tag/virtual-memory-low-heres-fix/です。 – Zephyr

1

OSは実際にプロセスのアドレス空間をページに分割するのはいつですか?

通常、LINKERはアプリケーションをページに分割してプログラム/プロセスの初期状態を確立し、その実行手順を実行可能ファイルに書き込みます。プログラムローダーは、実行可能ファイルの指示に従ってページを割り当てます。

プログラムを作成して保存するとします。実行されておらず、ハードディスクにアイドル状態であっても、OSはプログラムのアドレス空間をページに分割しますか?

上記を参照してください。リンカーは、あなたが書いたものをページに分割します。

プログラムの実行前に、プログラム全体がスワップ領域にコピーされているか、ハードディスクの任意の部分から実行できますか?

仮想メモリシステム(その機能)では、プロセスに割り当てられたすべてのページは、ページファイル内の対応する場所になります。システムによっては、複数のページファイルが存在することがあります。たとえば、実行可能ファイルは、静的データおよびコードのページファイルになることがあります。

+0

最後の段落は、メモリーをオーバーコミットしていないシステムでのみ有効です。ほとんどの最新のOSはデフォルトでオーバーコミットします。そうしないと、物理RAMと同じくらい多くのスワップスペースが必要になります。 –

+0

Wikipediaによると、MMUはアドレス空間をhttps://en.m.wikipedia.org/wiki/Memory_management_unitページに分割しています。最初の声明の参考資料を提供してください。 – Zephyr

関連する問題