Литературная библиотека
- 1 year ago
- 0
- 0
Разделяемая библиотека или общая библиотека — это файл, который предназначен для совместного использования программами . Модули, используемые программой, загружаются из отдельных общих объектов в память, а не копируется компоновщиком , когда он копирует один исполняемый файл для программы.
Совместно используемые библиотеки могут быть статически связаны, что означает, что ссылки на библиотечные модули разрешаются, и модулям выделяется память при создании исполняемого файла. Но часто связывание разделяемых библиотек откладывается до их загрузки.
Некоторые старые системы, например, , Multics , также имеют только один формат для исполняемых файлов, независимо от того, являются ли они общими. Они имеют файлы общей библиотеки того же формата, что и исполняемые файлы. Это даёт два основных преимущества: во-первых, для каждого из них требуется только один загрузчик, а не два (наличие отдельного загрузчика приносит дополнительную сложность). Во-вторых, он также позволяет использовать исполняемые файлы в качестве разделяемых библиотек, если у них есть таблица символов . Типичные форматы комбинированных исполняемых и совместно используемых библиотек: ELF и Mach-O (оба в Unix) и PE (Windows).
В некоторых более старых средах, таких как 16-битная Windows или для HP 3000 , в коде с общей библиотекой допускались только данные на основе стека (локальные), или другие существенные ограничения были наложены на код разделяемой библиотеки.
Код библиотеки может совместно быть в памяти вместе c процессами , а также на диске. Если используется виртуальная память, процессы будут выполнятся в физической странице ОЗУ, которая отображается в разные адресные пространства процессов. Это имеет свои преимущества. Например, в системе OpenStep приложения часто имеют размер всего несколько сотен килобайт и быстро загружаются; большая часть их кода находилась в библиотеках, которые уже были загружены операционной системой для других целей.
Программы могут осуществлять совместное использование ОЗУ с помощью независимого кода , как в Unix , что приводит к сложной, но гибкой архитектуре. Это гарантирует, что с помощью различных приёмов, таких как предварительное отображение адресного пространства и резервирование страниц для каждой разделяемой библиотеки, имеет большую вероятность совместного использования. Третьим вариантом является , используемое и его преемниками.
В некоторых случаях разные версии разделяемых библиотек могут вызывать проблемы, особенно когда библиотеки разных версий имеют одинаковые имена файлов, и используется для разных приложений, установленных в системе, для каждой требуется определённая версия. Такой сценарий известен как DLL hell , названный в честь Windows и OS/2 DLL . Большинство современных операционных систем после 2001 года имеют методы очистки для устранения таких ситуаций или использования «частных» библиотек для конкретных приложений.
Для улучшения этой статьи
желательно
:
|