2009-03-12 19 views
1

"共有ライブラリテキスト"と "共有ライブラリデータ"の違いは何ですか?また、共有ライブラリのデータを「事前移転」することはどういう意味ですか?この質問は、共有ライブラリーを含むいくつかのAIX固有の機能を参照しています。共有ライブラリ用語

答えて

4

ああ、それは難しい質問です。

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

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

"text"セグメントには、 "実行されるもの"が含まれています。

そして、 "pre-relocated" ...ここで移転がなぜ必要なのかについてのかなり良い説明があります:http://people.redhat.com/drepper/textrelocs.htmlとここに関わるもの:http://en.wikipedia.org/wiki/Relocation_(computer_science)

これは役に立ちますか?

*:nitpickerノート:それは2以上のものを持っているが、それは今

+0

+1 - ちょうどそれに会い、ビッグリンクも! –

+0

ありがとう!私はあなたの "前置かれた"記述が好きです。 –

+0

恐ろしい答え、ありがとう! –

2

メモリは4つのセグメントに分割されないことが重要だ - &ヒープを積み重ね、コード、データ。

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

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

"事前移転された"ライブラリに関しては、ここに概念があります。共有ライブラリがロードされると、共有ライブラリは共有アドレス空間にマップされます。 "pre-relocated"ライブラリには、その共有アドレス空間のどこにOSをロードするべきかを示すヒントが組み込まれています。私の理解を超える理由から、それはパフォーマンスを向上させることになっています。

+0

事前移転の良い説明。 –

+0

これは、大変感謝してくれます。 –

+0

事前再配置されたライブラリには、指定された "ヒント"ベースロードオフセットに対してすでに計算されたすべてのアドレスがあります。ライブラリをそのオフセットでロードできる場合は、ライブラリを再配置するためのロード時パッチはありません。それ以外の場合は、ハードコードされたアドレスの使用は、負荷オフセットに合わせて調整(または「修正」)する必要があります。ライブラリがヒントされたアドレスでロードされた場合、これはライブラリの初期ロード時間のパフォーマンスが大幅に向上します。 – Adisak

関連する問題