「共有ライブラリ テキスト」と「共有ライブラリ データ」の違いは何ですか? また、共有ライブラリのデータが「事前に再配置」されるとはどういう意味ですか? この質問は、共有ライブラリを含む AIX 固有の機能に関するものです。
2 に答える
ああ、それはトリッキーな質問です。
さて、それに答えるには、実行可能ファイルには「テキスト」セクションと「データ」セクションの 2 つの * セグメントがあることを知っておく必要があります。
「データ」セグメントには、「実行されないもの」が含まれています。たとえば、プログラム内の文字列 (たとえば、"Command not found" という文字列は、/bin/sh
バイナリのデータ セグメントにあります)。
「テキスト」セグメントには、「実行されるもの」、つまりマシン命令が含まれています。
そして、「再配置前」... なぜ再配置が必要なのかについては、かなり良い説明があります: http://people.redhat.com/drepper/textrelocs.htmlと、何が関係しているか: http://en .wikipedia.org/wiki/Relocation_(computer_science) .
それは役に立ちますか?
*: ニッチなメモ: 2 つ以上ありますが、それは今のところ重要ではありません
メモリは、コード、データ、スタック、ヒープの 4 つのセグメントに分割されます。
「共有ライブラリ テキスト」は、共有ライブラリのコード部分であり、ライブラリ内の機能を実装する実際の命令です。
「共有ライブラリ データ」は、共有ライブラリのデータ部分です。ライブラリがロードされるとすぐに割り当てられるグローバル変数、定数、静的要素などです。
「事前に再配置された」ライブラリについては、次の概念があります。共有ライブラリがロードされると、共有アドレス空間にマップされます。「事前に再配置された」ライブラリは、その共有アドレス空間のどこにロードする必要があるかを OS に伝える「ヒント」を使用して構築されます。私の理解を超えた理由で、それはパフォーマンスを向上させるはずです。