Способы вызова системного вызова в новом ядре

Я прочитал, что в новых ядрах системные вызовы вызываются с помощью инструкции INT X80, а также с помощью команды sysenter. А также команда sysenter дает более быстрый вызов по сравнению с другим методом.

Как я могу проверить, какие вызовы всех системных вызовов вызваны этим методом?

One Solution collect form web for “Способы вызова системного вызова в новом ядре”

Если вы не используете ядро ​​pre-2.6, вы не будете использовать метод int x80 для вызова большинства системных вызовов. Они были заменены в пользу метода systenter/sysexit поскольку ядро ​​2.6 (начато в серии 2.5) для вещей, которые имеют значение.

Обратите внимание: если у вас есть старые двоичные файлы, которые были созданы против старых ядер, они все равно могут использовать метод int x80 – единственное, что вы можете сделать, это пересоздать их (или получить обновленные двоичные файлы).
Запустите ldd your_exe в программе, о которой вы беспокоитесь. Если в нем перечислены linux-gate.so.1 или linux-vdso.so.1 , он использует новые системные вызовы. Если нет, это (скорее всего) с использованием старого метода.
Для статических двоичных файлов это сложнее сказать. Один из способов: objdump your_exe | less objdump your_exe | less и искать обертки системных вызовов ( __gettimeofday – хороший кандидат). Вы увидите разборку, если она использует прерывание или нет.

Хорошее изложение того, как работали старые вызовы INT 80, и как появился новый интерфейс syscall и который можно установить: System calls (by Andries Brouwer).
Еще одно хорошее: Что такое linux-gate.so.1? ,

Обе эти статьи связаны в следующем: механизм системного вызова Sysenter в Linux 2.6 и указывает на понимание книги ядра Linux Дэниела П. Бове, Марко Чезати, которая подходит для более общей информации.

Короче говоря, не беспокойтесь об этом. Если у вас есть достаточно современная система (процессор, ядро ​​и дистрибутив), вы используете «быстрые» системные вызовы.

Linux и Unix - лучшая ОС в мире.