ВУЗ:
Составители:
46
большинство программ использует значительное их количество. Один из воз-
можных способов реализации заключается в статическом связывании каждой
программы, использующей интерфейс Win32, со всеми библиотечными проце-
дурами, которыми она пользуется. При таком подходе каждая двоичная про-
грамма будет содержать копию всех используемых ею процедур в своем испол-
няемом двоичном файле.
Недостаток такого подхода заключается в том, что при этом расходуется
много памяти, если пользователь одновременно откроет несколько программ,
использующих одни и те же библиотечные процедуры. Например, программы
Word, Excel и PowerPoint используют абсолютно одинаковые процедуры для
открытия диалоговых окон, рисования окон, отображения меню, работы с бу-
фером обмена и т. д. Поэтому, если одновременно открыть все эти программы,
при такой реализации программ в памяти будут находиться три (идентичные)
копии каждой библиотечной процедуры.
Чтобы избежать подобной проблемы, все версии Windows поддерживают
динамические библиотеки, называемые DLL (Dynamic-Link Library – динамиче-
ски подсоединяемая библиотека). Каждая динамическая библиотека содержит
набор тесно связанных библиотечных процедур и все их структуры данных в
одном файле, как правило (но не всегда), с расширением .dll. Когда приложение
компонуется, компоновщик видит, что некоторые библиотечные процедуры
принадлежат к динамическим библиотекам, и записывает эту информацию в за-
головок исполняемого файла. Обращения к процедурам динамических библио-
тек производятся не напрямую, а при помощи вектора передачи в адресном
пространстве вызывающего процесса. Изначально этот вектор заполнен нуля-
ми, так как адреса вызываемых процедур еще неизвестны.
При запуске прикладного процесса все требуемые динамические библио-
теки обнаруживаются (на диске или в памяти) и отображаются на виртуальное
адресное пространство процесса. Затем вектор передачи заполняется верными
адресами, что позволяет вызывать библиотечные процедуры через этот вектор с
незначительной потерей производительности. Выигрыш такой схемы заключа-
ется в том, что при запуске нескольких приложений, использующих одну и ту
же динамическую библиотеку, в физической памяти требуется только одна ко-
пия текста DLL (но каждый процесс получает свою собственную копию при-
ватных статических данных в DLL). В операционной системе Windows 2000
динамические библиотеки используются очень активно для всех аспектов
системы.
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »