美文网首页
什么时候会kernel panic?

什么时候会kernel panic?

作者: 迷死她张 | 来源:发表于2019-03-28 20:20 被阅读0次

什么时候可能出现内核崩溃,kernrl panic呢?

Linux在中断处理程序中,它不处于任何一个进程上下文,如果使用可能睡眠的函数,则系统调度会被破坏,导致kernel panic。因此,在中断处理程序中,是不能使用有可能导致睡眠的函数(例如信号量等)。

在中断发起的软中断中,其上下文环境有可能是中断上下文,同理,也不能调用可能导致睡眠的函数。软中断执行时,全局中断是打开的,而中断程序执行时,全局中断是禁止的。

软中断除了系统调度进入点,当软中断数量频繁时,内核中有一个专门的软中断的后台程序daemon来处理其事务。

还有内核堆栈溢出,或者指针异常访问时,也会出现kernel panic。

堆栈溢出:程序循环或者多层嵌套的深度过多时,可能会导致栈溢出。

显而易见,除0异常、内存访问越界、缓冲区溢出等错误时,当这些事件发生在应用程序时,Linux内核的异常处理机制可以对这些由应用程序引起的情况予以处理。当应用程序出现不可恢复性错误时,Linux内核可以仅仅终止产生错误的应用程序,而不影响其他程序。如果上述操作发生在内核空间,就会引起kernel panic。

还有内核陷入死锁状态,自旋锁嵌套、在内核线程中,存在死循环的操作等等都会引起kermel panic。

相关文章

网友评论

      本文标题:什么时候会kernel panic?

      本文链接:https://www.haomeiwen.com/subject/cqbcbqtx.html