Системные вызовы в Windows медленнее, чем в Linux?

Мое понимание системных вызовов заключается в том, что в Linux механизм системных вызовов (int 0x80 или что-то еще) задокументировано и гарантированно стабильно для разных версий ядра. Используя эту информацию, системные вызовы реализуются непосредственно в библиотеке CRT, так что когда я звоню, например,printf("a"); это включает в себя один вызов функции в CRT, где системный вызов устанавливается и активируется. Теоретически это может быть улучшено путем статической компиляции CRT (не распространенного в Linux, но возможного), так что даже один вызов функции может быть встроен.

С другой стороны, Windows не документирует и даже не гарантирует согласованность механизма системных вызовов.только способ сделать системный вызов в Windows, это позвонить вntdll.dll (или, может быть, какой-то другой*.dll) что сделано из ЭЛТ, так что естьдва вызовы функций. Если CRT используется статически и функция становится встроенной (немного более распространенной в Windows, чем в Linux), у нас все еще есть один вызов функции вntdll.dll от которого мы не можем избавиться.

Поэтому мне кажется, что теоретически системные вызовы в Windows будут по своей природе медленнее, поскольку они всегда должны выполнять на один вызов функции больше, чем их эквиваленты в Linux. Это понимание (и мое объяснение выше) верно?

Замечания: Я спрашиваю это чисто теоретически. Я понимаю, что при выполнении системного вызова (который, я думаю, всегда включает 2 переключателя контекста - по одному в каждом направлении) стоимость дополнительного вызова функции, вероятно, совершенно незначительна.

Ответы на вопрос(1)

Ваш ответ на вопрос