在linux中,系统调用会导致系统死机吗? 请不要考虑由于调用泛型()等而引起的系统调用,这实际上会引起系统的恐慌。我更感兴趣的是一般用途的系统调用,如读、写等。如果这样的系统调用确实会引起恐慌,那么这是内核错误吗?我的理解是,这应该是一个内核错误。如果使用错误的参数传递,那么系统调用应该只是中止,而不是使整个系统死机。

在linux中,系统调用会导致系统死机吗? 请不要考虑由于调用泛型()等而引起的系统调用,这实际上会引起系统的恐慌。我更感兴趣的是一般用途的系统调用,如读、写等。如果这样的系统调用确实会引起恐慌,那么这是内核错误吗?我的理解是,这应该是一个内核错误。如果使用错误的参数传递,那么系统调用应该只是中止,而不是使整个系统死机。,linux,linux-kernel,kernel,system-calls,Linux,Linux Kernel,Kernel,System Calls,奇怪的是,这不是100%正确的 是的,非特权用户对系统调用的输入不应引起恐慌,除非内核中存在错误或硬件故障(如损坏的RAM芯片) 但是,对于特权用户(如root用户),情况并非如此。考虑写(2)系统调用,当被特权用户应用到/DEV/MEM时(根就是明显的例子)——没有什么能阻止你用它覆盖内核内存。 Unix就是这样-它可以让您轻松上吊,如果您希望这样做的话:-)当然,内核必须检查系统调用参数、用户权限、资源可用性,并处理并发性等问题,以不惜一切代价避免崩溃。底线是,一个简单的用户(理想情况下,即

奇怪的是,这不是100%正确的

是的,非特权用户对系统调用的输入不应引起恐慌,除非内核中存在错误或硬件故障(如损坏的RAM芯片)

但是,对于特权用户(如root用户),情况并非如此。考虑写(2)系统调用,当被特权用户应用到/DEV/MEM时(根就是明显的例子)——没有什么能阻止你用它覆盖内核内存。
Unix就是这样-它可以让您轻松上吊,如果您希望这样做的话:-)

当然,内核必须检查系统调用参数、用户权限、资源可用性,并处理并发性等问题,以不惜一切代价避免崩溃。底线是,一个简单的用户(理想情况下,即使是root用户,但正如gby所提到的,这很困难,因为root用户可以直接访问物理地址空间),无论她如何努力,都不应该使系统崩溃。

理论上你是对的。你的实际问题是什么?你的理解是正确的,这并不奇怪。Panic=bug。至少它可以触发内核恐慌。但实际原因可能不同(数据结构受干扰、资源耗尽、硬件故障、编程错误、西班牙调查局),编写一个良好的安全内核接口相当困难。最简单的方法是只允许root,而忽略安全性,这样root就可以使系统崩溃。