请不要考虑系统调用,因为调用panic()等,这实际上应该是恐慌系统。我对通用系统调用更感兴趣,例如Socket,读,写等。如果这样的系统调用确实引起恐慌,那么这是一个内核错误吗?我的理解是它应该是一个内核bug。如果通过错误的参数传递,那么系统调用应该只是中止而不是恐慌整个系统。
答案 0 :(得分:3)
奇怪的是,这不是100%正确。
是的,非特权用户对系统调用的输入不应引起恐慌,除非内核中存在错误或硬件故障(例如RAM芯片损坏)。
但是,对于特权用户(例如root),情况并非如此。当一个特权用户(root就是一个明显的例子)应用于/ dev / mem时,请考虑write(2)系统调用 - 没有什么可以阻止你用它覆盖内核内存。
Unix就是这样 - 它可以让你轻松地挂绳子,如果这是你想做的事情: - )
答案 1 :(得分:0)
当然,内核必须检查syscall参数,用户权限,资源可用性以及处理并发等问题,以避免不惜一切代价崩溃。底线是一个简单的用户(即使是根,理想情况下 - 但由于gby提到这很困难,因为root可以直接访问物理地址空间)永远不会能够使系统崩溃,不不管她多么努力。