вДСО
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2010 г. ) |
vDSO ( виртуальный динамический общий объект ) — это механизм ядра для экспорта тщательно выбранного набора подпрограмм пространства ядра в приложения пользовательского пространства , чтобы приложения могли вызывать эти подпрограммы пространства ядра в процессе, не подвергаясь снижению производительности при переключении режима из пользовательского режима. в режим ядра , который присущ при вызове тех же подпрограмм пространства ядра посредством интерфейса системного вызова . [1] [2]
vDSO использует стандартные механизмы для связывания и загрузки, то есть стандартный формат исполняемых и связываемых файлов (ELF). [3] [4] vDSO — это область памяти, выделенная в пользовательском пространстве, которая предоставляет некоторые функции ядра. vDSO распределяется динамически , обеспечивает повышенную безопасность за счет рандомизации структуры адресного пространства и поддерживает более четырех системных вызовов. Некоторые стандартные библиотеки C , такие как glibc , могут предоставлять ссылки vDSO, поэтому, если ядро не поддерживает vDSO, традиционный системный вызов . выполняется [5] vDSO помогает снизить накладные расходы на вызовы в простых процедурах ядра, а также может служить способом выбора лучшего метода системного вызова на некоторых компьютерных архитектурах, таких как IA-32 . [6] Преимущество перед другими методами заключается в том, что такие экспортированные процедуры могут предоставить правильную отладочную информацию DWARF (отладка с форматом записи с атрибутами). Реализация обычно подразумевает перехваты в динамическом компоновщике для поиска vDSO.
vDSO был разработан, чтобы предложить функции vsyscall, преодолевая при этом его ограничения: небольшой объем статически выделенной памяти, который позволяет использовать только четыре системных вызова, и одинаковые адреса двоичного интерфейса приложения (ABI) в каждом процессе, что ставит под угрозу безопасность. Эта проблема безопасности была устранена за счет эмуляции вызова виртуальной системы , но эмуляция приводит к дополнительной задержке. [5]
Ссылки
[ редактировать ]- ^ Энрико Перла; Массимилиано Олдани (16 декабря 2016 г.). Взлом ядра: понимание, написание и защита от эксплойтов: выявление уязвимостей в архитектуре ядра и принятие контрмер (на немецком языке). Франциск Верлаг. стр. 466–. ISBN 978-3-645-20503-0 .
- ^ «vDSO — обзор виртуального динамического общего объекта ELF» . Канонический. Архивировано из оригинала 4 марта 2016 года . Проверено 10 декабря 2015 г.
- ^ «Создание vDSO: другая курица полковника» . Linuxjournal.com . Проверено 16 февраля 2015 г.
- ^ «О vsyscalls и vDSO» . Lwn.net . Проверено 16 февраля 2015 г.
- ^ Jump up to: а б "Ответ сообщества на вопрос "Что такое vDSO и vsyscall?" " . Проверено 19 ноября 2016 г.
- ^ «Анатомия системного вызова, часть 2» . Lwn.net . Проверено 19 ноября 2018 г.