Из того, что я понимаю, системные вызовы ядра ОС обычно реализуются с использованием программного прерывания. На x86, есть ли причина, по которой это выбрано с помощью шлюза вызова? Ворота вызова кажутся «встроенными» способами, чтобы сделать именно это: передать управление на более привилегированный уровень. Так есть ли конкретная причина (или причины), что вызовы ворот не используются для ядер x86?Почему системные вызовы реализованы с прерываниями, вместо вызовов?
0
A
ответ
2
Современные операционные системы X86 переходят от CALL FAR callgates. С введением SYSENTER/SYSEXIT и SYSCALL/SYSRET был введен новый более быстрый механизм для передачи управления для программ x86. И поскольку большинство других архитектур не поддерживают шлюзы вызовов, их использование было редки еще до этих новых инструкций, поскольку программные прерывания/ловушки были предпочтительнее переносимости.
См. System Calls в OSDev Wiki. Другая причина: Виртуализация, см. this публикация.
Смежные вопросы
- 1. Как системные вызовы epoll(), мьютекс и семафор реализованы за сценой?
- 2. Почему системные вызовы возвращают EFAULT вместо отправки segfault?
- 3. Системные вызовы, управляющие каталогами
- 4. Системные вызовы с c
- 5. Почему не регистрируются все мои системные вызовы?
- 6. Сборочные и системные вызовы
- 7. Системные вызовы и системные программы
- 8. windbg log системные вызовы
- 9. VS2008 JIT отладочный стек вызовов показывает только системные вызовы
- 10. Как использовать системные вызовы C++
- 11. Системные вызовы, сделанные KVM
- 12. Системные вызовы от php
- 13. Системные вызовы Windows-программ
- 14. Системные вызовы в Windows
- 15. Системные вызовы C++ «SED»
- 16. Системные вызовы труб
- 17. Системные вызовы завершаются
- 18. Системные вызовы в Perl
- 19. Системные вызовы в Unix
- 20. Системные вызовы Catching Mach с использованием dtruss
- 21. Системные вызовы в windows & Native API?
- 22. Параллельные системные вызовы в Linux
- 23. Системные вызовы с системными вызовами C/C++
- 24. Какие системные вызовы POSIX могут блокировать процесс?
- 25. Почему я не могу отследить системные вызовы, сделанные `/ bin/echo`?
- 26. Как запретить системные вызовы, GNU/Linux
- 27. Все системные вызовы требуют SSDT в Windows?
- 28. Какие системные вызовы не прерываются сигналом?
- 29. C Системные вызовы и сообщения
- 30. Дескрипторы файлов и системные вызовы