0

Windows では、それぞれが同じ DLL を使用する 2 つのプロセスがある場合、明らかに各プロセスは DLL をアドレス空間に個別にロードしますが、Linux では共有オブジェクトが一度ロードされ、異なるプロセスにマップされます。誰かが Windows アプローチの長所と短所を説明してくれますか?

4

1 に答える 1

2

違いがそれほどはっきりしているとは思えません。Windows は、DLL を一度ロードし、共有部分を各プロセスにマッピングすることにより、DLL のすべてのユーザー間でデータ セグメントを除くすべてを共有します。ただし、プロセスが意図せずにデータを共有しないように、DLL 内のグローバル データはプロセスごとに個別に読み込まれます。Linux があまり似ていないとしたら、私は驚きます。そうでなければ、共有ライブラリが重大なセキュリティ リスクをもたらす可能性があり、信頼性の問題の可能性は言うまでもありません。ここにいくつかの参照があります:

スタックオーバーフローから:

.dll ファイルは、すべてのプログラムに対して 1 回ロードされますか、それともすべてのプログラムに対して 1 回ロードされますか?

ウィキペディアから:

http://en.wikipedia.org/wiki/Dynamic-link_library

于 2013-03-11T23:00:19.667 に答える