Понятие DLL-hell. Причины возникновения. Причины отсутствия SO-hell в UNIX-подобных ОС.

DLL (англ. Dynamic-link library) - динамическая библиотека

 

DLL (англ. Dynamic-link library) — понятие операционной системы Microsoft Windows, динамическая библиотека, позволяющая многократное применение различными программными приложениями, понятие операционной системы Microsoft Windows. K DLL относятся также элементы управления ActiveX и драйверы.

 

Формат файлов DLL придерживается тех же соглашений, что и формат исполняемых файлов EXE, сочетая коды, таблицы и ресурсы.

 

Цели введения DLL

 

Первоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только одну инстанцию библиотечных модулей для многих приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти.

 

Далее, предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того библиотеки DLL могли использоваться разнотипными приложениями — например, Microsoft Office, Microsoft Visual Studio и т.п.

 

В дальнейшем идея модульности выросла в концепцию ActiveX-контролей.

 

Фактически полных преимуществ от внедрения DLL получить не удалось по причине явления, называемого DLL hell (DLL-евский кошмар). DLL hell возникает, когда несколько приложений требуют одновременно различных версий DLL-библиотек по причине их неполной совместимости, что приводит к серьёзным конфликтам. Когда система выросла до определённых размеров, количество DLL стало превышать многие тысячи, не все из них обладали полной надёжностью и совместимостью, и конфликты типа DLL hell стали возникать очень часто, резко понижая общую надёжность системы. Поздние версии Microsoft Windows стали разрешать параллельное использование разных версий DLL, что свело на нет преимущества изначального принципа модульности.