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

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

我知道什么是内核恐慌,但我也见过术语“kernel oops”。我一直以为它们是一样的,但也许不是。所以:

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

答案1

一个 ”哎呀“是一个严重到可能影响系统可靠性的 Linux 内核问题。

有些“oops”非常严重,以至于内核决定立即停止运行,以免发生数据丢失或其他损坏。这些被称为内核恐慌

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

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

  • Unix V4的实现panic()于 1973 年发布。它基本上只是将内核的核心状态打印到控制台并停止处理器。

  • 该函数是Unix V3 中基本没有变化阿米特·辛格 (Amit Singh) 表示著名地剖析了旧版本的 Mac OS X 并对其进行了解释。第一个链接将带您阅读一篇精彩的文章,解释 macOS 的实现方法panic(),该文章以相关的历史讨论开始。

  • 这 ”Unix-jun72“从扫描的源代码打印输出中复活 Unix V1 的项目表明了一个非常早的PDP-11组装版这个函数的代码是在 1972 年 6 月之前编写的,当时 Unix 还没有用 C 语言完全重写。此时,它的实现被缩减为 6 条指令的例程,其作用只不过是重新启动 PDP-11。

答案2

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

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

Oops 是一种调试内核代码的方法,并且有一些实用程序可以提供帮助。内核恐慌意味着系统无法恢复,必须重新启动。不过,只要发出“哎呀”一声,系统通常就可以继续运行。您可以配置 klogd 和 syslogd 将 oops 消息记录到文件中,而不是记录到标准输出中。

相关内容