2013-06-19 5 views
0

Из того, что я понимаю, системные вызовы ядра ОС обычно реализуются с использованием программного прерывания. На x86, есть ли причина, по которой это выбрано с помощью шлюза вызова? Ворота вызова кажутся «встроенными» способами, чтобы сделать именно это: передать управление на более привилегированный уровень. Так есть ли конкретная причина (или причины), что вызовы ворот не используются для ядер x86?Почему системные вызовы реализованы с прерываниями, вместо вызовов?

ответ

2

Современные операционные системы X86 переходят от CALL FAR callgates. С введением SYSENTER/SYSEXIT и SYSCALL/SYSRET был введен новый более быстрый механизм для передачи управления для программ x86. И поскольку большинство других архитектур не поддерживают шлюзы вызовов, их использование было редки еще до этих новых инструкций, поскольку программные прерывания/ловушки были предпочтительнее переносимости.

См. System Calls в OSDev Wiki. Другая причина: Виртуализация, см. this публикация.

Смежные вопросы