Динамическая компоновка в современных программах позволяет исполняемому файлу вызывать функции или использовать ресурсы, хранящиеся в отдельном файле. learn.microsoft.com Эти функции и ресурсы можно компилировать и развёртывать отдельно от использующих их исполняемых файлов. learn.microsoft.com
Процесс динамической компоновки включает следующие шаги: studfile.net
- Для модуля основной программы компоновщик создаёт таблицу внешних ссылок. studfile.net В ней указывается имя файла для каждого динамически подключаемого модуля и имена тех процедур в модуле, к которым имеются обращения в программе. studfile.net
- При компоновке модуля, предназначенного для динамического подключения, для него создаётся таблица входов. studfile.net
- Загрузчик (на этапе загрузки) или ядро ОС (на этапе выполнения) выполняет установку связей. studfile.net Он находит в памяти или загружает в память динамически подключаемый модуль и по его таблице входов находит требуемую процедуру. studfile.net
- Строка таблицы внешних ссылок модифицируется — теперь она содержит переход по адресу найденной процедуры. studfile.net
- Последующие обращения к этой же входной точке уже не вызывают каких-либо дополнительных действий. studfile.net
Некоторые преимущества динамической компоновки:
- Экономия памяти. learn.microsoft.com acm.bsu.by Если одну и ту же библиотеку использует несколько приложений, в оперативной памяти может храниться только один её экземпляр, доступный этим приложениям. acm.bsu.by
- Экономия места на диске. learn.microsoft.com acm.bsu.by Если нужно обновить код, который вынесен в динамическую библиотеку, то достаточно обновить только библиотеку, и все программы, что её используют, получат новую версию, их не надо пересобирать. acm.bsu.by
- Расширение функциональности приложения. acm.bsu.by Библиотеки можно загружать в адресное пространство процесса динамически, что позволяет приложению, определив, какие действия от него требуются, подгружать нужный код. acm.bsu.by