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



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


Выравнивайте на границы страниц

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

Когда мы создавали разделяемую библиотеку языка C...
У нас был компьтер со страницами размером 2K. Изучив таблицы перекрестных ссылок и результаты дизассемблирования разделяемой библиотеки выполнения, мы определили, где будут находиться границы страниц.

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

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

#objects #objects . . . . . . printf.o strcmp.o fopen.o malloc.o malloc.o printf.o strcmp.o fopen.o . . . . . .

Учитывайте особенности оборудования

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




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