Операционная система UNIX. Руководство программиста




Как ОС UNIX работает с разделяемыми библиотеками?


Теперь, когда Вы понимаете, за счет чего разделяемые библиотеки позволяют экономить память, необходимо изучить, как ОС UNIX работает с ними. Это позволит понять, почему использование разделяемых библиотек может иногда привести к увеличению расхода памяти.

Разделяемая библиотека сборки и разделяемая библиотека выполнения Как упоминалось ранее, каждая разделяемая библиотека состоит из двух частей: разделяемой библиотеки сборки и разделяемой библиотеки выполнения. Первая должна находиться на компьютере сборки, то есть на том компьютере, на котором Вы создаете выполняемый файл; вторая должна находиться на целевом компьютере, то есть там, где файл будет выполняться. Разумеется, упомянутые компьютеры могут совпадать, однако это не обязательно.

Разделяемая библиотека сборки - это фактически то же самое, что и архивная библиотека. Каждый из ее элементов (обычно это законченный объектный файл) содержит имена некоторых функций и данных в своей таблице имен. Этот файл просматривается редактором внешних связей, когда разделяемая библиотека сборки указывается при компиляции или редактировании связей программы. Просмотр производится с целью разрешения внешних ссылок. Однако, как уже отмечалось, редактор связей не копирует элементы разделяемой библиотеки, разрешающие внешние ссылки, в объектный файл программы. Вместо этого редактор, найдя эти определения, помещает в объектный файл информацию, идентифицирующию их местонахождение в библиотеке. В результате создается специальная секция выполняемого файла, которая обозначается .lib. См. также раздел Что такое разделяемая библиотека? выше.

Разделяемая библиотека выполнения похожа на файл a.out(4). ОС

UNIX читает файл, в котором находится библиотека, если она нужна какому-либо из процессов. Необходимые модули библиотеки указаны в секции .lib выполняемого файла. Когда ОС UNIX выполняет файл, эта секция используется, чтобы включить соответствующую библиотеку в адресное пространство процесса. Таким образом, к моменту выполнения вся необходимая информация из библиотеки становится доступной.




Содержание  Назад  Вперед