内核 oops 和内核恐慌之间有什么区别?

str*_*gee 58 kernel kernel-panic

我知道什么是内核恐慌,但我也见过“内核 oops”这个词。我一直以为他们是一样的,但也许不是。所以:

什么是内核 oops,它与内核恐慌有何不同?

War*_*ung 48

oops ”是一个严重到足以影响系统可靠性的 Linux 内核问题。

一些“哎呀”已经够糟糕了,内核决定立即停止运行,以免数据丢失或其他损坏。这些被称为内核恐慌

后一个术语是原始的,可以追溯到 Linux 的 Unix 前辈的最早版本,当它们发生时,它们也会在控制台上打印“恐慌”消息。处理此类条件的原始 AT&T Unix 内核函数称为panic(). 你可以通过 AT&T Unix 的公共源代码版本追溯到它的第一个版本:

  • 的OpenSolaris的版本panic()是由Sun发布了2005年。它相当详尽,其标题注释解释了很多关于在恐慌情况下会发生什么的情况。

  • Unix的V4执行的panic()是在1973年发布。它基本上只是将内核到控制台的核心状态,并停止处理器。

  • 根据 Amit Singh 的说法,该功能在 Unix V3 中基本上没有变化,他著名地剖析了旧版本的 Mac OS X 并对其进行了解释。第一个链接将您带到一篇解释 macOS 实现 的方法的可爱文章panic(),该文章从相关的历史讨论开始。

  • 从扫描的源代码打印输出中复活 Unix V1的“ unix-jun72 ”项目显​​示了这个函数的一个非常早期的PDP-11 汇编版本,写于 1972 年 6 月之前的某个时间,在 Unix 完全用 C 重写之前。此时,它的实现是缩减为 6 条指令的例程,除了重新启动 PDP-11 外几乎没有任何作用。


tdk*_*2fe 16

oops 是内核遇到的特定错误。Oops 包含以下信息:

  • 简要描述;简介
  • 哎呀#
  • 它发生在哪个 CPU 上,以及 CPU 正在执行的代码
  • 注册内容

Oops 是一种调试内核代码的方法,有一些实用程序可以帮助解决这个问题。内核崩溃意味着系统无法恢复,必须重新启动。但是,有了 Oops,系统通常可以继续运行。您可以配置 klogd 和 syslogd 将 oops 消息记录到文件中,而不是记录到标准输出中。