2012-05-17 2 views
1

Пожалуйста, не учитывайте системные вызовы из-за вызовов паники() и т. Д., Которые на самом деле предполагают паниковать систему. Меня больше интересуют системные вызовы общего назначения, такие как Socket, чтение, запись и т. Д. Если такие системные вызовы вызывают панику, то это ошибка ядра? Я понимаю, что это ошибка ядра. Если переданные с неправильными аргументами, то системный вызов должен просто прервать, чтобы не паниковать всю систему.Может ли системный вызов вызвать системную панику в Linux?

+0

В теории вы правы. Какова ваша фактическая проблема? – Mat

+0

Ваше понимание верно, не удивительно. Паника = ошибка. –

+0

Ну, по крайней мере, это может * вызвать * панику ядра. Но фактическая * причина * может быть различной (нарушенные структуры данных, истощение ресурсов, аппаратный сбой, ошибки программирования, испанский инквизиция) – wildplasser

ответ

3

Как ни странно, это не на 100% правильное.

Да, вход в системные вызовы не привилегированным пользователем не должен вызывать панику, если в ядре не обнаружена ошибка или неисправность оборудования (например, сломанные чипы RAM).

Однако это не относится к привилегированному пользователю (например, к корню). Рассмотрим системный вызов write (2) при применении к/dev/mem привилегированным пользователем (корень - очевидный пример) - нет ничего, что помешало бы вам перезаписать память ядра с ним.

Unix это так - он дает вам полную длину веревки, чтобы повеситься легко, если это то, что вы хотите сделать :-)

+0

Трудно написать хороший безопасный интерфейс для ядра. Легкий способ - разрешить root и забыть о безопасности, а затем root может привести к сбою системы. – ugoren

0

Конечно, ядро ​​должно проверить параметры SYSCALL, пользователь разрешений, доступности ресурсов и обрабатывать такие проблемы, как параллелизм, чтобы избежать сбоя любой ценой. Суть в том, что простой пользователь (даже root, в идеале - но, как упоминалось gby, это сложно, так как root может иметь прямой доступ к физическому адресному пространству) должно никогда не должно иметь возможность сбой системы, как бы она ни старалась ,

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