本發(fā)明涉及設備驅(qū)動程序加固領域,尤其涉及設備驅(qū)動程序的預測隔離方法及其智能加固系統(tǒng)。
背景技術(shù):
設備驅(qū)動程序的代碼通常占據(jù)通用操作系統(tǒng)全部代碼的60%以上,也是導致操作系統(tǒng)內(nèi)核故障的主要原因之一。因為設備驅(qū)動程序通常運行在核心態(tài),因而可以直接修改操作系統(tǒng)的核心數(shù)據(jù)結(jié)構(gòu),所以發(fā)生在設備驅(qū)動程序中的故障通常容易造成操作系統(tǒng)本身的失效。
設備驅(qū)動程序在內(nèi)核態(tài)的隔離技術(shù)有:硬件或者軟件等技術(shù)隔離出特定區(qū)域,以對設備驅(qū)動程序訪問的資源進行嚴格限制。軟件技術(shù)隔離用軟件方式模擬或虛擬出設備驅(qū)動程序的運行環(huán)境進而隔離設備驅(qū)動程序?qū)φw內(nèi)核的影響,但是其效率相對較低。隨著硬件技術(shù)的不斷更新發(fā)展,模擬或虛擬的功能在逐漸由硬件實現(xiàn),其效率相對于軟件方式要高。
首先,現(xiàn)在的虛擬技術(shù)沒有足夠細顆粒度地控制設備驅(qū)動程序。如設備驅(qū)動程序只需要簡單更新內(nèi)存信息,卻需要為之建立復雜的虛擬化運行環(huán)境。根據(jù)現(xiàn)有的成熟硬件技術(shù),可以有效細化到獨立的隔離子系統(tǒng),如Intel 虛擬技術(shù)可以單獨隔離:I/O、DMA、內(nèi)存、CPU等,從而更加細顆粒度的虛擬化控制。
其次,如今設備驅(qū)動程序代碼不斷成熟穩(wěn)定:設備驅(qū)動程序執(zhí)行路徑已經(jīng)全部覆蓋測試;設備驅(qū)動程序內(nèi)部算法相當成熟;所有的功能已經(jīng)經(jīng)歷過驗證。因此,成熟穩(wěn)定的設備驅(qū)動程序可以完全在物理環(huán)境中運行。
再次,硬件SOC技術(shù)不斷完善,設備驅(qū)動程序內(nèi)部算法流程趨向硬件實現(xiàn),設備驅(qū)動程序的大部分功能已經(jīng)固化到硬件芯片上。從而使得設備驅(qū)動程序趨向于簡單的DMA數(shù)據(jù)交互、以及物理設備寄存器讀取等簡單操作。傳統(tǒng)的設備驅(qū)動程序代碼復雜難度系數(shù)不斷降低,設備驅(qū)動程序不斷簡化,進而對設備驅(qū)動程序的監(jiān)控及預測提供了有利的條件。
從次,設備驅(qū)動程序軟件產(chǎn)生的風險因素有限,能根據(jù)歷史記錄、設備驅(qū)動程序的運行狀態(tài)以及外部環(huán)境,對設備驅(qū)動程序發(fā)生風險因素進行歸類整理。因此有效的風險規(guī)劃管理,規(guī)避風險發(fā)生的前提條件,能有效降低設備驅(qū)動程序風險發(fā)生的概率。
最后,目前市場上設備驅(qū)動程序固化技術(shù)沒有考慮到設備驅(qū)動程序間的依賴性,缺乏有效的依賴管理,從而存在依賴殘留的設備驅(qū)動程序并引入其它風險的隱患。
技術(shù)實現(xiàn)要素:
為解決現(xiàn)有技術(shù)的不足,降低設備驅(qū)動程序的風險及危害,使操作系統(tǒng)能有效穩(wěn)定運行,本發(fā)明提供了一種設備驅(qū)動程序的預測隔離方法,包括如下步驟:
S1:分析設備驅(qū)動程序及內(nèi)核源代碼;
S2:建立設備驅(qū)動程序狀態(tài)表;
S3:建立風險條件表;
S4:建立系統(tǒng)資源狀態(tài)表;
S5:建立設備驅(qū)動風險預測表;
S6:根據(jù)設備驅(qū)動風險預測表建立對應的隔離子系統(tǒng),并加載設備驅(qū)動程序到所需對應的隔離子系統(tǒng)中運行。
所有設備驅(qū)動程序開始時都是運行在隔離子系統(tǒng)中,設備驅(qū)動程序的成熟程度提升且系統(tǒng)狀態(tài)良好,才有機會提升到物理環(huán)境中運行。
其中,還包括如下步驟:
S7:對設備驅(qū)動程序的運行進行跟蹤監(jiān)控,對系統(tǒng)資源狀態(tài)表進行同步跟蹤;
S8:根據(jù)設備驅(qū)動風險預測表、系統(tǒng)資源狀態(tài)表以及風險條件表動態(tài)調(diào)整設備驅(qū)動程序運行環(huán)境。
其中,前述步驟S1包括:
S11:于設備驅(qū)動程序編譯構(gòu)造過程中,對設備驅(qū)動源代碼以及操作系統(tǒng)內(nèi)核源代碼進行靜態(tài)分析得出設備驅(qū)動程序執(zhí)行路徑;
S12:分析設備驅(qū)動程序的關鍵執(zhí)行路徑及監(jiān)控點;
S13:分析設備驅(qū)動程序間的依賴;
S14:分析設備驅(qū)動程序訪問的系統(tǒng)資源,進一步評估設備驅(qū)動程序的功能模塊復雜性;
S15:在編譯設備驅(qū)動程序后加入設備驅(qū)動程序監(jiān)控、控制鉤子方便對設備驅(qū)動程序進行監(jiān)控。
其中,前述設備驅(qū)動程序狀態(tài)包括:啟動狀態(tài)、物理狀態(tài)、隔離狀態(tài)、風險狀態(tài)及停止狀態(tài),這些狀態(tài)用于預測設備驅(qū)動程序下一步風險的可能性。
其中,前述隔離子系統(tǒng)包括:CPU隔離子系統(tǒng)、內(nèi)存隔離子系統(tǒng)、I/O隔離子系統(tǒng)以及各個子系統(tǒng)的組合;這些隔離子系統(tǒng)使設備驅(qū)動程序在獨立隔離的環(huán)境中運行,從而有效降低有風險的設備驅(qū)動程序?qū)φw系統(tǒng)的影響。
其中,前述系統(tǒng)資源狀態(tài)表包括:內(nèi)存狀態(tài)表、信號鎖以狀態(tài)表及硬件設備狀態(tài)表;這些系統(tǒng)狀態(tài)信息用于反映當前整體系統(tǒng)的穩(wěn)定程度。
其中,前述風險條件表用于描述風險發(fā)生的充分必要條件。
其中,前述步驟S5中,通過整合驅(qū)動程序狀態(tài)表、系統(tǒng)資源狀態(tài)表以及風險條件表,構(gòu)建出有限狀態(tài)機。有限狀態(tài)機保存到設備驅(qū)動風險預測表中并建立索引。從而在當前狀態(tài)下利用有限狀態(tài)機進一步預測可能存在的風險,阻止風險發(fā)生的條件,規(guī)避風險的發(fā)生。
本發(fā)明另外提供了一種設備驅(qū)動程序智能加固系統(tǒng),其包括:
多個設備驅(qū)動程序;
驅(qū)動監(jiān)控器,用于監(jiān)控多個設備驅(qū)動程序,以調(diào)整設備驅(qū)動程序運行環(huán)境;
其中,驅(qū)動監(jiān)控器包括驅(qū)動程序預測隔離模塊,其通過權(quán)利要求1-8所述的預測隔離方法確定設備驅(qū)動程序的運行環(huán)境;
隔離子系統(tǒng),用于使加載的設備驅(qū)動程序于其內(nèi)運行,從而有效降低有風險的設備驅(qū)動程序?qū)φw系統(tǒng)的影響。
其中,前述隔離子系統(tǒng)包括:CPU隔離子系統(tǒng)、內(nèi)存隔離子系統(tǒng)、I/O隔離子系統(tǒng)以及各個子系統(tǒng)的組合。
本發(fā)明的有益效果是:
(1)可有效地規(guī)避設備驅(qū)動程序運行過程中風險的發(fā)生條件,從而使得系統(tǒng)穩(wěn)定運行;
(2)設備驅(qū)動程序執(zhí)行效率更快,有效并驗證過的設備驅(qū)動程序可以直接控制物理設備,無需在復雜低效的隔離環(huán)境中運行;
(3)可更為細顆粒度地控制設備驅(qū)動程序,例如,有的設備驅(qū)動程序(如內(nèi)核時鐘驅(qū)動)只要簡單I/O訪問,對內(nèi)存和CPU要求極低,因此無需建立復雜的虛擬化環(huán)境;
(4)不同設備驅(qū)動程序運行在獨立的環(huán)境中,彼此互不影響,可更為有效地隔離風險;
(5)能分析設備驅(qū)動程序間的依賴,自動分析與風險的設備驅(qū)動程序有關的其它設備驅(qū)動程序,從而能降低相依賴關聯(lián)的設備驅(qū)動程序帶來的隱患。
附圖說明 圖1:本發(fā)明的設備驅(qū)動程序的狀態(tài)轉(zhuǎn)換圖;
圖2:本發(fā)明的設備驅(qū)動程序智能加固調(diào)度算法流程圖;
圖3:本發(fā)明的設備驅(qū)動風險預測表構(gòu)建流程圖;
圖4:本發(fā)明的設備驅(qū)動程序智能加固系統(tǒng)的整體框架圖;
圖5:本發(fā)明的設備驅(qū)動程序智能加固系統(tǒng)構(gòu)造流程圖。
具體實施方式
為了對本發(fā)明的技術(shù)方案及有益效果有更進一步的了解,下面配合附圖詳細說明本發(fā)明的技術(shù)方案及其產(chǎn)生的有益效果。
本發(fā)明提供了一種設備驅(qū)動程序的預測隔離方法,包括如下步驟:
S1:分析設備驅(qū)動程序及內(nèi)核源代碼;
S2:建立設備驅(qū)動程序狀態(tài)表;
S3:建立風險條件表;
S4:建立系統(tǒng)資源狀態(tài)表;
S5:建立設備驅(qū)動風險預測表;
S6:根據(jù)設備驅(qū)動風險預測表建立對應的隔離子系統(tǒng),并加載設備驅(qū)動程序到所需對應的隔離子系統(tǒng)中運行。
所有設備驅(qū)動程序開始時都是運行在隔離子系統(tǒng)中,設備驅(qū)動程序的成熟程度提升且系統(tǒng)狀態(tài)良好,才有機會提升到物理環(huán)境中運行。
較優(yōu)的,還包括如下步驟:
S7:對設備驅(qū)動程序的運行進行跟蹤監(jiān)控,對系統(tǒng)資源狀態(tài)表進行同步跟蹤;
S8:根據(jù)設備驅(qū)動風險預測表、系統(tǒng)資源狀態(tài)表以及風險條件表動態(tài)調(diào)整設備驅(qū)動程序運行環(huán)境。
較優(yōu)的,所述步驟S1包括:
S11:于設備驅(qū)動程序編譯構(gòu)造過程中,對設備驅(qū)動源代碼以及操作系統(tǒng)內(nèi)核源代碼進行靜態(tài)分析得出設備驅(qū)動程序執(zhí)行路徑;
S12:分析設備驅(qū)動程序的關鍵執(zhí)行路徑及監(jiān)控點;
S13:分析設備驅(qū)動程序間的依賴;
S14:分析設備驅(qū)動程序訪問的系統(tǒng)資源,進一步評估設備驅(qū)動程序的功能模塊復雜性;
S15:在編譯設備驅(qū)動程序后加入設備驅(qū)動程序監(jiān)控、控制鉤子方便對設備驅(qū)動程序進行監(jiān)控。
圖1為本發(fā)明的設備驅(qū)動程序的狀態(tài)轉(zhuǎn)換圖,具體的,參見圖1所示,所述設備驅(qū)動程序狀態(tài)包括:啟動狀態(tài)、物理狀態(tài)、隔離狀態(tài)、風險狀態(tài)及停止狀態(tài),這些狀態(tài)用于預測設備驅(qū)動程序下一步風險的可能性。各設備驅(qū)動程序的狀態(tài)描述如下:
1、啟動狀態(tài)
設備驅(qū)動程序加載到內(nèi)核,完成初始化,然后處于啟動狀態(tài),此時設備驅(qū)動程序還沒有處于工作狀態(tài),當設備驅(qū)動程序接收到設備使用請求后,由驅(qū)動監(jiān)控模塊根據(jù)設備驅(qū)動程序?qū)傩员碚{(diào)度后,進入工作狀態(tài);
2、隔離狀態(tài)
設備驅(qū)動程序運行于隔離子系統(tǒng)中,隔離子系統(tǒng)包括:CPU隔離子系統(tǒng)、內(nèi)存隔離子系統(tǒng)、I/O隔離子系統(tǒng),或者各隔離子系統(tǒng)之間的組合;此時設備驅(qū)動程序已經(jīng)進入工作,但是運行在有限制的隔離子系統(tǒng)中;
3、風險狀態(tài)
設備驅(qū)動程序運行過程中反映的各種異常狀態(tài):I/O調(diào)用失敗、系統(tǒng)資源申請失敗、外部物理設備錯誤信息狀態(tài),未執(zhí)行過的設備驅(qū)動程序流程分支狀態(tài)都會被調(diào)度到風險狀態(tài);
4、物理狀態(tài)
設備驅(qū)動程序在正常的運轉(zhuǎn)狀態(tài)可以高效處理系統(tǒng)中的各種硬件操作請求;
5、停止狀態(tài)
設備驅(qū)動程序停止工作并釋放所有資源,并卸載出內(nèi)核。
圖2為本發(fā)明的設備驅(qū)動程序智能加固調(diào)度算法流程圖,如圖2所示,本發(fā)明的提供的設備驅(qū)動程序的預測隔離方法,在決定設備驅(qū)動程序所處的狀態(tài)時,通過驅(qū)動層驅(qū)動監(jiān)控器收集硬件狀態(tài)信息并更新系統(tǒng)資源狀態(tài)表,判斷系統(tǒng)是否處于穩(wěn)定狀態(tài)下。
接下來根據(jù)獲得的系統(tǒng)狀態(tài)信息、設備驅(qū)動程序狀態(tài),檢索存儲在設備驅(qū)動風險預測表的有限狀態(tài)機,進行風險分析,具體流程詳見圖2。
評估和預測結(jié)果后,驅(qū)動監(jiān)控器會根據(jù)當前設備驅(qū)動程序進行調(diào)度,當處于危險狀態(tài)下,會調(diào)度設備驅(qū)動程序及其它相關依賴設備驅(qū)動程序進入對應的隔離子系統(tǒng)。
如果設備驅(qū)動程序運行穩(wěn)定,提高設備驅(qū)動程序的成熟程度。如果程序運行足夠穩(wěn)定而且成熟度足夠高,可以提升設備驅(qū)動程序到物理運行環(huán)境。
圖3為本發(fā)明的設備驅(qū)動風險預測表構(gòu)建流程圖,如圖3所示,本發(fā)明提供的設備驅(qū)動程序的預測隔離方法,其建立在設備驅(qū)動風險預測表的基礎上,其主要包括如下步驟:
首先,進行代碼復雜度評估。其中,代碼復雜度是進行源代碼靜態(tài)分析過程得到的評估值,其評估內(nèi)容包括:設備驅(qū)動程序的內(nèi)部算法、代碼的執(zhí)行路徑分支復雜度、硬件設備成熟程度等。根據(jù)靜態(tài)分析結(jié)果得到復雜度初步進行風險值加權(quán)。
其次,進行代碼分支成熟度分析:分析設備驅(qū)動程序執(zhí)行的分支路徑情況下算法成熟度。
接下來,進行設備驅(qū)動程序路徑分支覆蓋分析--能反映出設備驅(qū)動程序運行對系統(tǒng)哪些資源產(chǎn)生影響,然后分別對該分支路徑下涉及的CPU、內(nèi)存、I/O等信息進行風險分析。
接下來,利用設備驅(qū)動程序狀態(tài)轉(zhuǎn)換圖中涉及的設備驅(qū)動程序狀態(tài)構(gòu)建設備驅(qū)動程序狀態(tài)表。
繼續(xù),分別對系統(tǒng)資源狀況分析:CPU風險評估;內(nèi)存風險評估;I/O風險評估,并將積累風險發(fā)生充分必要條件存儲到風險條件表中,風險條件表用于描述風險發(fā)生的充分必要條件。
最后,根據(jù)驅(qū)動程序狀態(tài)表、系統(tǒng)資源狀態(tài)表以及風險條件表,構(gòu)建出有限狀態(tài)機。有限狀態(tài)機保存到設備驅(qū)動風險預測表中并建立索引。
較優(yōu)的,所述隔離子系統(tǒng)包括:CPU隔離子系統(tǒng)、內(nèi)存隔離子系統(tǒng)、I/O隔離子系統(tǒng)以及各個子系統(tǒng)的組合;這些隔離子系統(tǒng)使設備驅(qū)動程序在獨立隔離的環(huán)境中運行,從而有效降低有風險的設備驅(qū)動程序?qū)φw系統(tǒng)的影響。
較優(yōu)的,所述系統(tǒng)資源狀態(tài)表包括:內(nèi)存狀態(tài)表、信號鎖狀態(tài)表以及硬件設備狀態(tài)表;這些系統(tǒng)狀態(tài)信息用于反映當前整體系統(tǒng)的穩(wěn)定程度:如設內(nèi)存消耗是否導致整體系統(tǒng)內(nèi)存的緊缺,信號鎖是否導致整體系統(tǒng)CPU忙于鎖狀態(tài)判定,硬件設備是否物理正常工作,使用壽命是否到期。
較優(yōu)的,風險條件表用于描述風險發(fā)生的充分必要條件:如內(nèi)存數(shù)據(jù)被惡意修改導致系統(tǒng)數(shù)據(jù)不一致的充分必要條件--在訪問操作前后數(shù)據(jù)狀態(tài)了變化。
較優(yōu)的,所述步驟S5中,通過整合驅(qū)動程序狀態(tài)表、系統(tǒng)資源狀態(tài)表以及風險條件表,構(gòu)建出有限狀態(tài)機。有限狀態(tài)機保存到設備驅(qū)動風險預測表中并建立定位索引。從而在當前狀態(tài)下利用有限狀態(tài)機進一步預測可能存在的風險,阻止風險發(fā)生的條件,規(guī)避風險的發(fā)生。
圖4為本發(fā)明的設備驅(qū)動程序智能加固系統(tǒng)的整體框架圖,如圖4所示,本發(fā)明另外提供了一種設備驅(qū)動程序智能加固系統(tǒng),其包括驅(qū)動層,驅(qū)動層包括:
多個設備驅(qū)動程序;
驅(qū)動監(jiān)控器,用于監(jiān)控多個設備驅(qū)動程序,以調(diào)整設備驅(qū)動程序運行環(huán)境,從而有效降低設備驅(qū)動程序?qū)φw內(nèi)核的影響,使得系統(tǒng)穩(wěn)定運行;
其中,驅(qū)動監(jiān)控器包括驅(qū)動程序預測隔離模塊,其通過權(quán)利要求1-8所述的預測隔離方法確定設備驅(qū)動程序的運行環(huán)境;
隔離子系統(tǒng),用于使加載的設備驅(qū)動程序于其內(nèi)運行,從而有效降低有風險的設備驅(qū)動程序?qū)φw系統(tǒng)的影響。
較優(yōu)的,所述隔離子系統(tǒng)包括:CPU隔離子系統(tǒng)、內(nèi)存隔離子系統(tǒng)、I/O隔離子系統(tǒng)以及各個子系統(tǒng)的組合。
本發(fā)明中,所謂的各個子系統(tǒng)的組合,可以是三個子系統(tǒng)中任意兩個子系統(tǒng)的組合,也可以是三個子系統(tǒng)的組合。
具體的,對各隔離子系統(tǒng)的功能介紹如下:
CPU隔離子系統(tǒng):設備驅(qū)動程序使用隔離的邏輯CPU,所有CPU寄存器、指令集、CPU狀態(tài)等獨立于系統(tǒng)物理CPU,在CPU隔離子環(huán)境下運行的設備驅(qū)動程序無法直接修改系統(tǒng)物理CPU的狀態(tài),保證系統(tǒng)物理CPU數(shù)據(jù)穩(wěn)定性。
內(nèi)存隔離子系統(tǒng):設備驅(qū)動程序使用隔離的內(nèi)存區(qū)域,所有內(nèi)存尋址運算、內(nèi)存旁路緩沖、內(nèi)存權(quán)限等獨立于系統(tǒng)物理內(nèi)存,在內(nèi)存隔離子系統(tǒng)下運行的設備驅(qū)動程序無法直接修改系統(tǒng)物理內(nèi)存的數(shù)據(jù),保證系統(tǒng)物理內(nèi)存數(shù)據(jù)穩(wěn)定性。
I/O隔離子系統(tǒng):設備驅(qū)動程序使用隔離的I/O端口,DMA內(nèi)存數(shù)據(jù)交互,IO端口內(nèi)存映射,DMA重內(nèi)存映射等獨立于系統(tǒng)物理I/O系統(tǒng),在I/O隔離子系統(tǒng)下運行的設備驅(qū)動程序無法直接修改系統(tǒng)物理I/O端口的數(shù)據(jù),保證系統(tǒng)物理I/O工作的穩(wěn)定性。
通過隔離子系統(tǒng)的排列組合,可以更為細顆粒地控制設備驅(qū)動程序的運行系統(tǒng)。
圖5為本發(fā)明的設備驅(qū)動程序智能加固系統(tǒng)構(gòu)造流程圖,如圖5所示,本發(fā)明提供的設備驅(qū)動程序智能加固系統(tǒng),通過驅(qū)動程序靜態(tài)分析組件分析設備驅(qū)動程序源代碼建立:風險條件表、系統(tǒng)資源狀態(tài)表、設備驅(qū)動程序狀態(tài)表。通過整合驅(qū)動程序狀態(tài)表、系統(tǒng)資源狀態(tài)表以及風險條件表,構(gòu)建出有限狀態(tài)機并保存到設備驅(qū)動風險預測表中。設備驅(qū)動程序源代碼和內(nèi)核源代碼編譯出設備驅(qū)動程序;根據(jù)設備驅(qū)動風險預測表和編譯后的設備驅(qū)動程序進行修改,插入監(jiān)控設備驅(qū)動程序相關的驅(qū)動調(diào)度樁(stub)從而形成可加載的設備驅(qū)動程序。
本發(fā)明的有益效果是:
(1)可有效地規(guī)避設備驅(qū)動程序運行過程中風險的發(fā)生條件,從而使得系統(tǒng)穩(wěn)定運行;
(2)設備驅(qū)動程序執(zhí)行效率更快,有效并驗證過的設備驅(qū)動程序可以直接控制物理設備,無需在復雜低效的隔離環(huán)境中運行;
(3)可更為細顆粒度地控制設備驅(qū)動程序,例如,有的設備驅(qū)動程序(如內(nèi)核時鐘驅(qū)動)只要簡單I/O訪問,對內(nèi)存和CPU要求極低,因此無需建立復雜的虛擬化環(huán)境;
(4)不同設備驅(qū)動程序運行在獨立的環(huán)境中,彼此互不影響,可更為有效的隔離風險;
(5)能分析設備驅(qū)動程序間的依賴,自動分析與風險的設備驅(qū)動程序有關的其它設備驅(qū)動程序,從而能降低相依賴關聯(lián)的設備驅(qū)動程序帶來的隱患。
雖然本發(fā)明已利用上述較佳實施例進行說明,然其并非用以限定本發(fā)明的保護范圍,任何本領域技術(shù)人員在不脫離本發(fā)明的精神和范圍之內(nèi),相對上述實施例進行各種變動與修改仍屬本發(fā)明所保護的范圍,因此本發(fā)明的保護范圍以權(quán)利要求書所界定的為準。