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