В более старых версиях архитектуры Linux системные вызовы всегда генерировали прерывания во время их выполнения. Они будут выполнены путем установки номера системного вызова в% eax и параметров в% ebx,% ecx и т.д. С последующим выдачей определенного прерывания int 0x80. Таким образом, можно сказать, что системные вызовы являются частой причиной программных прерываний в системе.

Однако в современных архитектурах x86_64 существует специальная инструкция системного вызова "syscall", которая обходит необходимость использовать прерывание 0x80 и, следовательно, таблицу дескрипторов прерываний вообще. Хотя я считаю, что предыдущий метод генерации прерывания для syscall по-прежнему поддерживается, инструкция syscall, похоже, такова, как это делается на практике.

Таким образом, мой вопрос: не правильно ли говорить, что системные вызовы генерируют прерывания? Будет ли системный вызов по-прежнему увеличивать число, указанное в столбце "прерывания", например, в vmstat?

0