多內(nèi)核操作系統(tǒng)的失效控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機處理技術(shù)領(lǐng)域,特別是涉及一種多內(nèi)核操作系統(tǒng)的失效控制方法及裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的發(fā)展,一個計算機系統(tǒng)中集成多種計算設(shè)備成為趨勢。如何有效地管理這類系統(tǒng),充分利用系統(tǒng)提供的豐富資源,同時保證系統(tǒng)的使用效率,提高系統(tǒng)的可用性,使得系統(tǒng)中在一部分部件發(fā)生失效時,整個系統(tǒng)仍能提供服務(wù)是一個關(guān)鍵問題。
[0003]操作系統(tǒng)是一個控制其他程序運行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合。操作系統(tǒng)完成內(nèi)存管理、進程管理、輸入與輸出設(shè)備管理、網(wǎng)絡(luò)與文件系統(tǒng)管理等任務(wù)。
[0004]隨著計算機技術(shù)的發(fā)展,一個計算機系統(tǒng)中集成多種計算設(shè)備成為趨勢。針對多計算設(shè)備的計算機系統(tǒng),多內(nèi)核是一種流行的操作系統(tǒng)設(shè)計方法。內(nèi)核是一個操作系統(tǒng)的核心。內(nèi)核主要負責(zé)管理系統(tǒng)的進程、內(nèi)存、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng)的基本管理操作,內(nèi)核決定著系統(tǒng)的性能和穩(wěn)定性。在多內(nèi)核操作系統(tǒng)中,操作系統(tǒng)由多個內(nèi)核構(gòu)成,系統(tǒng)的每個CPU上部署一個內(nèi)核,內(nèi)核上面部署提供對外接口的系統(tǒng)服務(wù),如:文件系統(tǒng)、通信系統(tǒng),從而形成一個完整的操作系統(tǒng)。
[0005]現(xiàn)有技術(shù)中,針對多內(nèi)核系統(tǒng),一種管理方式是:采用主從核心的設(shè)計思想,即將內(nèi)核分為主核心、從核心,主核心負責(zé)管理其他的從核心。該種管理方式下,主核心接收到應(yīng)用程序,根據(jù)應(yīng)用程序的目標(biāo)指令集,以及主核心和各從核心中的當(dāng)前負載量,從主核心和多個從核心中選擇一個核心為應(yīng)用程序的目標(biāo)核心;由被選出的目標(biāo)核心為從核心加載所述應(yīng)用程序,并運行所述應(yīng)用程序。
[0006]然而,該種管理方式下,如果主核心失效,整個系統(tǒng)無法使用。當(dāng)主核心失效時,從核心無法通過主核心加載所述應(yīng)用程序,導(dǎo)致整個系統(tǒng)無法加載應(yīng)用程序。因此,主核心是整個系統(tǒng)的單一失效點,主核心的故障或主核心上計算設(shè)備的故障會導(dǎo)致整個系統(tǒng)的不可用。
[0007]另一種內(nèi)核系統(tǒng)的管理方式是:采用多核心的設(shè)計思想,不將多內(nèi)核進行分類,而是在每個CPU或CPU的處理核上部署一個核心,核心之間完全對等,需要進行資源協(xié)調(diào)時,通過協(xié)商協(xié)議實現(xiàn)管理功能。具體地,多個核心之間需要通過多階段提交協(xié)議來保證狀態(tài)一致性。然而,該種管理方式下,沒有考慮某個核心失效后的故障處理和可用性問題。
[0008]可見,現(xiàn)有技術(shù)中,對于多內(nèi)核系統(tǒng),暫時缺乏相應(yīng)的失效管理機制。
【發(fā)明內(nèi)容】
[0009]本發(fā)明實施例中提供了一種多內(nèi)核操作系統(tǒng)的失效控制方法及裝置,實現(xiàn)在部分內(nèi)核失效的情況下,整個多內(nèi)核操作系統(tǒng)仍能維持正常工作狀態(tài)。
[0010]為了解決上述技術(shù)問題,本發(fā)明實施例公開了如下技術(shù)方案:
[0011]第一方面,提供一種多內(nèi)核操作系統(tǒng)的失效控制方法,包括:
[0012]確定操作系統(tǒng)內(nèi)的重核心內(nèi)核以及多個輕核心內(nèi)核;
[0013]在所述重核心內(nèi)核和多個輕核心內(nèi)核上運行相應(yīng)的系統(tǒng)服務(wù),所述重核心內(nèi)核以及多個輕核心內(nèi)核均保存有所有內(nèi)核的狀態(tài)信息;
[0014]監(jiān)測所述重核心內(nèi)核和多個輕核心內(nèi)核的狀態(tài);
[0015]當(dāng)所述重核心內(nèi)核出現(xiàn)故障時,則在所述多個輕核心內(nèi)核中確定出新的重核心內(nèi)核,將原重核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至所述新的重核心內(nèi)核上,由所述新的重核心內(nèi)核和多個輕核心內(nèi)核更新相應(yīng)內(nèi)核的狀態(tài)信息;當(dāng)所述輕核心內(nèi)核出現(xiàn)故障時,則將故障輕核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至其他正常輕核心內(nèi)核,由所述重核心內(nèi)核和多個輕核心內(nèi)核更新相應(yīng)內(nèi)核的狀態(tài)信息。
[0016]結(jié)合上述第一方面,在第一種可能的實現(xiàn)方式中,所述確定操作系統(tǒng)內(nèi)的重核心內(nèi)核以及多個輕核心內(nèi)核,包括:
[0017]將操作系統(tǒng)內(nèi)第一個啟動的內(nèi)核確定為所述重核心內(nèi)核,將其余內(nèi)核確定為所述輕核心內(nèi)核。
[0018]結(jié)合上述第一方面,在第二種可能的實現(xiàn)方式中,所述在所述重核心內(nèi)核和多個輕核心內(nèi)核上運行相應(yīng)的系統(tǒng)服務(wù),包括:
[0019]所述重核心內(nèi)核接收系統(tǒng)服務(wù)發(fā)送的注冊請求消息,并運行接收到的系統(tǒng)服務(wù);
[0020]所述重核心內(nèi)核向所述多個輕核心內(nèi)核廣播所接收的系統(tǒng)服務(wù)注冊信息,指定運行系統(tǒng)服務(wù)的相應(yīng)輕核心內(nèi)核;
[0021]所述重核心內(nèi)核接收所述多個輕核心內(nèi)核發(fā)送的注冊回應(yīng)消息,通知所述系統(tǒng)服務(wù)至所述相應(yīng)輕核心內(nèi)核進行注冊,以便所述相應(yīng)輕核心內(nèi)核運行所述系統(tǒng)服務(wù)。
[0022]結(jié)合上述第一方面,和第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述在所述重核心內(nèi)核和多個輕核心內(nèi)核上運行相應(yīng)的系統(tǒng)服務(wù),還包括:
[0023]所述重核心內(nèi)核接收系統(tǒng)服務(wù)發(fā)送的退出請求消息,并將本地保存的系統(tǒng)服務(wù)進行刪除;
[0024]所述重核心內(nèi)核向所述多個輕核心內(nèi)核廣播所接收的系統(tǒng)服務(wù)退出信息;
[0025]所述重核心內(nèi)核接收所述多個輕核心內(nèi)核發(fā)送的退出回應(yīng)消息,由所述多個輕核心內(nèi)核在將本地保存的系統(tǒng)服務(wù)進行刪除;
[0026]所述重核心內(nèi)核通知所述系統(tǒng)服務(wù)進行退出。
[0027]結(jié)合上述第一方面,在第四種可能的實現(xiàn)方式中,所述監(jiān)測所述重核心內(nèi)核和多個輕核心內(nèi)核的狀態(tài),包括:
[0028]所述重核心內(nèi)核或多個輕核心內(nèi)核向各自的前繼節(jié)點內(nèi)核發(fā)送心跳信息;
[0029]當(dāng)所述重核心內(nèi)核或多個輕核心內(nèi)核的前繼節(jié)點內(nèi)核在預(yù)置時間內(nèi)未接收到所述心跳信息,則確定所述重核心內(nèi)核或輕核心內(nèi)核出現(xiàn)故障。
[0030]結(jié)合上述第一方面,在第五種可能的實現(xiàn)方式中,所述當(dāng)所述重核心內(nèi)核出現(xiàn)故障時,則在所述多個輕核心內(nèi)核中確定出新的重核心內(nèi)核,包括:
[0031]當(dāng)所述重核心內(nèi)核出現(xiàn)故障時,由所述多個輕核心內(nèi)核選擇出負載最小的輕核心內(nèi)核,由所述負載最小的輕核心內(nèi)核作為所述新的重核心內(nèi)核。
[0032]結(jié)合上述第一方面,和第一至第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述將原重核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至所述新的重核心內(nèi)核上,包括:
[0033]所述新的重核心內(nèi)核根據(jù)自身保存的所有內(nèi)核的狀態(tài)信息,獲知所述原重核心內(nèi)核上運行的系統(tǒng)服務(wù)的進程信息,根據(jù)所述進程信息得到對應(yīng)的物理地址,根據(jù)所述物理地址獲取對應(yīng)的內(nèi)存映像,將所述內(nèi)存映像中的系統(tǒng)服務(wù)加載至本地,在本地進行系統(tǒng)服務(wù)進程的重構(gòu)。
[0034]結(jié)合上述第一方面,和第一至第五種可能的實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,所述當(dāng)所述輕核心內(nèi)核出現(xiàn)故障時,則將故障輕核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至其他正常輕核心內(nèi)核,包括:
[0035]所述重核心內(nèi)核確定出接收所述故障輕核心內(nèi)核上運行的系統(tǒng)服務(wù)的正常輕核心內(nèi)核;所述正常輕核心內(nèi)核根據(jù)自身保存的所有內(nèi)核的狀態(tài)信息,獲知所述故障輕核心內(nèi)核上運行的系統(tǒng)服務(wù)的進程信息,根據(jù)所述進程信息得到對應(yīng)的物理地址,根據(jù)所述物理地址獲取對應(yīng)的內(nèi)存映像,將所述內(nèi)存映像中的系統(tǒng)服務(wù)加載至本地,在本地進行系統(tǒng)服務(wù)進程的重構(gòu)。
[0036]第二方面,提供一種多內(nèi)核操作系統(tǒng)的失效控制裝置,包括:
[0037]核心確定模塊,用于確定操作系統(tǒng)內(nèi)的重核心內(nèi)核以及多個輕核心內(nèi)核;
[0038]服務(wù)運行模塊,用于在所述重核心內(nèi)核和多個輕核心內(nèi)核上運行相應(yīng)的系統(tǒng)服務(wù),所述重核心內(nèi)核以及多個輕核心內(nèi)核均保存有所有內(nèi)核的狀態(tài)信息;
[0039]狀態(tài)監(jiān)測模塊,用于監(jiān)測所述重核心內(nèi)核和多個輕核心內(nèi)核的狀態(tài);
[0040]第一故障處理模塊,用于當(dāng)所述重核心內(nèi)核出現(xiàn)故障時,則在所述多個輕核心內(nèi)核中確定出新的重核心內(nèi)核,將原重核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至所述新的重核心內(nèi)核上,由所述新的重核心內(nèi)核和多個輕核心內(nèi)核更新相應(yīng)內(nèi)核的狀態(tài)信息;
[0041]第二故障處理模塊,用于當(dāng)所述輕核心內(nèi)核出現(xiàn)故障時,則將故障輕核心內(nèi)核上運行的系統(tǒng)服務(wù)轉(zhuǎn)移至其他正常輕核心內(nèi)核,由所述重核心內(nèi)核和多個輕核心內(nèi)核更新相應(yīng)內(nèi)核的狀態(tài)信息。
[0042]結(jié)合上述第二方面,在第一種可能的實現(xiàn)方式中,所述核心確定模塊,包括:
[0043]重核心內(nèi)核確定單元,用于將操作系統(tǒng)內(nèi)第一個啟動的內(nèi)核確定為所述重核心內(nèi)核;
[0044]輕核心內(nèi)核確定單元,用于將其余內(nèi)核確定為所述輕核心內(nèi)核。
[0045]結(jié)合上述第二方面,在第二種可能的實現(xiàn)方式中,所述服務(wù)運行模塊,包括:
[0046]第一運行單元,用于所述重核心內(nèi)核接收系統(tǒng)服務(wù)發(fā)送的注冊請求消息,并運行接收到的系統(tǒng)服務(wù);
[0047]輕核心內(nèi)核指定單元,用于所述重核心內(nèi)核向所述多個輕核心內(nèi)核廣播所接收的系統(tǒng)服務(wù)注冊信息,指定運行系統(tǒng)服務(wù)的相應(yīng)輕核心內(nèi)核;
[0048]第二運行單元,用于所述重核心內(nèi)核接收所述多個輕核心內(nèi)核發(fā)送的注冊回應(yīng)消息,通知所述系統(tǒng)服務(wù)至所述相應(yīng)輕核心內(nèi)核進行注冊,以便所述相應(yīng)輕核心內(nèi)核運行所述系統(tǒng)服務(wù)。
[0049]結(jié)合上述第二方面,和第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述服務(wù)運行模塊,還包括:
[0050]第一服務(wù)刪除單元,用于所述重核心內(nèi)核接收系統(tǒng)服務(wù)發(fā)送的退出請求消息,并將本地保存的系統(tǒng)服務(wù)進行刪除;
[0051]服