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




Настройка разделяемой библиотеки


В этом разделе мы приведем ряд советов по настройке разделяемой библиотеки с целью достижения наибольшей эффективности ее использования. Они основаны на опыте разработки разделяемой библиотеки языка C и касаются систем со страничной организацией виртуальной памяти, например ОС UNIX V версия 3.1.

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

Постройте временной профиль программы [см. profil(2)]

Выясните предварительно временной профиль функций, которые можно было бы включить в разделяемую библиотеку.

Определите содержимое библиотеки

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

Группируйте взаимосвязанные функции

Будучи помещенной в выполняемый файл, функция может оказаться на одной странице с более часто используемыми функциями (см. выше рекомендацию "не включать редко используемые подпрограммы"). Старайтесь свести вместе одновременно используемые функции. Если каждый вызов funcA порождает обращения к funcB и funcC, постарайтесь разместить все три функции на одной странице. Информацию о такого рода статических зависимостях выдает cflow(1) (см. Справочник пользователя). Используйте ее, наряду с информацией о структуре библиотечных функций, для определения, какие функции действительно вызываются, в отличие от тех, которые только могли бы вызываться.




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