計算機系統的狀態監測方法及裝置制造方法
【專利摘要】本發明公開一種計算機系統的狀態監測方法,該方法包括如下步驟:為計算機添加虛擬的狀態監測設備;所述虛擬的狀態監測設備與連接在計算機的南橋上的狀態監測芯片對應,并由ACPI設備驅動程序進行驅動;利用ACPI方法通知操作系統產生異常事件:當連接在計算機的南橋上的狀態監測芯片由于發現系統狀態異常時而產生異常事件,通過ACPI方法向所述ACPI設備驅動程序傳遞所述異常事件,然后由所述ACPI設備驅動程序通知操作系統;通過所述ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據。還公開一種應用上述方法的裝置。上述方法和裝置由于在底層的設備和系統層的應用軟件都使用標準的ACPI方法,提高了系統狀態數據傳遞的可移植性、兼容性和可靠性。
【專利說明】計算機系統的狀態監測方法及裝置
【技術領域】
[0001]本發明涉及狀態監測技術,特別是涉及一種計算機系統的狀態監測方法和一種計算機系統的狀態監測裝置。
【背景技術】
[0002]在工控行業的一個系統往往有許多裝置會同時運行,如采集系統、存儲系統、視頻輸出、鍵盤輸入以及網絡通信等各種裝置,而系統的可靠性、移植性、兼容性、可維護性成為工控行業的主要指標,因此對各種系統裝置的狀態監測和控制成為工控機提高可靠性的必要手段。目前監控這些信息常用的消息通知方式有SMI(System Management Interrupt,系統管理中斷)、MSI (Message Signaled Interrupt,消息信號中斷)、IPI (Inter ProcessorInterrupt,處理器間中斷)和輪詢方式來通知操作系統去處理相應的信息,消息通知方式五花八門,移植性、兼容性低,可靠性差。例如,SMI中斷是從底層發出消息給底層BIOS執行命令,底層BIOS與系統層相分離,系統層則會一直不斷的觸發SMI信號,存在操作系統暫時“卡死”現象,如果SMI中斷頻繁,將導致操作系統可靠性差,存在很大隱患;又如系統狀態異常后,如果通過MSI或者IPI通知操作系統,針對不同的操作系統有很大差別,移植性和兼容性較差。
【發明內容】
[0003]基于此,有必要提供一種通過統一數據傳遞方式而使得移植性、兼容性、可靠性較好的計算機系統的狀態監測方法。
[0004]此外,還提供一種計算機系統的狀態監測裝置。
[0005]一種計算機系統的狀態監測方法,包括如下步驟:
[0006]為計算機添加虛擬的狀態監測設備:所述虛擬的狀態監測設備與連接在計算機的南橋上的狀態監測芯片對應,并由ACPI設備驅動程序進行驅動;
[0007]利用ACPI方法通知操作系統產生異常事件:當連接在計算機的南橋上的狀態監測芯片由于發現系統狀態異常而產生異常事件時,通過ACPI方法向所述ACPI設備驅動程序傳遞所述異常事件,然后由所述ACPI設備驅動程序通知操作系統;
[0008]通過所述ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據。
[0009]在其中一個實施例中,還包括:通過所述ACPI設備驅動程序處理所述狀態監測芯片的狀態數據。
[0010]在其中一個實施例中,所述通過ACPI方法向ACPI設備驅動程序傳遞所述異常事件的步驟具體是:南橋通過GPE寄存器組觸發系統控制中斷,所述系統控制中斷由高級可編程中斷控制器轉換為向中央處理器申請的中斷請求,所述中央處理器繼而根據所述中斷請求調用在所述ACPI設備驅動程序初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數,將所述異常事件傳遞給所述ACPI設備驅動程序,由所述ACPI設備驅動程序告知計算機的操作系統此次異常事件。[0011]在其中一個實施例中,所述狀態監測芯片獲取環境傳感器采集的數據,對環境傳感器采集的數據進行處理,按照預設的條件產生異常事件。
[0012]在其中一個實施例中,所述通過ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據的步驟包括:
[0013]通過IO指令操作所述ACPI設備驅動程序;
[0014]所述ACPI設備驅動程序通過南橋讀取狀態監控芯片的狀態數據。
[0015]一種計算機系統的狀態監測裝置,包括:
[0016]環境傳感器,用于采集計算機系統的狀態數據;
[0017]狀態監測芯片,與所述環境傳感器連接,用于獲取所述狀態數據,并進行分析、處理以及保存;在處理狀態數據后根據預設的條件產生異常事件;
[0018]計算機系統中的BIOS,其中添加有虛擬設備代碼;所述計算機系統在啟動并初始化時,通過所述虛擬設備代碼生成可被計算機系統識別的虛擬的狀態監測設備;
[0019]計算機系統中的南橋,用于在所述狀態監測芯片產生異常事件時產生中斷,告知計算機的操作系統此次關于所述虛擬的狀態監測設備的異常事件;
[0020]異常數據處理模塊,通過操作所述虛擬的狀態監測設備獲取由狀態監測芯片處理得到的狀態數據。
[0021]在其中一個實施例中,所述異常數據處理模塊還用于處理所述狀態監測芯片的狀態數據。
[0022]在其中一個實施例中,所述南橋通過GPE寄存器組觸發系統控制中斷。
[0023]在其中Iv實施例中,所述系統控制中斷由聞級可編程中斷控制器轉換為向中央處理器申請的中斷請求,所述中央處理器繼而調用在系統初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數,將所述異常事件傳遞給與所述虛擬的狀態監測設備相關的驅動,由與所述虛擬的狀態監測設備相關的驅動告知計算機的操作系統此次異常事件。
[0024]上述方法和裝置由于在底層的設備和系統層的應用軟件都使用標準的ACPI方法,提高了系統狀態數據傳遞的可移植性、兼容性和可靠性。
【專利附圖】
【附圖說明】
[0025]圖1為一實施例的計算機系統的狀態監測方法流程圖;
[0026]圖2為一實施例的計算機系統的狀態監測裝置模塊圖。
【具體實施方式】
[0027]如圖1所示,為一實施例的計算機系統的狀態監測方法流程圖。該方法使底層的設備和系統層的應用軟件都使用標準的ACPI (Advanced Configuration and PowerManagement Interface高級配置和電源管理接口)方法,提高了設計的可移植性、兼容性和可靠性。該方法包括如下步驟:
[0028]SlOl:為計算機添加虛擬的狀態監測設備。所述虛擬的狀態監測設備與連接在計算機的南橋上的狀態監測芯片對應,并由ACPI設備驅動程序進行驅動。在計算機系統啟動并初始化時,通過添加在計算機系統的BIOS中的虛擬設備代碼生成可被計算機系統識別的虛擬的狀態監測設備。
[0029]計算機系統中的BIOS是固化在存儲芯片中的程序,其直接對計算機硬件進行操作和管理。BIOS主要負責三個任務:上電自檢、硬件初始化以及引導操作系統。上述任務由很多包含在BIOS程序中的模塊(也即代碼段)來完成。在引導操作系統之前,BIOS會列出硬件檢測結果。通過在BIOS程序中添加虛擬設備代碼,就可以生成虛擬的硬件。因此該虛擬的狀態監測設備,是指該狀態監測設備并不真實存在,但是由于提供給了操作系統一系列與硬件一樣的信息,例如分配中斷號、占據系統資源等,操作系統便認為計算機系統中存在該硬件,并且加載相應的驅動程序使其能夠正常運行。
[0030]本實施例中,該虛擬的狀態監測設備基于ACPI方法,其在操作系統中由ACPI設備驅動程序驅動。BIOS為了支持或實現ACPI的相關規范,都會包含ACPI的相關內容,例如在初始化硬件的過程中也初始化ACPI。此外,BIOS中還預先設定與該虛擬的狀態監測設備相關的通知BIOS中的函數Method (_Lxx),該函數主要是一個處理事件的函數,起到傳遞事件,通知操作系統的作用。
[0031]S102:利用ACPI方法通知操作系統產生異常事件。當連接在計算機的南橋上的狀態監測芯片由于發現系統狀態異常而產生異常事件時,計算機的南橋觸發中斷,告知計算機的操作系統此次關于所述虛擬的狀態監測設備的異常事件。南橋通過GPE寄存器組觸發系統控制中斷(System Control Interrupt, SCI)。所述系統控制中斷由高級可編程中斷控制器(Advanced Programmable Interrupt Controller, APIC)轉換為向中央處理器(CPU)申請的中斷請求(Interrupt Request, IRQ)。操作系統繼而根據所述中斷請求調用在ACPI設備驅動程序初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數Method (_Lxx),將所述異常事件傳遞給所述ACPI設備驅動程序,由ACPI設備驅動程序告知計算機的操作系統此次異常事件。 [0032]上述過程是一個自底層硬件逐步向上層系統傳遞的過程。這樣,通過共同的ACPI方法,底層的硬件(狀態監測芯片)將異常告知上層的系統(操作系統或應用軟件),這樣使底層與系統層都使用標準的ACPI方法,提高設計的移植性、兼容性和可靠性。
[0033]其中,狀態監測芯片獲取環境傳感器采集的數據,對環境傳感器采集的數據進行處理,按照預設的條件,例如處理器溫度超過閾值等,產生異常事件。
[0034]S103:通過所述ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據。或者進一步處理所述狀態監測芯片的狀態數據。上層的應用軟件獲知異常事件后,可以通過所述ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據,或者進一步處理所述狀態監測芯片的狀態數據。其中獲取由狀態監測芯片處理得到的狀態數據的步驟包括:通過10指令操作所述ACPI設備驅動程序;所述ACPI設備驅動程序通過南橋讀取狀態監控芯片的狀態數據或者操作底層硬件。
[0035]如圖2所示,為一實施例的計算機系統的狀態監測裝置模塊圖。該狀態監測裝置包括計算機系統10、環境傳感器100和狀態監測芯片200。計算機系統10包括B10S300、南
橋400以及其他完成計算機系統功能的必要部件,在此不--列舉。其中南橋400內集成
中斷控制器500,本實施例中,中斷控制器在前述方法的實現中具有關鍵作用,在圖2中單獨列出。
[0036]環境傳感器100用于采集計算機系統的狀態數據。狀態監測芯片200與所述環境傳感器100連接,用于獲取所述狀態數據,并進行分析、處理以及保存。在處理狀態數據后根據預設的條件產生異常事件。
[0037]計算機系統中的B10S300中添加有虛擬設備代碼。所述計算機系統在啟動并初始化時,通過所述虛擬設備代碼生成可被計算機系統識別的虛擬的狀態監測設備。所述虛擬的狀態監測設備與連接在計算機的南橋上的狀態監測芯片對應(BIOS在初始化狀態時,計算機系統會檢測所有設備,包括虛擬的狀態監測設備,并且會生成一個設備表,每個設備都有一個固定的ID碼相互對應,當狀態監測芯片監測到異常設備時,就會產生一個相應的ID碼和系統設備表中ID碼一一對應起來),并由ACPI設備驅動程序進行驅動。在計算機系統啟動并初始化時,通過添加在計算機系統的BIOS中的虛擬設備代碼生成可被計算機系統識別的虛擬的狀態監測設備。本實施例中,該虛擬的狀態監測設備基于ACPI方法,其在操作系統中由ACPI設備驅動程序驅動。BIOS為了支持或實現ACPI的相關規范,都會包含ACPI的相關內容,例如在初始化硬件的過程中也初始化ACPI。此外,BIOS中還預先設定與該虛擬的狀態監測設備相關的通知函數Method (_Lxx),起到傳遞事件給所述ACPI設備驅動,ACPI設備驅動通知操作系統。
[0038]計算機系統中的南橋400用于在所述狀態監測芯片200產生異常事件時產生中斷,告知計算機的操作系統此次關于所述虛擬的狀態監測設備的異常事件。南橋通過GPE寄存器組觸發系統控制中斷(System Control Interrupt, SCI)。所述系統控制中斷由高級可編程中斷控制器(Advanced Programmable Interrupt Controller,APIC)轉換為向中央處理器(CPU)申請的中斷請求(Interrupt Request, IRQ)。所述中央處理器繼而根據所述中斷請求調用在計算機的操作系統初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數,將所述異常事件傳遞給與所述虛擬的狀態監測設備相關的驅動(也即上述ACPI驅動),由此,所述虛擬的狀態監測設備相關的驅動告知計算機的操作系統此次異常事件。
[0039]異常數據處理模塊(圖未標示)是運行于操作系統之上的應用程序,其通過操作所述虛擬的狀態監測設備獲取由狀態監測芯片處理得到的狀態數據。異常數據處理模塊還用于處理所述狀態監測芯片的狀態數據。
[0040]上述裝置是一個計算機系統的狀態監測裝置,其運行過程是一種自底層硬件逐步向上層系統傳遞的過程。這樣,通過共同的ACPI方法,底層的硬件(狀態監測芯片)將異常告知上層的系統(操作系統或應用軟件),這樣使底層與系統層都使用標準的ACPI方法,提高該裝置設計的移植性、兼容性和可靠性。
[0041]以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬于本發明的保護范圍。因此,本發明專利的保護范圍應以所附權利要求為準。
【權利要求】
1.一種計算機系統的狀態監測方法,包括如下步驟: 為計算機添加虛擬的狀態監測設備:所述虛擬的狀態監測設備與連接在計算機的南橋上的狀態監測芯片對應,并由ACPI設備驅動程序進行驅動; 利用ACPI方法通知操作系統產生異常事件:當連接在計算機的南橋上的狀態監測芯片由于發現系統狀態異常而產生異常事件時,通過ACPI方法向所述ACPI設備驅動程序傳遞所述異常事件,然后由所述ACPI設備驅動程序通知操作系統; 通過所述ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據。
2.根據權利要求1所述的計算機系統的狀態監測方法,其特征在于,還包括:通過所述ACPI設備驅動程序處理所述狀態監測芯片的狀態數據。
3.根據權利要求1所述的計算機系統的狀態監測方法,其特征在于,所述通過ACPI方法向ACPI設備驅動程序傳遞所述異常事件的步驟具體是:南橋通過GPE寄存器組觸發系統控制中斷,所述系統控制中斷由高級可編程中斷控制器轉換為向中央處理器申請的中斷請求,所述中央處理器繼而根據所述中斷請求調用在所述ACPI設備驅動程序初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數,將所述異常事件傳遞給所述ACPI設備驅動程序,由所述ACPI設備驅動程序告知計算機的操作系統此次異常事件。
4.根據權利要求1所述的計算機系統的狀態監測方法,其特征在于,所述狀態監測芯片獲取環境傳感器采 集的數據,對環境傳感器采集的數據進行處理,按照預設的條件產生異常事件。
5.根據權利要求1所述的計算機系統的狀態監測方法,其特征在于,所述通過ACPI設備驅動程序獲取由狀態監測芯片處理得到的狀態數據的步驟包括: 通過IO指令操作所述ACPI設備驅動程序; 所述ACPI設備驅動程序通過南橋讀取狀態監控芯片的狀態數據。
6.一種計算機系統的狀態監測裝置,包括: 環境傳感器,用于采集計算機系統的狀態數據; 狀態監測芯片,與所述環境傳感器連接,用于獲取所述狀態數據,并進行分析、處理以及保存;在處理狀態數據后根據預設的條件產生異常事件; 計算機系統中的BIOS,其中添加有虛擬設備代碼;所述計算機系統在啟動并初始化時,通過所述虛擬設備代碼生成可被計算機系統識別的虛擬的狀態監測設備; 計算機系統中的南橋,用于在所述狀態監測芯片產生異常事件時產生中斷,告知計算機的操作系統此次關于所述虛擬的狀態監測設備的異常事件; 異常數據處理模塊,通過操作所述虛擬的狀態監測設備獲取由狀態監測芯片處理得到的狀態數據。
7.根據權利要求6所述的計算機系統的狀態監測裝置,其特征在于,所述異常數據處理模塊還用于處理所述狀態監測芯片的狀態數據。
8.根據權利要求7所述的計算機系統的狀態監測裝置,其特征在于,所述南橋通過GPE寄存器組觸發系統控制中斷。
9.根據權利要求8所述的計算機系統的狀態監測裝置,其特征在于,所述系統控制中斷由高級可編程中斷控制器轉換為向中央處理器申請的中斷請求,所述中央處理器繼而調用在系統初始化時注冊的系統控制中斷處理函數,通過所述系統控制中斷處理函數從BIOS程序中讀取預先定義的通知函數,將所述異常事件傳遞給與所述虛擬的狀態監測設備相關的驅動,由 與所述虛擬的狀態監測設備相關的驅動告知計算機的操作系統此次異常事件。
【文檔編號】G06F11/30GK103902425SQ201210587387
【公開日】2014年7月2日 申請日期:2012年12月28日 優先權日:2012年12月28日
【發明者】陳志列, 袁偉評, 胡賢輝 申請人:研祥智能科技股份有限公司, 北京市研祥興業國際智能科技有限公司