共有オブジェクトはプロセスごとに別々にロードされますか、それともプロセス間で 1 つの共有オブジェクトが共有されますか? たとえば、あるプログラムが libc.so を使用しているとします。次に、このプログラムの 2 つのプロセスが起動されます。この共有オブジェクトは、メモリ領域内のプロセスごとに 2 回ロードされますか、それともメモリ内のどこかに 1 回ロードされ、2 つのプロセスのメモリにマップされますか?
1324 次
2 に答える
3
共有オブジェクトはmmap()
withMAP_PRIVATE
フラグを介してロードされます。つまり、これらはコピー オン ライト マッピングであり、最初は同じメモリを指しますが、いずれかが変更されると、変更前にコピーされて「非共有」になります。
于 2012-07-23T20:51:22.753 に答える
0
このスレッドを確認してください。理論的には、各プロセスはそれぞれ独自のアドレス空間を保持しており、そのためにスレッドを使用する必要がありますが、それはシステムの実装の問題です。
于 2012-07-23T19:05:20.613 に答える