Cтраница 1
Динамическая библиотека разделяет код и адресное пространство данных с программой, которая ее вызывает. [1]
Динамические библиотеки PowerBuilder ( PBD) создаются для того, чтобы разделить приложение на единицы меньшего объема. Результат будет заключаться в уменьшении объема исполняемого файла и загрузке отсутствующих в нем классов из библиотек PBD во время выполнения приложения. Более конкретно; PowerBuilder загружает в память не всю динамическую библиотеку - а только требуемый класс. [2]
Каждая динамическая библиотека содержит набор тесно связанных библиотечных процедур и все их структуры данных в одном файле, как правило ( но не всегда), с расширением ЛИ. Когда приложение компонуется, компоновщик видит, что некоторые библиотечные процедуры принадлежат к динамическим библиотекам, и записывает эту информацию в заголовок исполняемого файла. Обращения к процедурам динамических библиотек производятся не напрямую, а при помощи вектора передачи в адресном пространстве вызывающего процесса. Изначально этот вектор заполнен нулями, так как адреса вызываемых процедур еще неизвестны. [3]
Программный интерфейс создаваемой динамической библиотеки достаточно прост. [4]
Различные маршруты выполнения вызовов Win32 API. [5] |
В некоторых случаях динамические библиотеки обращаются к другой динамической библиотеке ( ntdll. Этот путь показан на рисунке как шаги 2а и За. Динамическая библиотека может также выполнить всю работу самостоятельно, совсем не обращаясь к системным вызовам. Для других вызовов Win32 API выбирается другой маршрут, а именно: сначала процессу подсистемы Win32 ( csrss. При этом в некоторых случаях подсистема также выполняет всю работу в пространстве пользователя и немедленно возвращает управление. [6]
Различные маршруты выполнения вызовов Win32 API. [7] |
В некоторых случаях динамические библиотеки обращаются к другой динамической библиотеке ( ntdlldll) которая, в свою очередь, обращается к ядру операционной системы. Этот путь показан на рисунке как шаги 2а и За. Динамическая библиотека может также выполнить всю работу самостоятельно, совсем не обращаясь к системным вызовам. Для других вызовов Win32 API выбирается другой маршрут, а именно: сначала процессу подсистемы Win32 ( csrss. При этом в некоторых случаях подсистема также выполняет всю работу в пространстве пользователя и немедленно возвращает управление. [8]
Если сложить размер динамической библиотеки и визуально небольшого исполняемого файла, общий размер получится значительно больше, чем размер файла этой же программы, скомпонованной с run-time - пакетами. [9]
Большим преимуществом создания динамических библиотек является то, что они позволяют сразу нескольким приложениям исгользовать одни и те же классы без распространения дополнительных копий этих классов. [10]
При запуске прикладного процесса все требуемые динамические библиотеки обнаруживаются ( на диске или в памяти) и отображаются на виртуальное адресное пространство процесса. Затем вектор передачи заполняется верными адресами, что позволяет вызывать библиотечные процедуры через этот вектор с незначительной потерей производительности. В операционной системе Windows 2000 динамические библиотеки используются очень активно для всех аспектов системы. [11]
Заключительный этап данного краткого обзора динамических библиотек касается возможности их загрузки в память во время выполнения программы с помощью LoadLibrary. И наоборот, библиотеку можно выгрузить из памяти, вызвав FreeLibrary. [12]
Окно Build Dynamic Runtime Library. [13] |
Исключением из сказанного является то, чю динамические библиотеки не содержат информации ни об одном из используемых ресурсов. [14]
Еще одна распространенная технология заключается в использовании динамических библиотек для хранения лишь ресурсов. [15]