1

「共有ライブラリ テキスト」と「共有ライブラリ データ」の違いは何ですか? また、共有ライブラリのデータが「事前に再配置」されるとはどういう意味ですか? この質問は、共有ライブラリを含む AIX 固有の機能に関するものです。

4

2 に答える 2

4

ああ、それはトリッキーな質問です。

さて、それに答えるには、実行可能ファイルには「テキスト」セクションと「データ」セクションの 2 つの * セグメントがあることを知っておく必要があります。

「データ」セグメントには、「実行されないもの」が含まれています。たとえば、プログラム内の文字列 (たとえば、"Command not found" という文字列は、/bin/shバイナリのデータ セグメントにあります)。

「テキスト」セグメントには、「実行されるもの」、つまりマシン命令が含まれています。

そして、「再配置前」... なぜ再配置が必要なのかについては、かなり良い説明があります: http://people.redhat.com/drepper/textrelocs.htmlと、何が関係しているか: http://en .wikipedia.org/wiki/Relocation_(computer_science) .

それは役に立ちますか?

*: ニッチなメモ: 2 つ以上ありますが、それは今のところ重要ではありません

于 2009-03-12T20:35:33.480 に答える
2

メモリは、コード、データ、スタック、ヒープの 4 つのセグメントに分割されます。

「共有ライブラリ テキスト」は、共有ライブラリのコード部分であり、ライブラリ内の機能を実装する実際の命令です。

「共有ライブラリ データ」は、共有ライブラリのデータ部分です。ライブラリがロードされるとすぐに割り当てられるグローバル変数、定数、静的要素などです。

「事前に再配置された」ライブラリについては、次の概念があります。共有ライブラリがロードされると、共有アドレス空間にマップされます。「事前に再配置された」ライブラリは、その共有アドレス空間のどこにロードする必要があるかを OS に伝える「ヒント」を使用して構築されます。私の理解を超えた理由で、それはパフォーマンスを向上させるはずです。

于 2009-03-12T20:36:27.503 に答える