vDSO - vDSO

редактировать
Механизм ядра Linux

vDSO (виртуальный динамический общий объект ) - это механизм ядра Linux для экспорта тщательно отобранного набора подпрограммы пространства ядра для приложений пространства пользователя, чтобы приложения могли вызывать эти подпрограммы пространства ядра в процессе, без снижения производительности при переключении режима с пользовательский режим от до режима ядра, который присущ при вызове тех же подпрограмм пространства ядра с помощью интерфейса системного вызова.

Виртуальный динамический общий объект

vDSO использует стандартные механизмы для связывания и загрузки, т.е. стандартный формат Executable and Linkable Format (ELF). vDSO - это область памяти, выделенная в пользовательском пространстве, которая предоставляет некоторые функции ядра. vDSO динамически выделяется, обеспечивает повышенную безопасность за счет рандомизации разметки адресного пространства и поддерживает более 4 системных вызовов. Некоторые стандартные библиотеки C, такие как glibc, могут предоставлять ссылки vDSO, поэтому, если ядро ​​не поддерживает vDSO, выполняется традиционный системный вызов . vDSO помогает снизить накладные расходы на вызовы в простых процедурах ядра, а также может работать как способ выбора лучшего метода системного вызова на некоторых компьютерных архитектурах, таких как IA-32. Преимущество перед другими методами состоит в том, что такие экспортированные подпрограммы могут предоставлять правильную отладочную информацию в формате DWARF (отладка с использованием атрибутивного формата записи). Реализация обычно подразумевает перехватчики в динамическом компоновщике для поиска vDSO.

Vsyscall

vDSO был разработан, чтобы предложить функции vsyscall, преодолевая при этом его ограничения: небольшой объем статически выделенной памяти, что позволяет использовать только 4 системные вызовы и одинаковые адреса двоичного интерфейса приложения (ABI) в каждом процессе, что ставит под угрозу безопасность. Эта проблема безопасности была уменьшена за счет эмуляции виртуального системного вызова, но эмуляция приводит к дополнительной задержке.

Ссылки
Последняя правка сделана 2021-06-18 07:35:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте