內(nèi)核錯誤(Kernel panic)是指操作系統(tǒng)在監(jiān)測到內(nèi)部的致命錯誤,并無法安全處理此錯誤時采取的動作。
簡介
內(nèi)核錯誤這個概念主要被限定在unix以及類Unix系統(tǒng)中;對于MicrosoftWindows系統(tǒng),等同的概念通常被稱為藍(lán)屏死機。
操作系統(tǒng)內(nèi)核中處理Kernel panic的子程序(在AT&T派生類以及BSD類Unix中,通常為panic())通常被設(shè)計用來向控制臺輸出錯誤信息,向磁盤保存一份內(nèi)核內(nèi)存的轉(zhuǎn)儲,以便事后的調(diào)試,然后等待系統(tǒng)被手動重新引導(dǎo),或自動重新引導(dǎo)。該程序提供的技術(shù)性信息通常是用來幫助系統(tǒng)管理員或者軟件開發(fā)者診斷問題的。
操作系統(tǒng)試圖讀寫無效或不允許的內(nèi)存地址是導(dǎo)致內(nèi)核錯誤的一個常見原因。內(nèi)核錯誤也有可能在遇到硬件錯誤或操作系統(tǒng)BUG時發(fā)生。在許多情況中,操作系統(tǒng)可以在內(nèi)存訪問違例發(fā)生時繼續(xù)運行。然而,系統(tǒng)處于不穩(wěn)定狀態(tài)時,操作系統(tǒng)通常會停止工作以避免造成破壞安全和數(shù)據(jù)損壞的風(fēng)險,并提供錯誤的診斷信息。
內(nèi)核錯誤在早期的unix系統(tǒng)中被引入,顯示了在Unix與其前序的Multics在設(shè)計哲學(xué)上的主要差異之一。
Mac OS X
Mac OS X 10.6的內(nèi)核錯誤警告,俗稱“五國”。調(diào)試信息同時被存儲在NVRAM中,并會在重啟時寫出日志文件。
在Mac OS X v10.6Snow Leopard中,當(dāng)進(jìn)入內(nèi)核錯誤后,會在畫面上出現(xiàn)一個有英語、法語、德語、西班牙語及日語的當(dāng)機畫面,被多數(shù)麥金塔用戶稱為“五國語言當(dāng)機”,簡稱“五國”。同時,調(diào)試信息被存儲在NVRAM中,并會在重啟時寫出日志文件。
出現(xiàn)這樣的問題除了是操作系統(tǒng)上的問題,絕大多數(shù)是擴充存儲器出現(xiàn)問題,但亦有可能是其他硬件出現(xiàn)問題。此畫面亦多發(fā)生于黑蘋果安裝過程中。通常重啟即可解決問題,但有時候必須被送去維修才可以解決問題。
在Mac OS X v10.5 Leopard及以前的版本中,死機畫面沒有西班牙語,只包含英語、法語、德語及日語四種語言,因此被稱為“四國語言當(dāng)機”,簡稱“四國”,由于使用時間較長,可能是多數(shù)用戶習(xí)慣的名稱。
在 OS X v10.8 Mountain Lion及更高版本中,死機畫面多了簡體中文,會提示:“電腦因出現(xiàn)問題而重新啟動。請按一下按鍵,或等幾秒鐘以繼續(xù)啟動”
Linux kernel oops
在Linux上,oops即Linux內(nèi)核的行為不正確,并產(chǎn)生了一份相關(guān)的錯誤日志。許多類型的oops會導(dǎo)致內(nèi)核錯誤,即使系統(tǒng)立即停止工作,但部分oops也允許繼續(xù)操作,作為與穩(wěn)定性的妥協(xié)。這個概念只代表一個簡單的錯誤。
當(dāng)內(nèi)核檢測到問題時,它會打印一個oops信息然后殺死全部相關(guān)進(jìn)程。oops信息可以幫助Linux內(nèi)核工程師調(diào)試,檢測oops出現(xiàn)的條件,并修復(fù)導(dǎo)致oops的程序錯誤。
Linux官方內(nèi)核文檔中提到的oops信息被放在內(nèi)核源代碼Documentation/oops-tracing.txt中。通常klogd是用來將oops信息從內(nèi)核緩存中提取出來的,然而,在某些系統(tǒng)上,例如最近的Debian發(fā)行版中,rsyslogd代替了klogd,因此,缺少klogd進(jìn)程并不能說明log文件中缺少oops信息的原因。
若系統(tǒng)遇到了oops,一些內(nèi)部資源可能不再可用。即使系統(tǒng)看起來工作正常,非預(yù)期的副作用可能導(dǎo)致活動進(jìn)程被終止。內(nèi)核oops常常導(dǎo)致內(nèi)核錯誤,若系統(tǒng)試圖使用被禁用的資源。
參考資料 >