内核错误(Kernel panic)是指操作系统在监测到内部的致命错误,并无法安全处理此错误时采取的动作。
简介内核错误(Kernel panic)是指操作系统在监测到内部的致命错误,并无法安全处理此错误时采取的动作。这个概念主要被限定在Unix以及类Unix系统中;对于MicrosoftWindows系统,等同的概念通常被称为蓝屏死机。
操作系统内核中处理Kernel panic的子程序(在AT&T派生类以及BSD类Unix中,通常为panic())通常被设计用来向控制台输出错误信息,向磁盘保存一份内核内存的转储,以便事后的调试,然后等待系统被手动重新引导,或自动重新引导。该程序提供的技术性信息通常是用来帮助系统管理员或者软件开发者诊断问题的。
操作系统试图读写无效或不允许的内存地址是导致内核错误的一个常见原因。内核错误也有可能在遇到硬件错误或操作系统BUG时发生。在许多情况中,操作系统可以在内存访问违例发生时继续运行。然而,系统处于不稳定状态时,操作系统通常会停止工作以避免造成破坏安全和数据损坏的风险,并提供错误的诊断信息。
内核错误在早期的Unix系统中被引入,显示了在Unix与其前序的Multics在设计哲学上的主要差异之一。1
Mac OS X Mac OS X 10.6的内核错误警告,俗称“五国”。调试信息同时被存储在NVRAM中,并会在重启时写出日志文件。
在Mac OS X v10.6Snow Leopard中,当进入内核错误后,会在画面上出现一个有英语、法语、德语、西班牙语及日语的当机画面,被多数麦金塔电脑用户称为“五国语言当机”,简称“五国”。同时,调试信息被存储在NVRAM中,并会在重启时写出日志文件。
出现这样的问题除了是操作系统上的问题,绝大多数是扩充存储器出现问题,但亦有可能是其他硬件出现问题。此画面亦多发生于黑苹果安装过程中。通常重启即可解决问题,但有时候必须被送去维修才可以解决问题。
在Mac OS X v10.5 Leopard及以前的版本中,死机画面没有西班牙语,只包含英语、法语、德语及日语四种语言,因此被称为“四国语言当机”,简称“四国”,由于使用时间较长,可能是多数用户习惯的名称。
在 OS X v10.8 Mountain Lion及更高版本中,死机画面多了简体中文,会提示:“电脑因出现问题而重新启动。请按一下按键,或等几秒钟以继续启动”2
Linux kernel oops在Linux上,oops即Linux内核的行为不正确,并产生了一份相关的错误日志。许多类型的oops会导致内核错误,即使系统立即停止工作,但部分oops也允许继续操作,作为与稳定性的妥协。这个概念只代表一个简单的错误。
当内核检测到问题时,它会打印一个oops信息然后杀死全部相关进程。oops信息可以帮助Linux内核工程师调试,检测oops出现的条件,并修复导致oops的程序错误。
Linux官方内核文档中提到的oops信息被放在内核源代码Documentation/oops-tracing.txt中。通常klogd是用来将oops信息从内核缓存中提取出来的,然而,在某些系统上,例如最近的Debian发行版中,rsyslogd代替了klogd,因此,缺少klogd进程并不能说明log文件中缺少oops信息的原因。
若系统遇到了oops,一些内部资源可能不再可用。即使系统看起来工作正常,非预期的副作用可能导致活动进程被终止。内核oops常常导致内核错误,若系统试图使用被禁用的资源。1
本词条内容贡献者为:
黎明 - 副教授 - 西南大学