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

       

Выбор адресов секций команд и данных


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

Секции разделяемых библиотек должны располагаться с границы, кратной 1 Мб. В следующей таблице приведен список зарезервированных областей памяти (на момент написания данного руководства) и виртуальные адреса, которые могут использовать вновь создаваемые разделяемые библиотеки.



Виртуальный адрес   Описание   Маршрутное имя 
 0x70000000   Разделяемая библиотека языка C   /shlib/libc881_s 
 0x70200000   Сетевая библиотека   /shlib/libnsl_s 
 0x70400000   Системный резерв   не назначено 
 0x74000000   Для частного использования   не назначено 
. . .      
 0x77FFFFFF       

Чем полезна такая таблица? Во-первых, разделяемая библиотека языка C и сетевая разделяемая библиотека находятся там, где это указано, и используют адреса из указанных диапазонов. Если Вы создадите разделяемую библиотеку, использующую зарезервированные адреса, Вы рискуете войти в конфликт с возможными будущими разработками.

Примечание

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

Далее, некоторые области памяти предназначены для частного использования. Если Вы разрабатываете большую систему, состоящую из множества процессов и выполняемых файлов, создание разделяемых библиотек может улучшить показатели ее работы. До тех пор, пока Вы не собираетесь создавать разделяемые библиотеки как отдельные программные продукты, Вам следует использовать "частные" области, чтобы не возникало конфликтов с коммерческими библиотеками. То же касается и случая, когда Вы будете владельцем всех выполняемых файлов, работающих с Вашей разделяемой библиотекой. Избегайте конфликта адресов!

Примечание

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



Содержание раздела