VDSO - VDSO

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

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

vDSO использует стандартные механизмы для связывание и загрузка т.е. стандартный Исполняемый и связываемый формат (ELF) формат.[3][4] vDSO - это область памяти, выделенная в пользовательском пространстве, которая предоставляет некоторые функции ядра. vDSO - это динамически распределяется, обеспечивает повышенную безопасность благодаря рандомизация разметки адресного пространства, и поддерживает более 4 системных вызовов. Немного Стандартные библиотеки C, подобно glibc, может предоставлять ссылки vDSO, так что если ядро ​​не поддерживает vDSO, традиционный системный вызов сделан.[5] vDSO помогает сократить накладные расходы на вызовы в простых процедурах ядра, а также может работать как способ выбора лучшего метода системного вызова для некоторых компьютерные архитектуры Такие как IA-32.[6] Преимущество перед другими методами заключается в том, что такие экспортированные подпрограммы могут обеспечить надлежащую DWARF (Отладка с форматом атрибутированной записи) отладочная информация. Реализация обычно подразумевает перехватчики в динамическом компоновщике для поиска vDSO.

Vsyscall

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

Рекомендации

  1. ^ Энрико Перла; Массимилиано Олдани (16 декабря 2016 г.). Взлом ядра: использует verstehen, schreiben und abwehren: Schwachstellen в Kernel-Architekturen erkennen und Gegenmaßnahmen ergreifen (на немецком). Францис Верлаг. С. 466–. ISBN  978-3-645-20503-0.
  2. ^ "vDSO - обзор динамического общего виртуального объекта ELF". Канонический. Получено 10 декабря 2015.
  3. ^ "Создание vDSO: Другой цыпленок полковника". Linuxjournal.com. Получено 16 февраля 2015.
  4. ^ "О vsyscalls и vDSO". Lwn.net. Получено 16 февраля 2015.
  5. ^ а б «Ответ сообщества на вопрос» Что такое vDSO и vsyscall?"". Получено 19 ноября 2016.
  6. ^ «Анатомия системного вызова, часть 2». Lwn.net. Получено 19 ноября 2018.