Читаем Linux API. Исчерпывающее руководство полностью

2.9. Статические и совместно используемые библиотеки

Объектная библиотека представляет собой файл, содержащий откомпилированный объектный код для (обычно логически связанных) наборов функций, которые могут быть вызваны из прикладных программ. Помещение кода для набора функций в единую объектную библиотеку упрощает выполнение задач по созданию и сопровождению программ. Современные системы UNIX предоставляют два типа объектных библиотек: статические и совместно используемые библиотеки.

Статические библиотеки

Статические библиотеки (которые также иногда называют архивами) в ранних системах UNIX были единственным типом библиотек. Статическая библиотека, по сути, является структурированной связкой откомпилированных объектных модулей. Для того чтобы в программе можно было пользоваться функциями статической библиотеки, при компоновке программы надо указать имя нужной библиотеки. После того как будет определено, в каких именно объектных модулях статической библиотеки находятся нужные для основной программы функции, компоновщик извлекает из библиотеки копии этих модулей и копирует их в получаемый в результате исполняемый файл (иногда его называют результирующим).

После разрешения из основной программы различных ссылок на функции в модули статической библиотеки сборщик извлекает из библиотеки копии требуемых объектных модулей и копирует их в получаемый в результате исполняемый файл. Такая программа называется статически скомпонованной.

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

Совместно используемые библиотеки

Совместно используемые библиотеки были разработаны для решения проблем, связанных со статическими библиотеками.

Если программа скомпонована с совместно используемой библиотекой, то вместо копирования объектного модуля из библиотеки в исполняемый файл компоновщик просто делает запись в этот файл. Запись показывает, что во время выполнения исполняемому файлу необходимо обратиться к совместно используемой библиотеке. Когда исполняемый файл в процессе выполнения загружается в память, программа, называемая динамическим компоновщиком, обеспечивает поиск общих библиотек, требуемых исполняемому файлу, и их загрузку в память. Во время выполнения нужно, чтобы в памяти резидентно находилась только одна копия кода совместно используемой библиотеки. Этой копией могут воспользоваться все запущенные программы. Тот факт, что совместно используемая библиотека содержит единственную скомпилированную версию функции, экономит дисковое пространство. Кроме того, существенно упрощается задача обеспечения использования программами самой свежей версии функции. Простая перекомпоновка совместно используемой библиотеки с новым определением функции приведет к тому, что существующие программы станут автоматически применять новое определение при своем следующем выполнении.

2.10. Межпроцессное взаимодействие и синхронизация

Работающая система Linux состоит из большого количества процессов, многие из которых работают независимо друг от друга. Но некоторые процессы для достижения своих намеченных целей сотрудничают друг с другом, и им необходимы методы обмена данными и синхронизация их действий.

Одним из способов обмена данными между процессами является чтение информации с дисковых файлов и ее запись в эти файлы. Но для многих приложений этот способ является слишком медленным и негибким. Поэтому в Linux, как и во всех современных реализациях UNIX, предоставляется обширный набор механизмов для межпроцессного взаимодействия (Interprocess Communication, IPC), включая следующие:

• сигналы, которые используются в качестве признака возникновения события;

конвейеры (известные пользователям оболочек в виде оператора |) и FIFO-буферы, которые могут применяться для передачи данных между процессами;

сокеты, которые могут использоваться для передачи данных от одного процесса к другому; данные при этом находятся на одном и том же базовом компьютере либо на различных хостах, связанных по сети;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

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

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры