リンカ・ローダと実行形式
100個のプロセスが同じ共有ライブラリを使っているとき、物理メモリの使い方として正しいものはどれか。
- A書き換えないコードのページは1つのコピーを共有し、書き込むデータのページはプロセスごとに持つ
- Bコードもデータも、プロセスごとに100個のコピーを持つ
- Cデータのページも含めてすべて1つを共有し、プロセス同士で値が見えてしまう
答えと解説を見る
正解:A. 書き換えないコードのページは1つのコピーを共有し、書き込むデータのページはプロセスごとに持つ
OSは各プロセスの仮想アドレス空間に共有ライブラリを対応づけ、書き換えないコードや定数のページは同じ物理ページを指すようにします。変数などの書き込むデータのページは、書き込まれた時点でコピーを作る(コピーオンライト)などして、プロセスごとに別にします。こうして、100個のプロセスでもライブラリのコードの分のメモリは1つで済みます。
- A. 正しい。仮想記憶で同じ物理ページを対応づけます。
- B. コードまでコピーすると、共有ライブラリの利点がなくなります。
- C. データはプロセスごとに分けられます。