ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Преимущества динамического связывания

Начало тут:
1. динамически подключаемые библиотеки;
2. о динамически подключаемых библиотеках подробнее.

Перевод с английского статьи от 31.05.2018 г. «Advantages of Dynamic Linking»:
https://docs.microsoft.com/ru-ru/windows/win32/dlls/advantages-of-dynamic-linking
(На данный момент на этом сайте нет перевода этой статьи на русский, есть только версия на английском.)

Динамическое связывание имеет следующие преимущества перед статическим связыванием:

  • множество процессов, загрузивших одну и ту же DLL в один и тот же базовый адрес [виртуального адресного пространства каждого из процессов], будет совместно использовать единственную копию DLL в физической памяти. Такой подход экономит [оперативную] память [операционной] системы и уменьшает необходимость в подкачке страниц [swapping];

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

  • DLL может послужить инструментом послепродажной поддержки. Например, DLL драйвера дисплея может быть модернизирована для работы с дисплеем, который не был доступен на момент первоначальной поставки приложения;

  • программы, написанные на разных языках программирования, могут вызывать одну и ту же функцию одной и той же DLL, если эти программы соблюдают то же соглашение о вызове, которое эта функция использует. Соглашение о вызове (такое, как cdecl, pascal или stdcall) определяет порядок, в котором вызывающая функция должна поместить аргументы в стек; определяет, кто несет ответственность за очистку стека: вызываемая функция или вызывающая функция; определяет, передаются ли какие-либо аргументы в регистры [процессора]. Для получения более подробной информации по этому вопросу следует обратиться к документации компилятора.

Потенциальный недостаток использования DLL в том, что приложение, использующее такие библиотеки, не является самодостаточным; оно зависит от наличия отдельного модуля DLL. Система прекращает процессы, использующие динамическое связывание во время запуска программы, если они требуют DLL, которая не найдена в ходе запуска программы, и выдает пользователю сообщение об ошибке. Система не прекращает процесс, использующий динамическое связывание во время выполнения программы в такой же ситуации, но функции, которые должны были быть экспортированы отсутствующей DLL, остаются программе недоступны.
Tags: Английский язык, Образование, Программирование
Subscribe

  • Юмор на ютубе, появление шоу TALK

    У меня в принципе нет в квартире телевизора. Я, в общем-то, не считаю телезрителей быдлом, а телевизор — устройством для промывки мозгов. Просто в…

  • Любимый женский кавер песни «My Way»

    Голландский «Голос» вообще один из моих самых любимых. Удивительно, но почему-то именно эта маленькая страна дала этому шоу очень много понравившихся…

  • «Oh! Darling» против «Imagine»

    Не понимаю, что люди находят в песне «Imagine» Леннона. Ну да, мелодичная. Но по мне слишком спокойная и чересчур сладенькая. Вот «Oh! Darling»…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments