Разница между пользовательским и системным вызовами ядра

Системный вызов - это то, как программа запрашивает сервис у ядра операционной системы.

Они могут происходить в пользовательском режиме и в режиме ядра.

Какие есть отличия?

Например:

  • накладные расходы
  • Системное время

2 ответа

Системный вызов - это способ перехода между приложением ("режим пользователя") и ядром.

Системные вызовы медленнее, чем обычные вызовы функций, но более новые чипы x86 от Intel и AMD имеют специальные sysenter/syscall код операции, чтобы сделать это займет всего сто наносекунд или около того, дать или взять.

@Лео,

Не могли бы вы пояснить, как меняются системные вызовы, когда они выполняются из пространства ядра? Для лучшего понимания ядра Linux, написанного на C и ассемблере

Обратите внимание, что системные вызовы являются просто интерфейсом между пользовательским пространством и пространством ядра. Когда вам нужны некоторые компьютерные ресурсы (файлы, сети, ...), вы просите ядро ​​передать их вам (под капотом вы просите ядро ​​запустить код ядра, который отвечает за него).

Издержки системных вызовов заключаются в том, что вам необходимо выполнить прерывание процессора. Как уже упоминалось, время для этого очень зависит от типа процессора.

Другие вопросы по тегам