Потому что большинству системных вызовов присущи накладные расходы.Системный вызов - это средство подключения к ядру, контролируемому шлюзу для получения некоторой услуги.
При выполнении системного вызова предпринимаются некоторые действия (предупреждение, это упрощение):
- Вы вызываете библиотечную (упаковочную) функцию
- Функция помещает аргументы туда, где они ожидаются.Также функция помещает номер системного вызова в
eax
- Функция вызывает ловушку (
int 0x80
или что-то еще) - Процессор переключается в режим ядра
- Ядро вызывает некоторую
system_call
подпрограмму - Регистры сохраняются в стеке ядра
- Аргументы проверяются на правильность
- Действие выполняется
- Регистры восстанавливаются из стека ядра
- Процессор возвращается в режим пользователя
- Функция (наконец-то ...) возвращает
И я, наверное, забыл некоторые шаги.Разве это не похоже на много работы ?Все, что вы хотели, это смелая часть.Остальные накладные расходы.