問題タブ [got]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2246 参照

unix - 2 つのプロセスが同じ共有ライブラリを共有するにはどうすればよいですか?

私は共有ライブラリがどのように機能するかをよりよく理解しようとしてきましたが、2 つのことについて頭を悩ますことができません。

1-各プロセスには独自の仮想メモリ空​​間とページテーブルがあるため、共有ライブラリが1つのプロセス仮想メモリ空​​間にロードされた場合、2番目のプロセスはメモリ空間にないため、どのようにしてその共有ライブラリにアクセスできますか?

2- テキスト セクションのみが共有され、グローバル データは共有されないことを理解しています。これはどのように可能ですか? 私の理解では、グローバル変数への各参照はグローバル オフセット テーブル(略して GOT) を介して行われます。したがって、このコード行がある場合、これは、GOT のベース値として使用されるアセンブリのx = globようなものとほぼ同じになります。しかし、この場合、どのプロセスがその行を呼び出しても、GOT のオフセット 0x10 にあるアドレスを持つ同じグローバル変数に常にアクセスすることは明らかです。では、2 つのプロセスが同じ GOT エントリを参照する同じテキスト セクションを使用する場合、どのようにしてグローバル変数の異なるコピーを持つことができるのでしょうか?mov eax,DWORD PTR [ecx-0x10]ecx