内核Oops及其含义解析
1. 内核Oops概述
内核Oops是内核层面的一种异常情况,但它既不同于段错误(segfault),也并非完全等同于内核崩溃(kernel panic)。
1.1 Oops与段错误的区别
Oops可能会作为副作用导致段错误的发生,进而使进程上下文接收到致命的SIGSEGV信号,但这只是一种附带影响,并非必然联系。
1.2 Oops与内核崩溃的区别
内核崩溃意味着系统处于不可用状态,而Oops不一定会导致这种情况。不过,在某些生产系统中,Oops可能会引发内核崩溃。内核提供了一些sysctl可调参数,允许root用户编辑,以决定在何种情况下会触发内核崩溃。例如,在x86_64的Ubuntu 20.04系统上,可通过以下命令查看相关参数:
$ cd /proc/sys/kernel/
$ ls panic_on_*
panic_on_io_nmi panic_on_oops panic_on_rcu_stall panic_on_unrecovered_nmi panic_on_warn
默认情况下,这些参数的值都为0,意味着不会触发内核崩溃。但将 panic_on_oops 设置为1时,任何Oops都会导致内核崩溃。这一设置是否合适取决于项目或产品的性质,对于一些深度嵌入式系统,可能无法承受因内核崩溃而导致的系统停机,通常会使用看门狗来检测系统的不健康状态并进行重启。
1.3 Oops的影响
尽管Oops不一定会
超级会员免费看
订阅专栏 解锁全文

400

被折叠的 条评论
为什么被折叠?



