Терминология общей библиотеки - PullRequest
1 голос
/ 12 марта 2009

В чем разница между «текстом общей библиотеки» и «данными общей библиотеки»? Кроме того, что означает «предварительное перемещение» данных общей библиотеки? Этот вопрос относится к паре специфических функций AIX, связанных с общими библиотеками.

Ответы [ 2 ]

4 голосов
/ 12 марта 2009

Ах, это сложный вопрос.

Хорошо, чтобы ответить на него, вы должны знать, что исполняемый файл имеет два * сегмента: раздел "текст" и раздел "данные".

Сегмент «data» содержит «материал, который не будет выполнен». Например, строки в программе (например, строка «Команда не найдена» будет в сегменте данных двоичного файла /bin/sh).

Сегмент «text» содержит «материал, который будет выполнен» - машинные инструкции.

И, «предварительно перемещенный» ... Существует довольно хорошее объяснение того, почему перемещение необходимо здесь: http://people.redhat.com/drepper/textrelocs.html и что здесь происходит: http://en.wikipedia.org/wiki/Relocation_(computer_science).

Это помогает?

*: примечание к нитке: у него больше двух, но это сейчас не важно

2 голосов
/ 12 марта 2009

Память разделена на 4 сегмента - код, данные, стек и куча.

«Текст совместно используемой библиотеки» - это часть кода совместно используемой библиотеки - фактические инструкции, которые реализуют функциональные возможности библиотеки.

«Данные общей библиотеки» - это часть данных общей библиотеки - глобальные переменные, константы, статические элементы и т. Д., Которые выделяются сразу после загрузки библиотеки.

Что касается «предварительно перемещенных» библиотек, вот концепция. Когда общая библиотека загружена, она отображается в общее адресное пространство. «Предварительно перемещенная» библиотека создается с «подсказкой», указывающей ОС, где в этом общем адресном пространстве она должна быть загружена. По независящим от меня причинам это должно улучшить производительность.

...