一種內(nèi)存多位錯誤的處理方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種內(nèi)存多位錯誤的處理方法及裝置,涉及計算機(jī)【技術(shù)領(lǐng)域】。為了解決現(xiàn)有技術(shù)中存在的當(dāng)內(nèi)存出現(xiàn)多bit錯誤時,計算機(jī)系統(tǒng)復(fù)位,計算機(jī)系統(tǒng)容錯性差的問題而發(fā)明。其中,該方法包括:在計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個進(jìn)程的物理地址,該文件信息用于指示進(jìn)程的物理地址以及進(jìn)程的源數(shù)據(jù)所在的物理地址;若進(jìn)程的物理地址包括發(fā)生錯誤的多位中的至少一位,則將該進(jìn)程確定為目標(biāo)進(jìn)程;獲取每個目標(biāo)進(jìn)程所使用的源數(shù)據(jù),該源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù);若源數(shù)據(jù)未被修改,則根據(jù)獲取的源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。本發(fā)明應(yīng)用于計算機(jī)系統(tǒng)中內(nèi)存錯誤處理的過程中。
【專利說明】一種內(nèi)存多位錯誤的處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種內(nèi)存多位錯誤的處理方法及裝置。
【背景技術(shù)】
[0002]隨著計算機(jī)技術(shù)的發(fā)展,計算機(jī)的應(yīng)用越來越廣泛,同時對計算機(jī)系統(tǒng)的容錯性要求越來越高。其中,容錯性是指在故障存在的情況下計算機(jī)系統(tǒng)不失效,仍然能夠正常工作的特性。目前,計算機(jī)系統(tǒng)中,單個內(nèi)存存在的故障主要包括單位(bit)錯誤和多bit錯誤兩種。
[0003]目前,上述內(nèi)存故障的處理流程如圖1所示,該方法包括:
[0004]SlOl:內(nèi)存控制器檢測到內(nèi)存故障。
[0005]S102:內(nèi)存控制器上報不可屏蔽中斷(Non-Maskable Interrupt,簡稱NMI)或者是系統(tǒng)管理中斷(System Manager Interrupt,簡稱 SMI)。
[0006]S103:操作系統(tǒng)(Operating System,簡稱OS)或者基本輸入輸出系統(tǒng)(BasicInput Output System,簡稱B1S)接收到中斷后記錄發(fā)生錯誤的通道和地址、判斷是單bit錯誤還是多bit錯誤。如果該內(nèi)存故障為單bit錯誤,則執(zhí)行步驟S1041 ;如果該內(nèi)存故障為多bit錯誤,則執(zhí)行步驟S1042。
[0007]S1041:退出中斷流程。
[0008]S1042:復(fù)位計算機(jī)系統(tǒng)。
[0009]由于當(dāng)計算機(jī)系統(tǒng)出現(xiàn)多bit錯誤時系統(tǒng)復(fù)位,因此正常運行的進(jìn)程會與出現(xiàn)錯誤的進(jìn)程一同被掛起,導(dǎo)致正常運行的進(jìn)程無法執(zhí)行,影響系統(tǒng)容錯性。綜上,當(dāng)內(nèi)存出現(xiàn)多bit錯誤時,計算機(jī)系統(tǒng)復(fù)位,進(jìn)而計算機(jī)系統(tǒng)的容錯性差。
【發(fā)明內(nèi)容】
[0010]本發(fā)明實施例提供一種內(nèi)存多位錯誤的處理方法及裝置,為了解決現(xiàn)有技術(shù)中存在的當(dāng)內(nèi)存出現(xiàn)多bit錯誤時,計算機(jī)系統(tǒng)復(fù)位,計算機(jī)系統(tǒng)容錯性差的問題。
[0011]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0012]第一方面,本發(fā)明提供了一種內(nèi)存多位錯誤的處理方法,該方法應(yīng)用于計算機(jī)系統(tǒng)中,該方法包括:
[0013]在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址;
[0014]若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程;
[0015]獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù);
[0016]若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0017]結(jié)合第一方面,在第一方面的第一種實現(xiàn)方式中,所述獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),包括:
[0018]根據(jù)所述目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址;
[0019]獲取所述物理地址中存儲的所述源數(shù)據(jù)。
[0020]結(jié)合第一方面或者第一方面的第一種實現(xiàn)方式,在第一方面的第二種實現(xiàn)方式中,所述若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程之后,所述獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù)之前,所述方法還包括:
[0021]掛起所述目標(biāo)進(jìn)程;
[0022]所述若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程,包括:
[0023]若所述源數(shù)據(jù)未被修改,則將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程;所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
[0024]結(jié)合第一方面的第二種實現(xiàn)方式,在第一方面的第三種實現(xiàn)方式中,
[0025]所述方法還包括:
[0026]若所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改,則復(fù)位計算機(jī)系統(tǒng)。
[0027]結(jié)合第一方面的第三種實現(xiàn)方式,在第一方面的第四種實現(xiàn)方式中,
[0028]所述內(nèi)存包括操作系統(tǒng)OS管理區(qū)、非OS管理區(qū)以及內(nèi)核代碼區(qū);
[0029]所述方法包括:
[0030]若發(fā)生錯誤的多位所在的區(qū)域為所述OS管理區(qū)或非OS管理區(qū),則執(zhí)行所述步驟在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址以及后續(xù)步驟;
[0031]若發(fā)生錯誤的多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行,則復(fù)位所述計算機(jī)系統(tǒng)。
[0032]第二方面,本發(fā)明還提供了一種內(nèi)存多位錯誤的處理裝置,所述裝置應(yīng)用于計算機(jī)系統(tǒng)中,所述內(nèi)存包括操作系統(tǒng)OS管理區(qū)和非OS管理區(qū),所述裝置包括:
[0033]查找單元,用于在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址;
[0034]處理單元,用于當(dāng)所述查找單元查找到的所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位時,將所述進(jìn)程確定為目標(biāo)進(jìn)程;
[0035]獲取單元,用于獲取每個所述處理單元確定的所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù);
[0036]執(zhí)行單元,用于當(dāng)所述獲取單元獲取的所述源數(shù)據(jù)未被修改時,根據(jù)所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0037]結(jié)合第二方面,在第二方面的第一種實現(xiàn)方式中,所述獲取單元包括查找模塊和獲取模塊,其中,
[0038]所述查找模塊,用于根據(jù)所述目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址;
[0039]所述獲取模塊,用于獲取所述物理地址中存儲的所述源數(shù)據(jù)。
[0040]結(jié)合第二方面或者第二方面的第一種實現(xiàn)方式,在第二方面的第二種實現(xiàn)方式中,
[0041]所述處理單元,還用于掛起所述目標(biāo)進(jìn)程;
[0042]所述執(zhí)行單元,還用于當(dāng)所述源數(shù)據(jù)未被修改時,將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程;所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
[0043]結(jié)合第二方面的第二種實現(xiàn)方式,在第二方面的第三種實現(xiàn)方式中,
[0044]所述處理單元,還用于當(dāng)所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改時,復(fù)位計算機(jī)系統(tǒng)。
[0045]結(jié)合第二方面的第三種實現(xiàn)方式,在第二方面的第四種實現(xiàn)方式中,
[0046]所述處理單元,還用于當(dāng)發(fā)生錯誤的所述多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行時,復(fù)位計算機(jī)系統(tǒng)。
[0047]本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理方法及裝置,當(dāng)發(fā)生的內(nèi)存錯誤為多位錯誤時,輪詢計算機(jī)系統(tǒng)中當(dāng)前運行的每一個進(jìn)程的物理地址,當(dāng)進(jìn)程的物理地址包含發(fā)生錯誤的多位中的至少一位時,獲取執(zhí)行該進(jìn)程所需的初始數(shù)據(jù),并且當(dāng)該初始數(shù)據(jù)未被修改時,根據(jù)該初始數(shù)據(jù)執(zhí)行該進(jìn)程。與現(xiàn)有技術(shù)中,當(dāng)計算機(jī)系統(tǒng)出現(xiàn)多位錯誤時,系統(tǒng)復(fù)位相比,本發(fā)明能夠重新執(zhí)行所有使用了發(fā)生錯誤的多位中的任一位,且其源數(shù)據(jù)未被修改的進(jìn)程,避免系統(tǒng)復(fù)位,因而能夠提高系統(tǒng)的容錯性。
【專利附圖】
【附圖說明】
[0048]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0049]圖1為現(xiàn)有技術(shù)中存在的內(nèi)存故障的處理流程圖;
[0050]圖2為本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理方法的流程圖;
[0051]圖3為本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理裝置的結(jié)構(gòu)示意圖;
[0052]圖4為本發(fā)明實施例提供的又一種內(nèi)存多位錯誤的處理裝置的結(jié)構(gòu)示意圖;
[0053]圖5為本發(fā)明實施例提供的再一種內(nèi)存多位錯誤的處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0054]下面將結(jié)合本實施例中的附圖,對本實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0055]為了解決現(xiàn)有技術(shù)中存在的當(dāng)內(nèi)存出現(xiàn)多bit錯誤時,計算機(jī)系統(tǒng)復(fù)位,計算機(jī)系統(tǒng)容錯性差的問題,本實施例提供了一種內(nèi)存多位錯誤的處理方法,該方法應(yīng)用于計算機(jī)系統(tǒng)中,具體的說,本方法應(yīng)用于計算機(jī)系統(tǒng)中,更具體的說,本方法主要應(yīng)用在Linux系統(tǒng)中。
[0056]本實施例提供的處理方法如圖2所示,該方法包括:
[0057]S201:在計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址。
[0058]當(dāng)發(fā)生的錯誤為內(nèi)存多位錯誤時,本實施例通過查詢進(jìn)程鏈表,輪詢當(dāng)前計算機(jī)系統(tǒng)中的每一個進(jìn)程,根據(jù)每一個進(jìn)程所包含的文件信息,查找每一個進(jìn)程的物理地址。一般而言,一個進(jìn)程對應(yīng)有多個file成員變量,也即上文提到的文件信息,每個file又對應(yīng)有多個f_mapping結(jié)構(gòu),每個f_mapping結(jié)構(gòu)包含指向有該進(jìn)程的物理地址的指針信息。因而該查找每一個進(jìn)程的物理地址過程具體包括:查找每一個進(jìn)程所包含的file成員變量,通過file成員變量中的f_mapping結(jié)構(gòu),查找每一個進(jìn)程的物理地址。
[0059]S202:若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程。
[0060]將每一個進(jìn)程的物理地址與發(fā)生錯誤的多位的每一位的物理地址進(jìn)行比較,當(dāng)某一進(jìn)程的物理地址包括發(fā)生錯誤的多位的至少一位的物理地址時,則表明該進(jìn)程所使用的內(nèi)存出現(xiàn)了內(nèi)存錯誤,因而將該進(jìn)程確定為目標(biāo)進(jìn)程,該目標(biāo)進(jìn)程為在不復(fù)位計算機(jī)系統(tǒng)的前提下,可能需要重新執(zhí)行的進(jìn)程。
[0061]由于計算機(jī)系統(tǒng)中當(dāng)前運行的進(jìn)程既包括系統(tǒng)進(jìn)程也包括用戶進(jìn)程,且當(dāng)前運行的進(jìn)程的數(shù)量較多,因而使用了發(fā)生錯誤的位的目標(biāo)進(jìn)程的數(shù)量可能為多個,既可能為系統(tǒng)進(jìn)程也可能為用戶進(jìn)程。本實施例中下述步驟S203為獲取每一個目標(biāo)進(jìn)程的源數(shù)據(jù)的過程。
[0062]此外,在上述比較的過程中,除了需要查找每個進(jìn)程的物理地址外,還需要確定發(fā)生錯誤的多位的每一位的物理地址以進(jìn)行比較。本實施例中可通過內(nèi)存錯誤檢查和糾正(Error Checking and Correcting,ECC)算法判斷是否發(fā)生多bit錯誤,該技術(shù)與現(xiàn)有的ECC算法相同,具體實現(xiàn)方式可參照現(xiàn)有的ECC算法;此外,當(dāng)檢測到多bit錯誤時,還需要獲取相應(yīng)的多bit錯誤的物理地址,該判斷并獲取發(fā)生錯誤的多位的物理地址的過程可在檢測到內(nèi)存多bit錯誤時一并進(jìn)行,該過程也可參考現(xiàn)有技術(shù),本實施例中不做贅述。
[0063]S203:獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù)。
[0064]由于重啟某一進(jìn)程的過程中,需要使用該進(jìn)程對應(yīng)的源數(shù)據(jù),根據(jù)上文所述,每一個進(jìn)程的文件信息除了用于指示所述進(jìn)程的物理地址,還用于指示所述進(jìn)程的源數(shù)據(jù)所在的物理地址。因而在上述步驟確定了目標(biāo)進(jìn)程之后,本步驟為根據(jù)每個進(jìn)程對應(yīng)的文件信息獲取每個目標(biāo)進(jìn)程對應(yīng)的源數(shù)據(jù)的過程。
[0065]具體的,該過程包括:
[0066]I)查找目標(biāo)進(jìn)程使用的文件列表。
[0067]2)通過文件列表查找到文件的目錄項(dentry)。
[0068]3)通過dentry中的d_inode找到文件的索引節(jié)點(inode)。其中,該d_inode指向相應(yīng)的inode結(jié)構(gòu),inode里面包含文件所在的物理地址。
[0069]4)通過所述inode里面的物理地址,查找到目標(biāo)進(jìn)程的源文件。
[0070]所查找到的目標(biāo)進(jìn)程的源文件即為該目標(biāo)進(jìn)程的源數(shù)據(jù)。
[0071]S204:若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0072]在步驟S203中獲取了執(zhí)行目標(biāo)進(jìn)程所需的源數(shù)據(jù)后,本實施例便可通過執(zhí)行目標(biāo)進(jìn)程來重啟目標(biāo)進(jìn)程,進(jìn)而避免系統(tǒng)復(fù)位。
[0073]在Linux系統(tǒng)中,由于硬盤的讀寫速度遠(yuǎn)遠(yuǎn)低于內(nèi)存的讀寫速度,因而為了提高讀寫速度,系統(tǒng)把讀寫比較頻繁的數(shù)據(jù)先放到內(nèi)存中,該過程即為高速緩存的過程。Linux系統(tǒng)中,高速緩存的單位為頁,當(dāng)進(jìn)程修改了高速緩存里的數(shù)據(jù)時,該頁就被內(nèi)核標(biāo)記為臟頁,內(nèi)核將會在合適的時間把臟頁的數(shù)據(jù)寫到磁盤中去,以保持高速緩存中的數(shù)據(jù)和磁盤中的數(shù)據(jù)的一致性。
[0074]為了實現(xiàn)在出現(xiàn)內(nèi)存錯誤時,通過重啟進(jìn)程而保證系統(tǒng)不復(fù)位,本實施例采用的方法是通過獲取目標(biāo)進(jìn)程的源數(shù)據(jù),進(jìn)而根據(jù)該源數(shù)據(jù)執(zhí)行該目標(biāo)進(jìn)程。因而,本方法的應(yīng)用前提是,該目標(biāo)進(jìn)程所使用的源數(shù)據(jù)未被修改。則在獲取了目標(biāo)進(jìn)程的源數(shù)據(jù)后,本實施例仍然需要判斷該源數(shù)據(jù)是否被修改,也即發(fā)生錯誤的多位中,每一位所在的頁是否為臟頁。
[0075]本實施例中,判斷發(fā)生錯誤的多位所在的頁是否為臟頁的過程如下:
[0076]通過查看發(fā)生錯誤的多位的每一位所在的頁的標(biāo)志位,當(dāng)其標(biāo)志位為I時,表明該頁為臟頁,也即源數(shù)據(jù)被修改;當(dāng)其標(biāo)志位為O時,表明該頁為非臟頁,也即源數(shù)據(jù)未被修改。
[0077]當(dāng)使用發(fā)生錯誤內(nèi)存進(jìn)程的源數(shù)據(jù)未被修改時,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0078]本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理方法,當(dāng)發(fā)生的內(nèi)存錯誤為多位錯誤時,輪詢計算機(jī)系統(tǒng)中當(dāng)前運行的每一個進(jìn)程的物理地址,當(dāng)進(jìn)程的物理地址包含發(fā)生錯誤的多位中的至少一位時,獲取執(zhí)行該進(jìn)程所需的初始數(shù)據(jù),并且當(dāng)該初始數(shù)據(jù)未被修改時,根據(jù)該初始數(shù)據(jù)執(zhí)行該進(jìn)程。與現(xiàn)有技術(shù)中,當(dāng)計算機(jī)系統(tǒng)出現(xiàn)多位錯誤時,系統(tǒng)復(fù)位相比,本發(fā)明能夠重新執(zhí)行所有使用了發(fā)生錯誤的多位中的任一位,且其源數(shù)據(jù)未被修改的進(jìn)程,避免系統(tǒng)復(fù)位,因而能夠提高系統(tǒng)的容錯性。
[0079]進(jìn)一步的,作為圖2所示方法的補(bǔ)充,上述步驟S202若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程之后,步驟S203獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù)之前,本方法還包括:
[0080]掛起所述目標(biāo)進(jìn)程。
[0081]由于目標(biāo)進(jìn)程的物理地址包括發(fā)生錯誤的位,因而該目標(biāo)進(jìn)程無法正常運行,進(jìn)而為了節(jié)約系統(tǒng)資源,當(dāng)確定目標(biāo)進(jìn)程后,需要掛起目標(biāo)進(jìn)程。所指的掛起進(jìn)程為在資源不足的情況下,操作系統(tǒng)將在內(nèi)存中部分進(jìn)程暫時調(diào)離出內(nèi)存,當(dāng)條件允許的時候,會被操作系統(tǒng)再次調(diào)回內(nèi)存,重新進(jìn)入等待被執(zhí)行的狀態(tài)即就緒狀態(tài)。
[0082]相應(yīng)的,步驟S204若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程,包括:
[0083]若源數(shù)據(jù)未被修改,則將源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程。其中,所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
[0084]如果源數(shù)據(jù)未被修改,則表明該目標(biāo)進(jìn)程為可以根據(jù)源數(shù)據(jù)重新執(zhí)行的進(jìn)程,然而由于目標(biāo)進(jìn)程所使用的內(nèi)存為發(fā)生了多位錯誤的內(nèi)存,因而本步驟中,需要將源數(shù)據(jù)保存至其他未出錯的內(nèi)存區(qū)域中,并將該目標(biāo)進(jìn)程的掛起狀態(tài)恢復(fù)為可執(zhí)行的狀態(tài);同時修改該目標(biāo)進(jìn)程的物理地址信息,修改后的物理地址信息中所指向的物理地址為源數(shù)據(jù)所在的最新的物理地址,即所述未出錯的內(nèi)存區(qū)域所對應(yīng)的物理地址;然后執(zhí)行該目標(biāo)進(jìn)程。
[0085]進(jìn)一步的,所述方法還包括:
[0086]若所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改,則復(fù)位計算機(jī)系統(tǒng)。
[0087]如果查找到的目標(biāo)進(jìn)程的源數(shù)據(jù)被修改,則無法獲取源數(shù)據(jù),因而無法重新執(zhí)行該目標(biāo)進(jìn)程,本實施例中僅能復(fù)位計算機(jī)系統(tǒng)。
[0088]如上所述,只要使用了出錯地址的進(jìn)程的源數(shù)據(jù)未被修改,本實施例均能實現(xiàn)通過重新執(zhí)行進(jìn)程而避免計算機(jī)系統(tǒng)復(fù)位的目的;然而由于內(nèi)存的不同區(qū)域所起的作用或者所運行的進(jìn)程不同,因而本實施例中在應(yīng)用上述方法時,當(dāng)出現(xiàn)內(nèi)存多bit錯誤時,本實施例中首先獲取發(fā)生錯誤的多bit的物理地址;再根據(jù)該物理地址,判斷該多bit錯誤發(fā)生的區(qū)域,提供與所述多bit錯誤發(fā)生的區(qū)域相應(yīng)的處理方法,具體如下:
[0089]內(nèi)存為計算機(jī)系統(tǒng)的重要組成部分,根據(jù)內(nèi)存的物理地址的使用情況可以將內(nèi)存分為內(nèi)核代碼區(qū)、OS管理區(qū)、非OS管理區(qū),其中,內(nèi)核代碼區(qū)的物理地址專門用于存放內(nèi)核代碼;os管理區(qū)的物理地址由內(nèi)核或者用戶進(jìn)程使用;#os管理區(qū)的物理地址由一組特定的進(jìn)程使用。此外,內(nèi)存中還存在出錯區(qū)域,該出錯區(qū)域為內(nèi)存中的虛擬區(qū)域,僅僅是一個數(shù)據(jù)結(jié)構(gòu)(日志),用來記錄曾經(jīng)發(fā)生多bit錯誤的物理內(nèi)存地址。
[0090]當(dāng)發(fā)生錯誤的多bit位于所述OS管理區(qū)或者非OS管理區(qū)時,執(zhí)行所述步驟在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址以及后續(xù)步驟,也即上述步驟S201以及后續(xù)步驟。
[0091]當(dāng)發(fā)生錯誤的多位所在的區(qū)域為所述內(nèi)核代碼區(qū),而內(nèi)核代碼區(qū)出錯可能會導(dǎo)致無法調(diào)用錯誤處理程序進(jìn)而導(dǎo)致系統(tǒng)無法正常運行,因而,本實施例中,若發(fā)生錯誤的多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法正常運行時,則復(fù)位計算機(jī)系統(tǒng)。
[0092]作為上述各圖所示方法的應(yīng)用以及具體實現(xiàn),本實施例還提供了一種內(nèi)存多位錯誤的處理裝置,該裝置應(yīng)用于計算機(jī)系統(tǒng)中,如圖3所示,該裝置包括:
[0093]查找單元301,用于在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址。
[0094]處理單元302,用于當(dāng)所述查找單元301查找到的所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位時,將所述進(jìn)程確定為目標(biāo)進(jìn)程。
[0095]獲取單元303,用于獲取每個所述處理單元302確定的所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù)。
[0096]執(zhí)行單元304,用于當(dāng)所述獲取單元303獲取的所述源數(shù)據(jù)未被修改時,根據(jù)所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0097]進(jìn)一步的,如圖4所示,獲取單元303包括查找模塊401和獲取模塊402,其中
[0098]查找模塊401,用于根據(jù)目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址。
[0099]獲取模塊402,用于獲取查找模塊401查找到的物理地址中存儲的源數(shù)據(jù)。
[0100]進(jìn)一步的,處理單元302,還用于掛起目標(biāo)進(jìn)程。
[0101]執(zhí)行單元304,還用于當(dāng)所述源數(shù)據(jù)未被修改時,將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)目標(biāo)進(jìn)程,修改目標(biāo)進(jìn)程的物理地址信息,執(zhí)行該目標(biāo)進(jìn)程;該物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
[0102]進(jìn)一步的,所述處理單元302,還用于當(dāng)所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改時,復(fù)位計算機(jī)系統(tǒng)。
[0103]進(jìn)一步的,所述處理單元302,還用于當(dāng)發(fā)生錯誤的所述多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行時,復(fù)位計算機(jī)系統(tǒng)。
[0104]本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理裝置,當(dāng)發(fā)生的內(nèi)存錯誤為多位錯誤時,輪詢計算機(jī)系統(tǒng)中當(dāng)前運行的每一個進(jìn)程的物理地址,當(dāng)進(jìn)程的物理地址包含發(fā)生錯誤的多位中的至少一位時,獲取執(zhí)行該進(jìn)程所需的初始數(shù)據(jù),并且當(dāng)該初始數(shù)據(jù)未被修改時,根據(jù)該初始數(shù)據(jù)執(zhí)行該進(jìn)程。與現(xiàn)有技術(shù)中,當(dāng)計算機(jī)系統(tǒng)出現(xiàn)多位錯誤時,系統(tǒng)復(fù)位相比,本發(fā)明能夠重新執(zhí)行所有使用了發(fā)生錯誤的多位中的任一位,且其源數(shù)據(jù)未被修改的進(jìn)程,避免系統(tǒng)復(fù)位,因而能夠提高系統(tǒng)的容錯性。
[0105]作為上述各圖所示方法的應(yīng)用以及具體實現(xiàn),本實施例還提供了一種內(nèi)存多位錯誤的處理裝置,該裝置應(yīng)用于計算機(jī)系統(tǒng)中,如圖5所示,該裝置包括:
[0106]處理器501,在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址;
[0107]當(dāng)所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位時,將所述進(jìn)程確定為目標(biāo)進(jìn)程;
[0108]獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù);
[0109]當(dāng)所述源數(shù)據(jù)未被修改時,根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
[0110]進(jìn)一步的,所述處理器501,還用于根據(jù)所述目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址;
[0111]獲取所述物理地址中存儲的所述源數(shù)據(jù)。
[0112]進(jìn)一步的,所述處理器501,還用于掛起所述目標(biāo)進(jìn)程;
[0113]當(dāng)所述源數(shù)據(jù)未被修改時,將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程;所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
[0114]進(jìn)一步的,所述處理器501,還用于當(dāng)所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改時,復(fù)位計算機(jī)系統(tǒng)。
[0115]進(jìn)一步的,所述處理器501,還用于當(dāng)發(fā)生錯誤的多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行時,復(fù)位計算機(jī)系統(tǒng)。
[0116]本發(fā)明實施例提供的一種內(nèi)存多位錯誤的處理裝置,當(dāng)發(fā)生的內(nèi)存錯誤為多位錯誤時,輪詢計算機(jī)系統(tǒng)中當(dāng)前運行的每一個進(jìn)程的物理地址,當(dāng)進(jìn)程的物理地址包含發(fā)生錯誤的多位中的至少一位時,獲取執(zhí)行該進(jìn)程所需的初始數(shù)據(jù),并且當(dāng)該初始數(shù)據(jù)未被修改時,根據(jù)該初始數(shù)據(jù)執(zhí)行該進(jìn)程。與現(xiàn)有技術(shù)中,當(dāng)計算機(jī)系統(tǒng)出現(xiàn)多位錯誤時,系統(tǒng)復(fù)位相比,本發(fā)明能夠重新執(zhí)行所有使用了發(fā)生錯誤的多位中的任一位,且其源數(shù)據(jù)未被修改的進(jìn)程,避免系統(tǒng)復(fù)位,因而能夠提高系統(tǒng)的容錯性。
[0117]通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0118]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種內(nèi)存多位錯誤的處理方法,其特征在于,所述方法應(yīng)用于計算機(jī)系統(tǒng)中,所述方法包括: 在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址; 若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程; 獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù); 若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
2.根據(jù)權(quán)利要求1所述的內(nèi)存多位錯誤的處理方法,其特征在于,所述獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),包括: 根據(jù)所述目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址; 獲取所述物理地址中存儲的所述源數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或2所述的內(nèi)存多位錯誤的處理方法,其特征在于,所述若所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位,則將所述進(jìn)程確定為目標(biāo)進(jìn)程之后,所述獲取每個所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù)之前,所述方法還包括: 掛起所述目標(biāo)進(jìn)程; 所述若所述源數(shù)據(jù)未被修改,則根據(jù)獲取的所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程,包括: 若所述源數(shù)據(jù)未被修改,則將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程;所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
4.根據(jù)權(quán)利要求3所述的內(nèi)存多位錯誤的處理方法,其特征在于,所述方法還包括: 若所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改,則復(fù)位所述計算機(jī)系統(tǒng)。
5.根據(jù)權(quán)利要求4所述的內(nèi)存多位錯誤的處理方法,其特征在于, 所述內(nèi)存包括操作系統(tǒng)OS管理區(qū)、非OS管理區(qū)以及內(nèi)核代碼區(qū); 所述方法包括: 若發(fā)生錯誤的多位所在的區(qū)域為所述OS管理區(qū)或非OS管理區(qū),則執(zhí)行所述步驟在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址以及后續(xù)步驟; 若發(fā)生錯誤的多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行,則復(fù)位所述計算機(jī)系統(tǒng)。
6.一種內(nèi)存多位錯誤的處理裝置,其特征在于,所述裝置應(yīng)用于計算機(jī)系統(tǒng)中,所述裝置包括: 查找單元,用于在所述計算機(jī)系統(tǒng)當(dāng)前運行的所有進(jìn)程中,根據(jù)每一個進(jìn)程包含的文件信息,查找每一個所述進(jìn)程的物理地址,所述文件信息用于指示所述進(jìn)程的物理地址以及所述進(jìn)程的源數(shù)據(jù)所在的物理地址; 處理單元,用于當(dāng)所述查找單元查找到的所述進(jìn)程的物理地址包括所述發(fā)生錯誤的多位中的至少一位時,將所述進(jìn)程確定為目標(biāo)進(jìn)程; 獲取單元,用于獲取每個所述處理單元確定的所述目標(biāo)進(jìn)程所使用的源數(shù)據(jù),所述源數(shù)據(jù)為執(zhí)行所述目標(biāo)進(jìn)程所需的初始數(shù)據(jù); 執(zhí)行單元,用于當(dāng)所述獲取單元獲取的所述源數(shù)據(jù)未被修改時,根據(jù)所述源數(shù)據(jù)執(zhí)行所述目標(biāo)進(jìn)程。
7.根據(jù)權(quán)利要求6所述的內(nèi)存多位錯誤的處理裝置,其特征在于,所述獲取單元包括查找模塊和獲取模塊,其中, 所述查找模塊,用于根據(jù)所述目標(biāo)進(jìn)程中包含的文件信息,查找到所述源數(shù)據(jù)所在的物理地址; 所述獲取模塊,用于獲取所述物理地址中存儲的所述源數(shù)據(jù)。
8.根據(jù)權(quán)利要求6或7所述的內(nèi)存多位錯誤的處理裝置,其特征在于, 所述處理單元,還用于掛起所述目標(biāo)進(jìn)程; 所述執(zhí)行單元,還用于當(dāng)所述源數(shù)據(jù)未被修改時,將所述源數(shù)據(jù)保存至未發(fā)生錯誤的物理地址中,恢復(fù)所述目標(biāo)進(jìn)程,修改所述目標(biāo)進(jìn)程的物理地址信息,執(zhí)行所述目標(biāo)進(jìn)程;所述物理地址信息用于指示所述源數(shù)據(jù)所在的所述物理地址。
9.根據(jù)權(quán)利要求8所述的內(nèi)存多位錯誤的處理裝置,其特征在于, 所述處理單元,還用于當(dāng)所述目標(biāo)進(jìn)程的源數(shù)據(jù)被修改時,復(fù)位所述計算機(jī)系統(tǒng)。
10.根據(jù)權(quán)利要求9所述的內(nèi)存多位錯誤的處理裝置,其特征在于, 所述處理單元,還用于當(dāng)發(fā)生錯誤的所述多位所在的區(qū)域為所述內(nèi)核代碼區(qū),且系統(tǒng)無法運行時,復(fù)位所述計算機(jī)系統(tǒng)。
【文檔編號】G06F11/07GK104461759SQ201410706744
【公開日】2015年3月25日 申請日期:2014年11月27日 優(yōu)先權(quán)日:2014年11月27日
【發(fā)明者】黃鈺, 肖安睿 申請人:杭州華為企業(yè)通信技術(shù)有限公司