Пятница, 17.05.2024, 15:07
Главная Регистрация RSS
Приветствую Вас, Гость
Главная » Основы Delphi » DLL в Delphi. Часть 2
15:22

DLL в Delphi. Часть 2

Библиотеки DLL способны использовать свой код совместно с другими приложениями благодаря процессу, называемому динамической компоновкой (dynamic linking), который рассматривается в этой главе далее. Как правило, когда какое-либо приложение использует библиотеку DLL, система Win32 гарантирует, что в памяти будет размещена только одна копия этой библиотеки. Для этого применяется файл, отображенный в память (memory-mapped file). Суть этого метода заключается в том, что библиотека DLL сначала загружается в глобальную распределяемую память (heap) системы Win32, а затем отображается на адресное пространство вызывающего процесса. В системе Win32 каждому процессу выделяется собственное непрерывное 32-разрядное адресное пространство. Поэтому, когда одна и та же библиотека DLL загружается сразу несколькими процессами, каждый из них получает собственный образ (image) данной библиотеки. Следовательно, процессы не используют одновременно один и тот же физический код, данные или ресурсы, как это было в 16-разрядной Windows.

В системе Win32 работа организована так, что библиотека DLL становится как бы реальным кодом, принадлежащим вызывающему процессу. Более подробная информация о работе системы Win32 приведена в рубрики Delphi и механизмы Windows.

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

Категория: Основы Delphi | Просмотров: 1215 | Добавил: PeKpyT | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]