5

実行可能ファイル foo.exe が静的ライブラリに基づいて構築され、この foo.exe の 6 つのインスタンスがマシン上で同時に実行されているとします。RAM の読み書き部分を除いてすべてのコードは同じ (読み取り専用部分) であるため、パフォーマンスを向上させるために RAM 内のこれら 6 つのインスタンス間で共有することはありますか?

上記の foo.exe が代わりに共有ライブラリを使用する場合、これらの共有ライブラリのインスタンスが 1 つしか実行されていないインスタンスが 6 つあるにもかかわらず、RAM に存在することはわかっています。

4

1 に答える 1

9

OSに依存します。

Linux と Solaris の場合、すべてのインスタンスは、コード (または適切に呼び出されるテキスト) を保持するメモリ ページを確実に共有します。

また、実行可能ファイルに由来するデータ ページを共有する場合もあります (つまり、グローバルおよび静的データ用)。これらのページは、コピー オン ライトまたは COW と呼ばれる手法で共有されます。インスタンスがデータ ページを変更しない限り、データ ページは共有されます。ただし、インスタンスがデータ ページを変更すると、独自のコピーが取得されます。

最新バージョンの Windows でも同じことができると推測していますが、確かなことはわかりません。

于 2010-01-09T08:20:57.037 に答える