Общие библиотеки и общая память
Этот аргумент посвящен функциям операционной системы, предназначенным для работы с общими библиотеками и общей памятью.
В операционной системе предусмотрены средства создания и использования динамически подключаемых общих библиотек. Механизм динамического подключения позволяет загрузчику считывать во время выполнения внешние символы, определенные в общей библиотеке и упоминаемые в пользовательской программе.
Код общей библиотеки не хранится на диске в виде исполняемого образа. Общий код один раз загружается в сегмент памяти, отведенный для общей библиотеки, после чего с ним могут работать все процессы. Ниже перечислены преимущества общих библиотек:
- Экономия дискового пространства за счет того, что код общей библиотеки не включается в исполняемый код программ.
- Экономия памяти за счет того, что код общей библиотеки загружается в память только один раз.
- Возможное сокращение времени загрузки, если код общей библиотеки уже находится в памяти.
- Возможное повышение производительности за счет снижения количества страничных ошибок, если код общей библиотеки уже находится в памяти. Однако производительность снижается при вызове библиотечных функций, длина которых составляет от 1 до 8 инструкций.
Для того чтобы имена, определенные в общей библиотеке, были доступны для модулей, ссылающихся на них, эти имена необходимо явно экспортировать с помощью файла экспорта, за исключением случаев, когда применяются опции -bexpall. В первой строке файла экспорта можно указать полное имя общей библиотеки. В следующих строках указываются экспортируемые имена.