Разница между пользовательским и системным вызовами ядра
Системный вызов - это то, как программа запрашивает сервис у ядра операционной системы.
Они могут происходить в пользовательском режиме и в режиме ядра.
Какие есть отличия?
Например:
- накладные расходы
- Системное время
2 ответа
Системный вызов - это способ перехода между приложением ("режим пользователя") и ядром.
Системные вызовы медленнее, чем обычные вызовы функций, но более новые чипы x86 от Intel и AMD имеют специальные sysenter
/syscall
код операции, чтобы сделать это займет всего сто наносекунд или около того, дать или взять.
@Лео,
Не могли бы вы пояснить, как меняются системные вызовы, когда они выполняются из пространства ядра? Для лучшего понимания ядра Linux, написанного на C и ассемблере
Обратите внимание, что системные вызовы являются просто интерфейсом между пользовательским пространством и пространством ядра. Когда вам нужны некоторые компьютерные ресурсы (файлы, сети, ...), вы просите ядро передать их вам (под капотом вы просите ядро запустить код ядра, который отвечает за него).
Издержки системных вызовов заключаются в том, что вам необходимо выполнить прерывание процессора. Как уже упоминалось, время для этого очень зависит от типа процессора.