Операционная система OS2 Warp

Библиотеки динамической компоновки


При компоновке программы DOS в загрузочный exe-файл добавляется программный код функций, взятых из стандартных библиотек транслятора или из дополнительных библиотек. Этот метод компоновки называется статическим. При его использовании файл программы DOS содержит в себе все, необходимое для работы,€ за исключением кода функций DOS и BIOS, вызываемого с помощью программных прерываний.

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

Поясним это. Пусть, например, пользователь запустил несколько разных программ, каждая из которых вызывает стандартную функцию sprintf. Если программы подготовлены методом статической компоновки, в оперативной памяти окажется несколько экземпляров кода функции sprintf, по одному на каждую программу. Причем каждая программа будет пользоваться только своей копией функции (рис. 1.13).

Рис. 1.13. При статической компоновке в памяти может находиться одновременно несколько копий одной и той же функции

В IBM OS/2, как и в других мультизадачных операционных системах, применяется динамическая компоновка, исключающая дублирование кода функций в описанной выше ситуации.

Для этого группы используемых вместе функций объединяются в файлы с расширением имени .dll , которые называются библиотеками динамической компоновки, динамическими библиотеками или просто dll-библиотеками.

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

Когда запускается первая программа, использующая функцию из dll -библиотеки, вся библиотека загружается в оперативную память. Если теперь пользователь запускает вторую копию этой же программы или другую программу, вызывающую эту же функцию, будет использован код функции, уже загруженный в память в процессе работы первой программы (рис. 1.14).

Рис. 1.14. При использовании динамической компоновки в память загружается только одна копия функции

Так достигается значительная экономия памяти, поэтому библиотеки динамической компоновки очень широко используются в практике программирования для IBM OS/2. Скажем даже больше - ядро IBM OS/2 в основном состоит именно из dll -библиотек, поэтому многие функции ядра доступны программам через механизм динамической компоновки.



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