たとえば、あるプログラムがgrep
現在実行中で、ユーザーが別のインスタンスを実行している場合、両方のインスタンスはメモリを節約するために読み取り専用.text
部分を共有しますか?主な実行可能テキスト共有は共有ライブラリと似ていますか?
この動作はLinuxに存在しますか?それでは、他のUnicesもこれを行いますか?
Linuxでこれが行われない場合、通常は共有ライブラリで実行可能ファイルを実装して複数のインスタンスを並列に実行し、呼び出された実行可能ファイルが単にライブラリの基本機能を呼び出すことにどのような利点がありますか?
答え1
Unix共有実行可能ファイルと共有ライブラリは、メモリイメージがすべてのユーザー間で共有されるため、共有されています(duh ...)。
つまり、bash(1)の2つのインスタンスを実行し、そのうちの1つでvim(1)を実行すると、メモリにbashとvimの両方の実行可能ファイルのコピーが残ります。 Cライブラリlibcのコピー。
しかし、より良いことは、上記の実行可能ファイル/ライブラリ(ファイル)のディスクコピーから取得したLinuxページです。したがって、メモリに残っているのは最近使用されたページだけです。したがって、ほとんど使用されていないvimコマンド、bashエラー処理、libcで使用されていない機能などのコードは、メモリではなくディスク領域のみを占有します。