Пожалуйста, не учитывайте системные вызовы из-за вызовов паники() и т. Д., Которые на самом деле предполагают паниковать систему. Меня больше интересуют системные вызовы общего назначения, такие как Socket, чтение, запись и т. Д. Если такие системные вызовы вызывают панику, то это ошибка ядра? Я понимаю, что это ошибка ядра. Если переданные с неправильными аргументами, то системный вызов должен просто прервать, чтобы не паниковать всю систему.Может ли системный вызов вызвать системную панику в Linux?
ответ
Как ни странно, это не на 100% правильное.
Да, вход в системные вызовы не привилегированным пользователем не должен вызывать панику, если в ядре не обнаружена ошибка или неисправность оборудования (например, сломанные чипы RAM).
Однако это не относится к привилегированному пользователю (например, к корню). Рассмотрим системный вызов write (2) при применении к/dev/mem привилегированным пользователем (корень - очевидный пример) - нет ничего, что помешало бы вам перезаписать память ядра с ним.
Unix это так - он дает вам полную длину веревки, чтобы повеситься легко, если это то, что вы хотите сделать :-)
Трудно написать хороший безопасный интерфейс для ядра. Легкий способ - разрешить root и забыть о безопасности, а затем root может привести к сбою системы. – ugoren
Конечно, ядро должно проверить параметры SYSCALL, пользователь разрешений, доступности ресурсов и обрабатывать такие проблемы, как параллелизм, чтобы избежать сбоя любой ценой. Суть в том, что простой пользователь (даже root, в идеале - но, как упоминалось gby, это сложно, так как root может иметь прямой доступ к физическому адресному пространству) должно никогда не должно иметь возможность сбой системы, как бы она ни старалась ,
- 1. Системный вызов Linux Connect
- 2. Системный вызов Linux
- 3. открытый системный вызов - Linux
- 4. fork() системный вызов в linux
- 5. Как я могу вызвать системный вызов Linux/UNIX в golang
- 6. Может ли этот код вызвать панику после GC в Go1.5?
- 7. linux системный вызов getpeername C++
- 8. Linux системный вызов getifaddr C++
- 9. Как осуществляется системный вызов в Linux?
- 10. Поддерживает ли Windows системный вызов?
- 11. Почему поток может вызвать системный вызов блокировки (потоки пользовательского уровня)?
- 12. Почему системный вызов Perl не может вызвать внутреннюю команду Windows?
- 13. Привязать системный вызов к SUSE linux
- 14. NFS mount Системный вызов в linux
- 15. Как отслеживать системный вызов в Linux?
- 16. Golang, вызывающий новый системный вызов в Linux
- 17. Пользовательский системный вызов в Linux Kernel 3.3.4
- 18. Как определить, существует ли системный вызов в Linux программно?
- 19. Перезаписать содержимое файла системный вызов linux
- 20. системный вызов памяти с отображением файлов - linux
- 21. нужно больше понимания в слушать системный вызов Linux
- 22. Пользовательские функции ядра Linux системный вызов обертка
- 23. Linux системный вызов угон недопустимые аргументы
- 24. Прочитайте системный вызов навсегда на Linux
- 25. Системный вызов Linux getname info return EAI_AGAIN
- 26. ли системный вызов C++ всегда заканчивается EOF?
- 27. Системный вызов Linux: пользовательские сообщения управления
- 28. Системный вызов Linux: getaddrinfo return -2
- 29. Системный вызов shmget [Linux] - выделены байты?
- 30. Linux - Есть ли способ вызвать системный вызов (скрипты bash) без разметки нового процесса?
В теории вы правы. Какова ваша фактическая проблема? – Mat
Ваше понимание верно, не удивительно. Паника = ошибка. –
Ну, по крайней мере, это может * вызвать * панику ядра. Но фактическая * причина * может быть различной (нарушенные структуры данных, истощение ресурсов, аппаратный сбой, ошибки программирования, испанский инквизиция) – wildplasser