[發明專利]面向硬件不可恢復內存故障的內核代碼軟容錯方法有效
| 申請號: | 201110341733.8 | 申請日: | 2011-11-03 |
| 公開(公告)號: | CN102508742A | 公開(公告)日: | 2012-06-20 |
| 發明(設計)人: | 秦瑩;劉曉建;戴華東;吳慶波;孔金珠;顏躍進 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F11/14 | 分類號: | G06F11/14 |
| 代理公司: | 湖南兆弘專利事務所 43008 | 代理人: | 趙洪;譚武藝 |
| 地址: | 410073 湖南省長沙市硯瓦池正*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 面向 硬件 不可 恢復 內存 故障 內核 代碼 容錯 方法 | ||
技術領域
本發明涉及操作系統內核代碼運行時的容錯方法,具體涉及一種是通過軟件來緩解硬件不可恢復內存故障對操作系統本身運行穩定性影響的容錯方法。
背景技術
從1946年首臺計算機出現至今,計算機系統一直采用存儲指令的馮.諾依曼結構。在馮.諾依曼結構下,指令作為數據存儲在內存中,處理器從內存中獲取指令并逐條譯碼執行。進入后CMOS時代后,由于芯片中晶體管密度持續增加,芯片老化和放射性引發單粒子翻轉(single?event?updates,SEU)等內存軟故障(soft?error)的情況日益增多,容易導致存儲指令的內存出現故障,極可能引發嚴重的邏輯錯誤,給計算機用戶帶來災難性后果。
為增加計算機系統中內存的可靠性,硬件設計者目前一般采用奇偶校驗、ECC糾錯、Chipkill技術來提高計算機系統對內存單位錯、多位錯的查錯和糾錯能力。但是,由于ECC較驗和Chipkill技術對計算機性能的影響較大并且其技術實現代價昂貴,這些先進的硬件糾容錯技術目前主要應用于高檔服務器系統中;另一方面,即便是采用上述糾錯方法,硬件內存故障仍然是無法完全避免的,目前大量商用計算機系統中硬件內存故障仍然是影響系統可靠運行的主要因素。
計算機系統中內存硬件糾錯機制仍然無法避免的內存故障統稱為“硬件不可恢復內存故障”。硬件不可恢復內存故障對計算機系統產生的影響表現為兩類:一類為同步感知故障(一類故障),即可被同步感知到的機器異常(Exception)。例如,當內存出現奇偶校驗錯誤時,會引發一個不可屏蔽中斷(NMI,Non-Maskable?Interrupt),將一個機器檢測故障(MCE,Machine?Check?Error)報告給操作系統進行處理;另一類是異步感知故障,即異步的硬件不可見故障(二類故障)。例如,在奇偶校驗等硬件糾錯機制無法處理甚至無法感知到的內存故障發生時,由于硬件不具備發現內存故障的能力,因此不會報告異常,但是內存中的數據已經發生了改變,處理器會取得被修改后的指令執行,運行將會持續、直到產生可見的邏輯錯誤:如非法指令或是內存地址訪問異常,此時計算機才會獲得錯誤的提示。這種硬件故障引發的程序錯誤,因和果是異步的,因此隱蔽性很強。?操作系統內核代碼是計算機系統中運行頻度最高的代碼之一,內核代碼出現錯誤將會影響到整個系統的正常運行,由于硬件不可恢復的內存故障的存在,直接對操作系統內核代碼運行產生影響,影響計算機系統的穩定性和可靠性。
發明內容
針對上述現有技術的缺點,本發明要解決的技術問題是提供一種能夠緩解硬件不可恢復內存故障對操作系統帶來的影響,提高操作系統運行的穩定性、增強內核模塊可靠性、降低內存出錯可能性以及對操作系統運行干擾的面向硬件不可恢復內存故障的內核代碼軟容錯方法。
為了解決上述技術問題,本發明采用的技術方案為:一種面向硬件不可恢復內存故障的內核代碼軟容錯方法,其實施步驟如下:
1)在操作系統將內核代碼加載至物理內存時,將所述內核代碼標記為主代碼,為每個所述內核代碼設置多份代碼副本并將代碼副本加載至物理內存中;
2)在操作系統運行時,如果內核代碼所在的內存遇到內存異常則定位當前主代碼的出錯內核頁,將出錯內核頁的代碼與當前主代碼對應的代碼副本進行比較,如果確定為出錯內核頁的代碼發生錯誤,則暫停計算機運行,修改所述出錯內核頁的內核代碼頁表,從當前主代碼對應的代碼副本中選擇一份正常的代碼副本代替當前主代碼,然后繼續運行計算機。
作為本發明上述技術方案的進一步改進:
所述步驟2)中定位當前主代碼的出錯內核頁的具體步驟包括:首先檢測內存異常類型,如果內存異常類型為同步感知故障,則直接根據異常錯誤信息包含的內存硬件地址信息定位出錯內核頁;如果內存異常類型為異步感知故障,則在當前執行棧中通過檢查調用指令進行迭代棧回退定位出錯內核頁。
所述在當前執行棧中通過檢查調用指令進行迭代棧回退定位出錯內核頁的具體步驟包括:
A)將迭代次數清零;
B)檢查當前執行棧,如果當前執行棧中子例程的入口地址包括當前主代碼的內存地址,則將所述內存地址處的主代碼和相應的代碼副本進行特征比較,如果匹配則定位出錯內核頁成功;如果均不匹配則檢查棧歷史中已執行的代碼是否包含I/O指令或者寫指令,如果存在I/O指令或者寫指令則轉入步驟D),如果不存在I/O指令或者寫指令則轉入步驟C);
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110341733.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種提高瓦楞原紙環壓強度的方法
- 下一篇:梳齒式破碎機錘頭





