一種運行驅動程序的方法及裝置製造方法
2023-05-28 15:58:01 1
一種運行驅動程序的方法及裝置製造方法
【專利摘要】本發明涉及驅動【技術領域】,提供了一種運行驅動程序的方法。其中方法包括:終端識別需要運行的驅動線程的類型;在識別出需要運行的驅動線程的類型為非受信任類型時,終端在非受信任模式下開始運行該非受信任類型的驅動線程;終端監測在非受信任模式下運行的該非受信任類型驅動線程是否需要執行受控操作;如果監測到在非受信任模式下運行的該非受信任類型驅動線程需要執行受控操作,終端對受控操作進行鑑權,並根據鑑權的結果對受控操作進行處理。使用本發明提供的方法和裝置,在保證驅動程序高效安全運行的前提下,提高了作業系統的穩定性。
【專利說明】—種運行驅動程序的方法及裝置
【技術領域】
[0001]本發明涉及驅動運行技術,具體涉及一種運行驅動程序的方法及裝置。
【背景技術】
[0002]隨著科學技術的發展,終端上附加的硬體設備層出不窮,常見的硬體設備有音效卡、網卡、顯卡以及印表機等,這些硬體設備都有對應的驅動程序,作業系統通過驅動程序才能控制相應的硬體設備進行工作。
[0003]為了提升驅動程序的運行效率,作業系統在內核態運行驅動程序,使得驅動程序可快速高效的完成操作指令。運行於內核態的驅動程序可以自由地訪問任何有效地址,直接進行埠訪問。
[0004]由於驅動程序在內核態運行時,可以自由地訪問任何有效地址,以及直接進行埠訪問,而終端上需要運行的驅動程序越來越多,不同廠商或機構提供的驅動程序的穩定性和安全性也是良莠不齊,如果驅動程序運行時與作業系統所需要的資源發生衝突,會導致作業系統崩潰,降低了作業系統的穩定性。
【發明內容】
[0005]本發明實施例提供一種運行驅動程序的方法和裝置,能夠避免作業系統的崩潰,從而提高作業系統的穩定性。
[0006]第一方面,本發明提供了一種運行驅動程序的方法,包括:
[0007]終端識別需要運行的驅動線程的類型;在識別出所述需要運行的驅動線程的類型為非受信任類型時,所述終端在非受信任模式下開始運行所述非受信任類型的驅動線程;所述終端監測在非受信任模式下運行的所述非受信任類型驅動線程是否需要執行受控操作;如果監測到在非受信任模式下運行的所述非受信任類型驅動線程需要執行受控操作,所述終端對所述受控操作進行鑑權,並根據所述鑑權的結果對所述受控操作進行處理。
[0008]結合第一方面,在第一方面的第一種實現方式中,所述終端對所述受控操作進行鑑權包括:
[0009]所述終端識別所述受控操作是否為可信操作;
[0010]所述根據所述鑑權的結果對所述受控操作進行處理具體包括:
[0011]如果識別出所述受控操作是可信操作,所述終端在受信任模式下執行所述受控操作;
[0012]如果識別出所述受控操作是不可信操作,所述終端終止所述需要執行受控操作的驅動線程。
[0013]結合第一方面的第一種實現方式,在第一方面的第二種實現方式中,所述終端終止所述需要執行受控操作的驅動線程前還包括:
[0014]所述終端對所述受控操作的對象進行識別;
[0015]在識別出所述受控操作的對象是預留的受保護內容時,才終止所述需要執行受控操作的驅動線程;若識別出所述受控操作的對象不是預留的受保護內容,所述終端在受信任模式下執行所述受控操作。
[0016]結合第一方面或第一方面的第一種實現方式或第一方面的第二種實現方式,在第一方面的第三種實現方式中,在所述終端識別需要運行的驅動線程的類型前還包括:
[0017]所述終端為所述非受信任類型驅動程序的驅動線程增加非受信任類型標記;
[0018]所述終端識別需要運行的驅動線程的類型包括:
[0019]所述終端根據所述非受信任類型標記來識別需要運行的驅動線程的類型。
[0020]結合第一方面或第一方面的第一種實現方式或第一方面的第二種實現方式或第一方面的第三種實現方式,在第一方面的第四種實現方式中,在所述終端識別需要運行的驅動線程的類型前還包括:
[0021 ] 所述終端識別驅動程序的類型;
[0022]在識別出所述驅動程序的類型為非受信任類型時,所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程;
[0023]在識別出所述驅動程序的類型為受信任類型時,所述終端在受信任模式下創建受信任類型驅動程序的驅動線程。
[0024]結合第一方面的第四種實現方式,在第一方面的第五種實現方式中,在所述終端識別需要運行的驅動線程的類型前還包括:
[0025]所述終端為所述受信任類型驅動程序的驅動線程增加受信任類型標記;
[0026]所述終端識別需要運行的驅動線程的類型包括:
[0027]所述終端根據所述受信任類型標記來識別需要運行的驅動線程的類型。
[0028]結合第一方面的第四種實現方式或第一方面的第五種實現方式,在第一方面的第六種實現方式中,在所述終端識別需要運行的驅動線程的類型後還包括:
[0029]在識別出所述需要運行的驅動線程為受信任類型時,所述終端在受信任模式下開始運行所述受信任類型的驅動線程。
[0030]結合第一方面的第四種實現方式或第一方面的第五種實現方式或第一方面的第五種實現方式或第一方面的第六種實現方式,在第一方面的第七種實現方式中,所述終端識別驅動程序的類型具體為:所述終端在受信任模式下識別所述驅動程序的類型;
[0031]所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程前進一步包括:所述終端從受信任模式切換至非受信任模式;
[0032]所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程後還包括:
[0033]所述終端從非受信任模式切換至受信任模式。
[0034]結合第一方面或第一方面的第一種實現方式或第一方面的第二種實現方式或第一方面的第三種實現方式或第一方面的第四種實現方式或第一方面的第五種實現方式或第一方面的第六種實現方式或第一方面的第七種實現方式,在第一方面的第八種實現方式中,所述終端識別驅動線程的類型具體為:所述終端在受信任模式下識別所述驅動線程的類型;
[0035]所述終端在非受信任模式下運行非受信任類型的驅動線程前進一步包括:所述終端從受信任模式切換至非受信任模式;
[0036]所述終端在非受信任模式下運行非受信任類型的驅動線程後還包括:[0037]所述終端從非受信任模式切換至受信任模式。
[0038]第二方面,本發明提供了一種運行驅動程序的裝置,包括:
[0039]識別單元,用於識別需要運行的驅動線程的類型;運行單元,用於在所述識別單元識別需要運行的驅動線程的類型為非受信任類型時,在非受信任模式下開始運行所述非受信任類型的驅動線程;監測單元,用於監測所述運行單元在非受信任模式下運行的所述非受信任類型的驅動線程是否需要執行受控操作;鑑權單元,用於在所述監測單元檢測到所述非受信任類型的驅動線程需要執行受控操作時,對所述受控操作進行鑑權;處理單元,用於根據所述鑑權單元的鑑權結果,對所述受控操作進行處理。
[0040]結合第二方面,在第二方面的第一種實現方式中,所述鑑權單元具體用於:
[0041]在所述監測單元監測到所述非受信任類型的驅動線程需要執行受控操作時,識別所述受控操作是否為可信操作;在所述受控操作不是可信操作時,對所述受控操作的對象進行識別,識別所述受控操作的對象是否為預留的受保護內容;
[0042]所述處理單元具體用於:在所述鑑權單元識別所述受控操作是可信操作時,所述處理單元允許所述受控操作執行;在所述鑑權單元識別所述受控操作是不可信行為,所述處理單元終止所述需要執行受控操作的驅動線程。
[0043]結合第二方面的第一種實現方式,在第二方面的第二種實現方式中,所述處理單元還用於:
[0044]在所述鑑權單元識別所述受控操作是不可信操作時且所述受控操作的對象是預留的受保護內容時,所述處理單元終止所述需要執行受控操作的驅動線程;在所述鑑權單元識別所述受控操作是不可信行為且所述受控操作的對象不是預留的受保護內容時,所述處理單元允許所述運行單元在受信任模式下執行所述受控操作。
[0045]結合第二方面或第二方面的第一種實現方式或第二方面的第二種實現方式,在第二方面第三種實現方式中,還包括:
[0046]第一標記單元,用於為所述非受信任類型驅動程序的驅動線程增加非受信任類型標記;
[0047]所述識別單元,具體用於根據非受信任類型標記來識別需要運行的驅動線程的類型。
[0048]結合第二方面或第二方面的第一種實現方式或第二方面的第二種實現方式或第二方面的第三種實現方式,在第二方面第四種實現方式中,還包括:
[0049]所述識別單元還用於識別驅動程序的類型;
[0050]所述裝置還包括:
[0051]創建單元,用於在所述識別單元識別出所述驅動程序的類型為非受信任類型時,在非受信任模式下創建非受信任類型驅動程序的驅動線程;在所述識別單元識別所述驅動程序的為受信任類型時,在受信任模式下創建受信任類型驅動程序的驅動線程。
[0052]結合第二方面的第四種實現方式,在第二方面的第五種實現方式中,還包括:
[0053]第二標記單元,用於為所述受信任類型驅動程序的驅動線程增加受信任類型標記。
[0054]所述識別單元,具體用於根據受信任類型標記來識別需要運行的驅動線程的類型。[0055]結合第二方面的第四種實現方式或第二方面的第五種實現方式,在第二方面的第六種實現方式中,
[0056]所述運行單元還用於:
[0057]在所述識別單元識別需要運行的驅動線程為受信任類型時,在受信任模式下運行所述受信任類型驅動線程。
[0058]結合第二方面的第四種實現方式或第二方面的第五種實現方式或第二方面的第六種實現方式,在第二方面的第七種實現方式中,所述識別單元,具體用於在受信任模式下識別所述驅動程序的類型;
[0059]所述裝置還包括第一切換單元,用於在所述識別單元識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式;在所述創建單元完成對非受信任類型驅動程序的驅動線程創建時,將所述處理模式從非受信任模式切換至受信任模式。
[0060]結合第二方面或第二方面的第一種實現方式或第二方面的第二種實現方式或第二方面的第三種實現方式或第二方面的第四種實現方式或第二方面的第五種實現方式或第二方面的第六種實現方式或第二方面的第七種實現方式,在第二方面的第八種實現方式中,
[0061]還包括第二切換單元,所述識別單元,具體用於在受信任模式下識別所述驅動線程的類型;
[0062]第二切換單元,在所述識別單元識別需要運行的驅動線程為非受信任類型時,將所述處理模式從受信任模式切換至非受信任模式;在所述運行單元完成非受信任類型驅動線程運行時,將所述處理模式從非受信任模式切換至受信任模式。
[0063]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動線程,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否發生受控操作,若發生受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的穩定性。
【專利附圖】
【附圖說明】
[0064]為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0065]圖1為本發明一個實施例提供的運行驅動程序的方法流程圖;
[0066]圖2為本發明另一個實施例提供的運行驅動程序的方法流程圖;
[0067]圖3為本發明另一個實施例提供的運行驅動程序的方法流程圖;
[0068]圖4為本發明一個實施例提供的運行驅動程序的裝置結構圖;
[0069]圖5為本發明另一個實施例提供的運行驅動程序的裝置結構圖;[0070]圖6為本發明另一個實施例提供的運行驅動程序的裝置結構圖;
[0071]圖7為本發明另一個實施例提供的運行驅動程序的裝置結構圖;
[0072]圖8為本發明另一個實施例提供的運行驅動程序的裝置結構圖;
[0073]圖9為本發明另一個實施例提供的運行驅動程序的裝置結構圖。
【具體實施方式】
[0074]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0075]圖1描述了本發明實施例的一種運行驅動程序的方法,該方法描述的是終端運行驅動程序的過程,終端可以是計算機、手機、遊戲機等設備,該方法具體包括:
[0076]101、終端識別需要運行的驅動線程的類型。
[0077]驅動程序的類型可以包括受信任類型和非受信任類型,對應的驅動線程的類型也可以包括受信任類型和非受信任類型。在本發明的一個實施例中,終端可以維護受信任類型的驅動程序的列表,從而可以根據該列表識別出驅動程序及其驅動線程的類型;終端也可以維護非受信任類型的驅動程序的列表,從而可以根據該列表識別出驅動程序及其驅動線程的類型。其中,受信任類型驅動程序可以是按照晶片廠商的設計研發出來的驅動程序、微軟視窗硬體質量實驗室(WHQL,Windows Hardware Quality Labs)認證的驅動程序、用戶信任的驅動程序等;非受信任類型驅動程序可以是硬體產品廠商發布的驅動程序、測試版驅動程序、發燒友修改版驅動程序等。
[0078]需要運行的驅動線程是指在線程隊列中等待獲取CPU時間片的驅動線程或者是剛獲得CPU時間片的驅動線程。
[0079]由於受信任類型的驅動線程和非受信任類型的驅動線程均在內存中,因此在運行驅動線程前,終端可以對需要運行的驅動線程的類型進行識別,以便根據驅動線程的類型進行相應的處理。
[0080]102、在識別出需要運行的驅動線程的類型為非受信任類型時,終端在非受信任模式下開始運行該非受信任類型的驅動線程。
[0081]在本發明的一個實施例中,作業系統在初始化時,利用硬體提供的頁表映射機制,將受信任模式下的頁表映射到非受信任模式下的頁表上,使得受信任模式下的頁表和非受信任模式下的頁表內容相同,並將非受信任模式下頁表中的受保護內容設置為只讀,因此,受信任模式和非受信任模式上下文環境相同,但是權限不同,其中,非受信任模式權限較低。在受信任模式和非受信任模式之間切換時,可以進行權限的切換。由於在非受信任模式下設置了受保護的內容,驅動程序在非受信任模式下運行時,不能對受保護內容進行修改,提高了作業系統的穩定性。
[0082]在本發明的一個實施例中,受信任模式是指中央處理器(CPU,CentralProcessing Unit)中優先級較高的模式,擁有較高的權限,例如,受信任模式可以是複雜指令集x86架構類型CPU中的root模式,也可以是進階精簡指令集(ARM, Advanced RISCMachine)架構類型CPU的系統模式等;非受信任模式也是CPU中優先級較高的模式,但是由於將非受信任模式下的頁表中受保護內容設置為只讀,從而在非受信任模式下不能對受保護內容進行修改,例如,非受信任模式可以是x86架構類型CPU中的non-root模式,也可以是ARM架構類型CPU的hypervisor模式等。
[0083]在本發明的一個實施例中,加載驅動程序也可以被認為是運行驅動程序。
[0084]在本發明的一個實施例中,終端識別出需要運行的驅動線程的類型為非受信任類型時,終端從受信任模式切換到非受信任模式,在非受信任模式下開始運行該驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,這些線程也是在非受信任模式下運行的。在非受信任模式下運行非受信任類型的驅動線程,可以保證受保護內容不被修改,提高了作業系統的穩定性。
[0085]103、終端監測在非受信任模式下運行的該非受信任類型驅動線程是否發生受控操作。
[0086]在本發明的一個實施例中,當非受信任類型的驅動程序在非受信任模式下運行時,為了保證作業系統能夠正常運行,監測驅動線程是否需要對受保護內容進行操作,如果驅動線程沒有對受保護內容進行操作,則正常執行;如果驅動線程需要對受保護內容進行修改,則發生受控操作。監測在非受信任模式下運行的驅動線程是否發生受控操作,能夠對可能產生的受控操作進行及時處理,提高作業系統的穩定性。
[0087]104、如果監測到在非受信任模式下運行的該非受信任類型驅動線程需要執行受控操作,終端對受控操作進行鑑權,並根據鑑權的結果對受控操作進行處理。
[0088]在本發明的一個實施例中,終端監測到在非受信任模式下運行的驅動線程需要對受保護內容進行修改,需要執行受控操作,終端從非受信任模式切換到受信任模式,對該受控操作進行鑑權識別,如果識別出該受控操作是可信行為,則允許該受控操作在受信任模式下繼續執行;如果識別出該受控操作不是可信操作,終端對該受控操作的對象進行識別,若識別出受控操作的對象是預留的受保護內容,例如可以是預留的受保護內存或常用的內存,該受控操作可能會引起致命問題,例如會導致作業系統崩潰或者引起應用程式中斷等,終端終止該需要執行受控操作的驅動線程;若識別出受控操作的對象是不是預留的受保護內容,終端在受信任模式下執行該受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0089]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中的非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權結果進行處理,在保證驅動程序高效運行的同時,也提高了作業系統的穩定性。
[0090]如圖2描述本發明實施例的一種運行驅動程序的方法。
[0091]201、終端識別驅動程序類型,在識別出該驅動程序的類型是非受信任類型時,則轉入202,在識別出該驅動程序的類型是受信任類型時,則轉入204。
[0092]具體地,驅動程序的類型可以包括受信任類型和非受信任類型。在本發明的一個實施例中,終端可以維護受信任類型的驅動程序的列表,從而可以根據該列表識別出驅動程序的類型。在本發明的另一個實施例中,終端可以通過驅動程序的數字籤名識別出驅動程序的類型。識別驅動程序的類型,後續可以根據不同的驅動程序類型進行分類處理。[0093]其中,受信任類型驅動程序可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序、用戶信任的驅動程序等;非受信任類型驅動程序可以是硬體產品廠商發布的驅動程序、測試版驅動程序、發燒友修改版驅動程序等。
[0094]202、終端在非受信任模式下創建非受信任類型驅動程序的驅動線程。
[0095]在本發明的一個實施例中,終端默認在受信任模式下運行,擁有較高權限,執行操作指令效率較高。驅動線程跟驅動程序的類型對應,包括受信任類型驅動線程和非受信任類型驅動線程。在識別驅動程序為非受信任類型驅動程序時,終端在非受信任模式下創建非受信任類型驅動程序的驅動線程時,會在非受信任模式的權限範圍內分配驅動線程所需的資源,避免與作業系統所需資源發生衝突,提高作業系統安全性。其中,終端可以默認在非受信任模式下運行,安全性會提高。
[0096]在本發明的一個實施例中,作業系統在初始化時,利用硬體提供的頁表映射機制,將受信任模式下的頁表映射到非受信任模式下的頁表上,使得受信任模式下的頁表和非受信任模式下的頁表內容相同,並將非受信任模式下頁表中的受保護內容設置為只讀,因此,受信任模式和非受信任模式上下文環境相同,但是權限不同,非受信任模式權限較低。進行受信任模式和非受信任模式切換時,可以進行權限的切換。由於在非受信任模式下設置了受保護的內容,驅動程序在非受信任模式運行時,若需要對受保護內容進行修改,便會發生受控操作。
[0097]在本發明的一個實施例中,受信任模式是指CPU中優先級較高的模式,擁有較高的權限,例如,受信任模式可以是複雜指令集x86架構類型CPU中的root模式,也可以是ARM架構類型CPU的系統模式等;非受信任模式也是CPU中優先級較高的模式,但是由於將非受信任模式下的頁表中受保護內容設置為只讀,從而在非受信任模式下不能對受保護內容進行修改,例如,非受信任模式可以是x86架構類型CPU中的non-root模式,也可以是ARM架構類型CPU的hypervisor模式等。
[0098]203、終端在非受信任模式下創建非受信任類型驅動程序的驅動線程時,為非受信任類型驅動程序的驅動線程增加非受信任類型標記,然後轉入206。
[0099]終端在非受信任模式下創建非受信任類型驅動程序的驅動線程時,為非受信任類型驅動程序的驅動線程增加非受信任類型標記;終端也可以在非受信任模式下創建非受信任類型驅動程序的驅動線程後,為非受信任類型的驅動程序的驅動線程增加非受信任類型標記,以便終端可以通過識別驅動線程的標記識別出驅動線程的類型。
[0100]在為非受信任類型驅動程序的驅動線程增加非受信任類型標記前,終端通過非受信任驅動程序的列表識別非受信任類型的驅動程序及其驅動線程。
[0101]在本發明的一個實施例中,終端為了區分非受信任類型驅動程序的驅動線程和受信任類型驅動程序的驅動線程,可以為非受信任類型驅動程序的驅動線程增加標記,也可以為受信任類型驅動程序的驅動線程增加標記,也可以為受信任類型驅動程序的驅動線程和受信任類型驅動程序的驅動線程都增加標記以示區分。
[0102]204、終端在受信任模式下創建受信任類型驅動程序的驅動線程。
[0103]終端在識別驅動程序的類型為受信任類型時,由於受信任類型可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序或是用戶信任的驅動程序,在受信任模式下創建該驅動程序的驅動線程不會對作業系統以及其他應用程式造成影響。[0104]其中,終端在受信任模式下擁有較高優先級,在受信任模式下創建受信任類型驅動程序的驅動線程效率較高。在本發明的另一個實施例中,在識別出音效卡驅動程序為受信任驅動類型時,在受信任模式下創建該音效卡驅動程序的驅動線程。
[0105]終端也可以在非受信任模式下創建受信任驅動程序的驅動線程,安全性會提高。
[0106]205、終端在受信任模式下創建受信任類型驅動程序的驅動線程時,為受信任類型驅動程序的驅動線程增加受信任類型標記。
[0107]終端在受信任模式下創建受信任類型驅動程序的驅動線程時,為受信任類型驅動程序的驅動線程增加受信任類型標記;終端也可以在受信任模式下創建受信任類型驅動程序的驅動線程後,為受信任類型驅動程序的驅動線程增加受信任類型標記,以便終端通過識別驅動線程的標記識別出驅動線程的類型。
[0108]在為受信任類型驅動程序的驅動線程增加受信任類型標記前,終端通過受信任驅動程序的列表識別受信任類型的驅動程序及其驅動線程。
[0109]206、終端識別需要運行的驅動線程的類型,若是受信任類型的驅動線程,則轉入207 ;若是非受信任類型的驅動線程,則轉入208。
[0110]需要運行的驅動線程是指在線程隊列中等待獲取CPU時間片的驅動線程或者是剛獲得CPU時間片的驅動線程。在本發明的一個實施例中,終端識別剛獲得CPU時間片的驅動線程或者在線程隊列中等待獲取CPU時間片的驅動線程。識別驅動線程的類型,後續可以根據驅動線程的類型進行分類處理。
[0111]207、終端在受信任模式下開始運行受信任類型的驅動線程。
[0112]受信任類型驅動程序可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序或是用戶信任的驅動程序,運行時一般不會與作業系統所需資源發生衝突,受信任類型驅動程序自身也不會錯誤。
[0113]終端識別需要運行的驅動線程的類型為受信任類型時,在受信任模式下開始運行該驅動線程。由於終端在受信任模式下擁有較高權限,運行受信任類型的驅動線程效率較高。受信任類型的驅動線程也可以在非受信任模式下運行,安全性會提高。
[0114]208、終端在非受信任模式下運行該非受信任類型的驅動線程,運行完畢後,從非受信任模式切換至受信任模式。
[0115]終端在識別需要運行的驅動線程的類型為非受信任類型時,由於非受信任類型驅動程序可以是硬體產品廠商發布的驅動程序、測試版驅動程序、發燒友修改版驅動程序等,為了提高作業系統的安全性,終端從受信任模式切換到非受信任模式,在非受信任模式下運行非受信任類型驅動線程,運行完畢後從受信任模式切換至非受信任模式。在受信任模式下運行時,執行操作指令的效率較高。
[0116]209、終端監測在非受信任模式下運行的非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,對該受控操作進行鑑權,並根據該鑑權的結果對該受控操作進行處理。
[0117]終端監測在非受信任模式下運行的非受信任類型的驅動線程是否因需要修改受保護內容而發生受控操作,若發生受控操作,終端從非受信任模式切換至受信任模式,在受信任模式下對該受控操作進行鑑權。
[0118]在本發明的一個實施例中,終端對受控操作進行鑑權,識別該受控操作是否為可信操作,若識別出該受控操作是可信操作,則允許該受控操作繼續執行;若識別出該受控操作是不可信操作,終端對該受控操作的對象進行識別,若識別出受控操作的對象是預留的受保護內容,例如可以是預留的受保護內存或常用的內存,該受控操作可能會引起致命問題,例如會導致作業系統崩潰或者引起應用程式中斷等,終端終止該需要執行受控操作的驅動線程;若識別出受控操作的對象是不是預留的受保護內容,終端在受信任模式下執行該受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0119]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動線程,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0120]如圖3描述本發明實施例的一種運行驅動程序的方法。
[0121]301、終端在受信任模式下識別驅動程序類型,在識別出該驅動程序的類型是非受信任類型時,則轉入302,在識別出該驅動程序的類型是受信任類型時,則轉入304。
[0122]在本發明的一個實施例中,終端默認在受信任模式下運行,擁有較高權限,執行操作指令效率較高。
[0123]具體地,驅動程序的類型可以包括受信任類型和非受信任類型。在本發明的一個實施例中,終端可以維護受信任類型的驅動程序的列表,從而可以根據該列表識別出驅動程序的類型。在本發明的另一個實施例中,終端可以通過驅動程序的數字籤名識別出驅動程序的類型。識別驅動程序的類型,後續可以根據不同的驅動程序類型進行分類處理。
[0124]其中,受信任類型驅動程序可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序、用戶信任的驅動程序等;非受信任類型驅動程序可以是硬體產品廠商發布的驅動程序、測試版驅動程序、發燒友修改版驅動程序等。
[0125]302、終端從受信任模式切換至非受信任模式,在非受信任模式下創建非受信任類型驅動程序的驅動線程。
[0126]驅動線程跟驅動程序的類型對應,包括受信任類型驅動線程和非受信任類型驅動線程。在識別驅動程序為非受信任類型驅動程序時,終端從受信任模式切換到非受信任模式,終端在非受信任模式下創建非受信任類型驅動程序的驅動線程時,會在非受信任模式的權限範圍內分配驅動線程所需的資源,避免與作業系統所需資源發生衝突,提高作業系統安全性。其中,終端可以默認在非受信任模式下運行,安全性會提高。
[0127]在本發明的一個實施例中,作業系統在初始化時,利用硬體提供的頁表映射機制,將受信任模式下的頁表映射到非受信任模式下的頁表上,使得受信任模式下的頁表和非受信任模式下的頁表內容相同,並將非受信任模式下頁表中的受保護內容設置為只讀,因此,受信任模式和非受信任模式上下文環境相同,但是權限不同,非受信任模式權限較低。進行受信任模式和非受信任模式切換時,可以進行權限的切換。由於在非受信任模式下設置了受保護的內容,驅動程序在非受信任模式運行時,若需要對受保護內容進行修改,便會發生受控操作。
[0128]在本發明的一個實施例中,受信任模式是CPU中優先級較高的模式,擁有較高的權限,例如,受信任模式可以是複雜指令集x86架構類型CPU中的root模式,也可以是ARM架構類型CPU的系統模式等;非受信任模式也是CPU中優先級較高的模式,但是由於將非受信任模式下的頁表中受保護內容設置為只讀,從而在非受信任模式下不能對受保護內容進行修改,例如,非受信任模式可以是x86架構類型CPU中的non-root模式,也可以是ARM架構類型CPU的hypervisor模式等。
[0129]303、終端在非受信任模式下創建非受信任類型驅動程序的驅動線程後,為非受信任類型驅動程序的驅動線程增加非受信任類型標記,並從非受信任模式切換至受信任模式,然後轉入306。
[0130]終端在非受信任模式下創建非受信任類型驅動程序的驅動線程後,為非受信任類型驅動程序的驅動線程增加非受信任類型標記,以便終端可以通過識別驅動線程的標記識別出驅動線程的類型。
[0131 ] 在本發明的一個實施例中,終端為了區分非受信任類型驅動程序的驅動線程和受信任類型驅動程序的驅動線程,可以為非受信任類型驅動程序的驅動線程增加標記,也可以為受信任類型驅動程序的驅動線程增加標記,也可以為受信任類型驅動程序的驅動線程和受信任類型驅動程序的驅動線程都增加標記以示區分。
[0132]304、終端在受信任模式下創建受信任類型驅動程序的驅動線程。
[0133]終端在識別驅動程序的類型為受信任類型時,由於受信任類型可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序或是用戶信任的驅動程序,在受信任模式下創建該驅動程序的驅動線程不會對作業系統以及其他應用程式造成影響。
[0134]其中,終端在受信任模式下擁有較高優先級,在受信任模式下創建受信任類型驅動程序的驅動線程效率較高。在本發明的另一個實施例中,在識別出音效卡驅動程序為受信任驅動類型時,在受信任模式下創建該音效卡驅動程序的驅動線程。
[0135]終端也可以在非受信任模式下創建受信任驅動程序的驅動線程,會提高作業系統的穩定性。
[0136]305、終端在受信任模式下創建受信任類型驅動程序的驅動線程後,為受信任類型驅動程序的驅動線程增加受信任類型標記。
[0137]終端在受信任模式下創建受信任類型驅動程序的驅動線程後,為受信任類型驅動程序的驅動線程增加受信任類型標記,以便終端通過識別驅動線程的標記識別出驅動線程的類型。
[0138]306、終端識別需要運行的驅動線程的類型,若是受信任類型的驅動線程,則轉入307 ;若是非受信任類型的驅動線程,則轉入308。
[0139]需要運行的驅動線程是指在線程隊列中等待獲取CPU時間片的驅動線程或者是剛獲得CPU時間片的驅動線程。在本發明的一個實施例中,終端識別剛獲得CPU時間片的驅動線程或者在線程隊列中等待獲取CPU時間片的驅動線程。識別驅動線程的類型,後續可以根據驅動線程的類型進行分類處理。
[0140]307、終端在受信任模式下開始運行受信任類型的驅動線程。
[0141]受信任類型驅動程序可以是按照晶片廠商的設計研發出來的驅動程序、WHQL認證的驅動程序或是用戶信任的驅動程序,運行時一般不會與作業系統所需資源發生衝突,受信任類型驅動程序自身也不會錯誤。
[0142]終端識別需要運行的驅動線程的類型為受信任類型時,在受信任模式下開始運行該驅動線程。由於終端在受信任模式下擁有較高權限,運行受信任類型的驅動線程效率較高。受信任類型的驅動線程也可以在非受信任模式下運行,會提高作業系統的穩定性。
[0143]308、終端從受信任模式切換至非受信任模式,在非受信任模式下運行非受信任類型的驅動線程,運行完畢後,從非受信任模式切換至受信任模式。
[0144]終端在識別需要運行的驅動線程的類型為非受信任類型時,由於非受信任類型驅動程序可以是硬體產品廠商發布的驅動程序、測試版驅動程序、發燒友修改版驅動程序等,為了提高作業系統的安全性,終端從受信任模式切換到非受信任模式,在非受信任模式下運行非受信任類型驅動線程,運行完畢後從受信任模式切換至非受信任模式。
[0145]309、終端監測在非受信任模式下運行的非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,對該受控操作進行鑑權,並根據該鑑權的結果對該受控操作進行處理。
[0146]終端監測在非受信任模式下運行的非受信任類型的驅動線程是否因需要修改受保護內容而發生受控操作,若發生受控操作,終端從非受信任模式切換至受信任模式,在受信任模式下對該受控操作進行鑑權。
[0147]在本發明的一個實施例中,終端對受控操作進行鑑權,識別該受控操作是否為可信操作,若識別出該受控操作是可信操作,則允許該受控操作繼續執行;若識別出該受控操作是不可信操作,終端對該受控操作的對象進行識別,若識別出受控操作的對象是預留的受保護內容,例如可以是預留的受保護內存或常用的內存,該受控操作可能會引起致命問題,例如會導致作業系統崩潰或者引起應用程式中斷等,終端終止該需要執行受控操作的驅動線程;若識別出受控操作的對象是不是預留的受保護內容,終端在受信任模式下執行該受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0148]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動線程,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的穩定性。
[0149]下面根據圖4描述本發明實施例的運行驅動程序的裝置40。如圖4所示,裝置40包括:
[0150]識別單元401,運行單元402,監測單元403,鑑權單元404,處理單元405。
[0151]識別單元401,用於識別需要運行的驅動線程的類型。
[0152]在本發明的一個實施例中,識別單元401識別需要運行的驅動線程的類型。其中,識別單元401可以是通過對比非受信任類型驅動線程的列表,判斷該需要運行的驅動線程是否為非受信任類型的驅動線程;也可以通過對比受信任類型驅動線程的列表,判斷該需要運行的驅動線程是否為受信任類型的驅動線程。
[0153]運行單元402,用於在識別單元401識別需要運行的驅動線程為非受信任類型時,則在非受信任模式下運行該需要運行的驅動線程。
[0154]在本發明的一個實施例中,在識別單元401識別需要運行的驅動線程為非受信任類型時,運行單元402則在非受信任模式下根據非受信任模式對應的權限運行非受信任類型的驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,運行單元402在非受信任模式下運行這些線程。在非受信任模式下運行非受信任類型的驅動線程可以提高作業系統的穩定性。
[0155]監測單元403,用於監測運行單元403在非受信任模式下運行的非受信任類型的驅動線程是否發生受控操作。
[0156]在本發明的一個實施例中,非受信任類型的驅動線程在非受信任模式下運行時,監測單元403監測運行單元402運行的非受信任類型的驅動線程是否需要修改受保護內容,若需要修改受保護的內容則會發生受控操作。監測在非受信任模式下運行的驅動線程是否發生受控操作,能夠對可能產生的受控操作進行及時處理,提高作業系統的穩定性。
[0157]鑑權單元404,用於在監測單元403監測到非受信任類型的驅動線程需要執行受控操作時,識別該受控操作是否為可信操作;在該受控操作不是可信操作時,對該受控操作的對象進行識別,識別該受控操作的對象是否為預留的受保護內容。
[0158]在本發明的一個實施例中,在監測單元403監測到在非受信任模式下運行的非受信任類型的驅動線程需要執行受控操作時,鑑權單元404識別該受控操作是否為可信操作,在該受控操作不是可信操作時,對該受控操作的對象進行識別,識別該受控操作的對象是否為預留的受保護內容。根據識別的結果,以便做出相應的處理。
[0159]處理單元405,用於根據鑑權單元404的鑑權結果,對受控操作進行處理。
[0160]在本發明的一個實施例中,在鑑權單元404識別出該受控操作是可信操作時,處理單元405允許受控操作繼續執行;在鑑權單元404識別出該受控操作是不可信操作且該受控操作的對象是預留的受保護內容,例如可以是預留的受保護內存或常用的內存,該受控操作可能會引起致命問題,例如會導致作業系統崩潰或者引起應用程式中斷等,處理單元405終止該需要執行受控操作的驅動線程;若識別出受控操作的對象是不是預留的受保護內容,處理單元405允許運行單元402在受信任模式下執行該受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0161]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動線程,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0162]圖5描述了本發明另一個實施例提供的運行驅動裝置的結構,包括:
[0163]識別單元501,創建單元502,第一標記單元503,第二標記單元504,運行單元505,第一切換單元506,第二切換單元507,監測單元508,鑑權單元509,處理單元510。
[0164]識別單元501,用於識別驅動程序的類型;識別需要運行的驅動線程的類型。
[0165]在本發明的一個實施例中,識別單元501識別驅動程序類型是否為非受信任類型的驅動程序。其中,識別單元501可以是通過識別驅動程序的數字籤名而識別出驅動程序的類型。根據識別出的驅動程序的類型,後續可以對不同類型的驅動程序進行相應的處理。
[0166]創建單元502,用於在識別單元501識別驅動程序為非受信任類型時,在非受信任模式下創建該非受信任類型驅動程序的驅動線程;用於在識別單元501識別驅動程序為受信任類型時,在受信任模式下創建該受信任類型驅動程序的驅動線程。
[0167]在本發明的一個實施例中,在識別單元501識別出驅動程序的類型為非受信任類型時,創建單元502在非受信任模式下將該驅動程序的代碼加載到內存中,在非受信任模式對應的權限內給該驅動程序分配資源,創建非受信任類型驅動程序的驅動線程,可以避免與內核所需的資源發生衝突,提高作業系統的穩定性。
[0168]在本發明的另一個實施例中,在識別單元501識別出驅動程序的類型為受信任類型時,創建單元502在受信任模式下將該驅動程序的代碼加載到內存中,在受信任模式對應的權限內給該驅動程序分配資源,由於在受信任模式下權限較高,創建受信任類型驅動程序的驅動線程的效率較高。
[0169]第一標記單元503,用於在創建單元502在非受信任模式下創建非受信任類型驅動程序的驅動線程時,為非受信任類型驅動程序的驅動線程增加非受信任類型的標記。
[0170]識別單元501可以通過識別驅動線程的標記識別非受信任類型驅動線程。
[0171]第二標記單元504,用於在創建單元502在受信任模式下創建受信任類型驅動程序的驅動線程時,為受信任類型驅動程序的驅動線程增加受信任類型的標記。
[0172]識別單元501通過識別驅動線程的標記識別受信任類型驅動線程。
[0173]運行單元505,用於在識別單元501識別驅動線程為非受信任類型時,在非受信任模式下開始運行非受信任類型的驅動線程;用於在識別單元501識別驅動線程為受信任類型時,在受信任模式下開始運行受信任類型的驅動線程。
[0174]在本發明的一個實施例中,在識別單元501識別創建單元502創建的驅動線程為非受信任類型時,運行單元505在非受信任模式下根據非受信任模式對應的權限運行非受信任類型的驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,運行單元505在非受信任模式下運行這些線程。在非受信任模式下運行非受信任類型的驅動線程會提高作業系統的穩定。
[0175]在本發明的另一個實施例中,在識別單元501識別創建單元502創建的驅動線程為受信任類型時,運行單元505在受信任模式下根據受信任模式對應的權限運行受信任類型的驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,運行單元505在受信任模式下運行這些線程。在受信任模式運行受信任類型的驅動程序,運行效率會很高。
[0176]第一切換單元506,用於在識別單元501識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式;在創建單元502完成對非受信任類型驅動程序的驅動線程創建時,將該處理模式從非受信任模式切換至受信任模式。
[0177]在識別單元501識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式,創建單元502在非受信任模式下創建非受信任類型驅動程序的驅動線程,會提高作業系統安全性。其中,處理模式包括受信任模式和非受信任模式。
[0178]在創建單元502完成對非受信任類型驅動程序的驅動線程創建時,將該處理模式從非受信任模式切換至受信任模式,在受信任模式下運行時,執行操作指令的效率較高。
[0179]第二切換單元507,在識別單元501識別需要運行的驅動線程為非受信任類型時,將該處理模式從受信任模式切換至非受信任模式;在運行單元505完成非受信任類型驅動線程運行時,將非受信任模式切換至受信任模式。
[0180]在識別單元501識別需要運行的驅動線程為非受信任類型時,將受信任模式切換至非受信任模式,在非受信任模式下運行非受信任驅動線程可以提高作業系統的可靠性。
[0181]在運行單元505完成非受信任類型驅動線程運行時,從非受信任模式切換至受信任模式,在受信任模式下運行時,執行操作指令的效率較高。
[0182]監測單元508,用於監測運行單元508在非受信任模式下運行的非受信任類型的驅動線程是否發生受控操作。
[0183]在本發明的一個實施例中,非受信任類型的驅動線程在非受信任模式下運行時,監測單元508監測非受信任類型的驅動線程是否需要修改受保護的內容而發生受控操作。監測在非受信任模式下運行的驅動線程是否發生受控操作,能夠對可能產生的受控操作進行及時處理,提高作業系統的穩定性。
[0184]鑑權單元509,用於在監測單元508監測到非受信任類型的驅動線程需要執行受控操作時,識別該受控操作是否為可信操作;在該受控操作不是可信操作時,對該受控操作的對象進行識別,識別該受控操作的對象是否為預留的受保護內容。
[0185]在本發明的一個實施例中,監測單元508監測到非受信任類型的驅動線程需要執行受控操作時,鑑權單元509識別該受控操作是否為可信操作,在該受控操作不是可信操作時,對該受控操作的對象進行識別,識別該受控操作的對象是否為預留的受保護內容。根據識別的結果,以便做出相應的處理。
[0186]處理單元510,用於根據鑑權單元510的鑑權結果,對受控操作進行處理。
[0187]在本發明的一個實施例中,在鑑權單元509識別出該受控操作是可信操作時,處理單元510允許受控操作繼續執行;在鑑權單元509識別出該受控操作是不可信操作且該受控操作的對象是預留的受保護內容,例如是預留的受保護的內存,處理單元510終止該需執行受控操作的驅動線程;若識別出該受控操作的對象不是預留的受保護的內容,處理單元510允許運行單元505在受信任模式下繼續執行受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0188]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動程序,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0189]圖6描述了本發明另一個實施例提供的運行驅動裝置的結構,包括:[0190]識別單元601,創建單元602,第一標記單元603,第二標記單元604,運行單元605,第一切換單元606,第二切換單元607,監測單元608,鑑權單元609,處理單元610。
[0191]識別單元601,用於識別驅動程序的類型;識別需要運行的驅動線程的類型。
[0192]在本發明的一個實施例中,識別單元601識別驅動程序類型是否為非受信任類型的驅動程序。其中,識別單元601可以是通過識別驅動程序的數字籤名而識別出驅動程序的類型。根據識別出的驅動程序的類型,後續可以對不同類型的驅動程序進行相應的處理。
[0193]創建單元602,用於在識別單元601識別驅動程序為非受信任類型時,在非受信任模式下創建該非受信任類型驅動程序的驅動線程;用於在識別單元601識別驅動程序為受信任類型時,在受信任模式下創建該受信任類型驅動程序的驅動線程。
[0194]在本發明的一個實施例中,在識別單元601識別出驅動程序的類型為非受信任類型時,創建單元602在非受信任模式下將該驅動程序的代碼加載到內存中,在非受信任模式對應的權限內給該驅動程序分配資源,創建非受信任類型驅動程序的驅動線程,可以避免與內核所需的資源發生衝突,提高了作業系統的可靠性。
[0195]在本發明的另一個實施例中,在識別單元601識別出驅動程序的類型為受信任類型時,創建單元602在受信任模式下將該驅動程序的代碼加載到內存中,在受信任模式對應的權限內給該驅動程序分配資源,由於在受信任模式下權限較高,創建受信任類型驅動程序的驅動線程的效率較高。
[0196]第一標記單元603,用於在創建單元602在非受信任模式下創建非受信任類型驅動程序的驅動線程創建後,為非受信任類型驅動程序的驅動線程增加非受信任類型的標記。
[0197]識別單元601可以通過識別驅動線程的標記識別非受信任類型驅動線程。
[0198]第二標記單元604,用於在創建單元602在受信任模式下創建受信任類型驅動程序的驅動線程創建後,為受信任類型驅動程序的驅動線程增加受信任類型的標記。
[0199]識別單元601通過識別驅動線程的標記識別受信任類型驅動線程。
[0200]運行單元606,用於在識別單元601識別創建單元602創建的驅動線程為非受信任類型時,在非受信任模式下開始運行非受信任類型的驅動線程;用於在識別單元601識別創建單元602創建的驅動線程為受信任類型時,在受信任模式下開始運行受信任類型的驅動線程。
[0201]在本發明的一個實施例中,在識別單元601識別創建單元602創建的驅動線程為非受信任類型時,運行單元605在非受信任模式下根據非受信任模式對應的權限運行非受信任類型的驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,運行單元605在非受信任模式下運行這些線程。在非受信任模式下運行非受信任類型的驅動線程會提高作業系統的穩定。
[0202]在本發明的另一個實施例中,在識別單元601識別創建單元602創建的驅動線程為受信任類型時,運行單元605在受信任模式下根據受信任模式對應的權限運行受信任類型的驅動線程,驅動線程根據驅動程序的代碼會創建一些線程,運行單元605在受信任模式下運行這些線程。在受信任模式運行受信任類型的驅動程序,運行效率會很高。
[0203]第一切換單元606,用於在識別單元601識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式;在創建單元602完成對非受信任類型驅動程序的驅動線程創建時,將處理模式從非受信任模式切換至受信任模式。
[0204]在識別單元601識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式,創建單元602在非受信任模式下創建非受信任類型驅動程序的驅動線程,會提高作業系統可靠性。其中,處理模式包括受信任模式和非受信任模式。
[0205]在創建單元602完成對非受信任類型驅動程序的驅動線程創建時,將非受信任模式切換至受信任模式,在受信任模式下運行時,執行操作指令的效率較高。
[0206]第二切換單元607,在識別單元601識別需要運行的驅動線程為非受信任類型時,將處理模式從受信任模式切換至非受信任模式;在運行單元605完成非受信任類型驅動線程運行時,將處理模式從非受信任模式切換至受信任模式。
[0207]在識別單元601識別需要運行的驅動線程為非受信任類型時,將受信任模式切換至非受信任模式,在非受信任模式下運行非受信任驅動線程可以提高作業系統的可靠性。
[0208]在運行單元605完成非受信任類型驅動線程運行時,從非受信任模式切換至受信任模式,在受信任模式下運行時,執行操作指令的效率較高。
[0209]監測單元608,用於監測運行單元608在非受信任模式下運行的非受信任類型的驅動線程是否發生受控操作。
[0210]在本發明的一個實施例中,非受信任類型的驅動線程在非受信任模式下運行時,監測單元608監測非受信任類型的驅動線程是否需要修改受保護的內容而發生受控操作。監測在非受信任模式下運行的驅動線程是否發生受控操作,可以對可能產生的受控操作進行及時處理,提高作業系統的可靠性。
[0211]鑑權單元609,用於在監測單元608監測到非受信任類型的驅動線程需要執行受控操作時,對受控操作進行鑑權。
[0212]在本發明的一個實施例中,監測單元608監測到非受信任類型的驅動線程需要執行受控操作時,鑑權單元609識別該受控操作是否為可信操作,在該受控操作不是可信操作時,對該受控操作的對象進行識別,識別該受控操作的對象是否為預留的受保護內容。根據識別的結果,以便做出相應的處理。
[0213]處理單元610,用於根據鑑權單元610的鑑權結果,對受控操作進行處理。
[0214]在本發明的一個實施例中,在鑑權單元609識別出該受控操作是可信操作時,處理單元610允許受控操作繼續執行;在鑑權單元609識別出該受控操作是不可信操作且該受控操作的對象是預留的受保護內容,例如是預留的受保護的內存或常用的內存,處理單元610終止該需執行受控操作的驅動線程;若識別出該受控操作的對象不是預留的受保護的內容,處理單元610允許運行單元605在受信任模式下繼續執行受控操作。根據鑑權結果,對受控操作進行分類處理,提高了作業系統的穩定性。
[0215]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動程序,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0216]圖7描述了本發明另一個實施例提供的運行驅動設備的結構,包括至少一個處理器701 (例如CPU),存儲器702,內存703和至少一個通信總線704,用於實現這些裝置之間的連接通信。處理器701用於執行存儲器702中存儲的可執行模塊,例如電腦程式。存儲器702可能包含高速隨機存取存儲器(RAM:Random Access Memory),也可能還包括非不穩定的存儲器(non-volatile memory),例如至少一個磁碟存儲器。通過至少一個處理器訪問內存中的地址。
[0217]在一些實施方式中,存儲器702存儲了程序7021,程序7021可以被處理器701執行,這個程序包括:終端識別需要運行的驅動線程的類型;如果識別出需要運行的驅動線程的類型為非受信任類型,終端在非受信任模式下運行該非受信任類型的驅動線程;終端監測在非受信任模式下運行的驅動線程是否發生受控操作;如果監測到在非受信任模式下運行的驅動線程發生受控操作,終端對受控操作進行鑑權,並根據鑑權的結果對受控操作進行處理。具體的實施步驟與圖1所示的實施例相同,此處不再贅述。
[0218]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0219]圖8描述了本發明另一個實施例提供的運行驅動設備的結構,包括至少一個處理器801 (例如CPU),存儲器802,內存803和至少一個通信總線804,用於實現這些裝置之間的連接通信。處理器801用於執行存儲器802中存儲的可執行模塊,例如電腦程式。存儲器802可能包含高速隨機存取存儲器(RAM:Random Access Memory),也可能還包括非不穩定的存儲器(non-volatile memory),例如至少一個磁碟存儲器。通過至少一個處理器訪問內存中的地址。
[0220]在一些實施方式中,存儲器802存儲了程序8021,程序8021可以被處理器801執行,這個程序包括:終端識別驅動程序的類型;在識別出驅動程序的類型為非受信任類型時,在非受信任模式下創建該非受信任類型驅動程序的驅動線程,在創建非受信任類型驅動程序的驅動線程時為該驅動線程增加非受信任類型標記;在識別出驅動程序的類型為受信任類型時,在受信任模式下創建受信任類型驅動程序的驅動線程,並為該線程增加受信任類型標記;終端識別需要運行的驅動線程的類型;如果識別出需要運行的驅動線程的類型為受信任類型,終端在受信任模式下運行受信任類型的驅動線程;如果識別出需要運行的驅動線程的類型為非受信任類型,在非受信任模式下運行非受信任類型的驅動線程;終端監測在非受信任模式下運行的該非受信任類型驅動線程是否發生受控操作;如果監測到在非受信任模式下運行的該非受信任類型驅動線程發生受控操作,終端對該受控操作進行鑑權,並根據鑑權的結果對受控操作進行處理。具體的實施步驟與圖2所示的實施例相同,此處不再贅述。
[0221]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動程序,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0222]圖9描述了本發明另一個實施例提供的運行驅動設備的結構,包括至少一個處理器901 (例如CPU),存儲器902,內903,和至少一個通信總線904,用於實現這些裝置之間的連接通信。處理器901用於執行存儲器902中存儲的可執行模塊,例如電腦程式。存儲器902可能包含高速隨機存取存儲器(RAM:Random Access Memory),也可能還包括非不穩定的存儲器(non-volatile memory),例如至少一個磁碟存儲器。通過至少一個處理器訪問內存中的地址。
[0223]在一些實施方式中,存儲器902存儲了程序9021,程序9021可以被處理器901執行,這個程序包括:終端識別驅動程序的類型;在識別出驅動程序的類型為非受信任類型時,則終端從受信任模式切換至非受信任模式,在非受信任模式下創建該非受信任類型驅動程序的驅動線程,創建完畢後,為該驅動線程增加非受信任類型標記,並從非受信任模式切換至受信任模式;在識別出驅動程序的類型為受信任類型時,則終端在受信任模式下創建受信任類型驅動程序的驅動線程,並為該線程增加受信任類型標記;終端識別需要運行的驅動線程的類型;如果識別出需要運行的驅動線程的類型為受信任類型,終端在受信任模式下運行受信任類型的驅動線程;如果識別出需要運行的驅動線程的類型為非受信任類型,終端從受信任模式切換到非受信任模式,在非受信任模式下運行該非受信任類型的驅動線程;終端監測在非受信任模式下運行的該非受信任類型驅動線程是否發生受控操作;如果監測到在非受信任模式下運行的驅動線程發生受控操作,終端對該受控操作進行鑑權,並根據鑑權的結果對受控操作進行處理。具體的實施步驟與圖3所示的實施例相同,此處不再贅述。
[0224]從本發明實施例提供的以上技術方案可以看出,使用本發明實施例提供的運行驅動程序的方法及裝置,根據識別的驅動程序的類型,在受信任模式下創建受信任類型驅動程序的驅動線程,並在受信任模式下運行該受信任類型的驅動程序,在保證驅動程序安全運行的情況下,提高了作業系統的運行效率;進一步,在非受信任模式下創建非受信任類型驅動程序的驅動線程,在非受信任模式下運行該非受信任類型的驅動線程,並監測運行中非受信任類型的驅動線程是否需要執行受控操作,若需要執行受控操作,則對受控操作進行鑑權,並根據鑑權的結果進行處理,在保證驅動程序的高效運行的同時,也提高了作業系統的可靠性。
[0225]需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。
[0226]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體來完成,上述的程序可存儲於一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,上述的存儲介質可為磁碟、光碟、只讀存儲記憶體(ROM =Read-Only Memory)或隨機存儲記憶體(RAM =RandomAccess Memory)等。
[0227] 本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其思想;同時,對於本領域的一般技術人員,依據本發明的思想,在【具體實施方式】及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
【權利要求】
1.一種運行驅動程序的方法,其特徵在於,所述方法包括: 終端識別需要運行的驅動線程的類型; 在識別出所述需要運行的驅動線程的類型為非受信任類型時,所述終端在非受信任模式下開始運行所述非受信任類型驅動線程; 所述終端監測在非受信任模式下運行的所述非受信任類型驅動線程是否需要執行受控操作; 如果監測到在非受信任模式下運行的所述非受信任類型驅動線程需要執行受控操作,所述終端對所述受控操作進行鑑權,並根據所述鑑權的結果對所述受控操作進行處理。
2.根據權利要求1所述的運行驅動程序的方法,其特徵在於,所述終端對所述受控操作進行鑑權包括: 所述終端識別所述受控操作是否為可信操作; 所述根據所述鑑權的結果對所述受控操作進行處理具體包括: 如果識別出所述受控操作是可信操作,所述終端在受信任模式下執行所述受控操作;如果識別出所述受控操作是不可信操作所述終端終止所述需要執行受控操作的驅動線程。
3.如權利要求2所述的運行驅動程序的方法,其特徵在於,所述終端終止所述需要執行受控操作的驅動線程前還包括: 所述終端對所述受控操作的對象進行識別; 在識別出所述受控操作的對象是預留的受保護內容時,才終止所述需要執行受控操作的驅動線程;若識別出所述受控操`作的對象不是預留的受保護內容,所述終端在受信任模式下執行所述受控操作。
4.根據權利要求1至3任一所述的運行驅動程序的方法,其特徵在於,在所述終端識別需要運行的驅動線程的類型前還包括: 所述終端為所述非受信任類型驅動程序的驅動線程增加非受信任類型標記; 所述終端識別需要運行的驅動線程的類型包括: 所述終端根據所述非受信任類型標記來識別需要運行的驅動線程的類型。
5.根據權利要求1至4任一所述的運行驅動程序的方法,其特徵在於,在所述終端識別需要運行的驅動線程的類型前還包括: 所述終端識別驅動程序的類型; 在識別出所述驅動程序的類型為非受信任類型時,所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程; 在識別出所述驅動程序的類型為受信任類型時,所述終端在受信任模式下創建受信任類型驅動程序的驅動線程。
6.根據權利要求5所述的運行驅動程序的方法,其特徵在於,在所述終端識別需要運行的驅動線程的類型前還包括: 所述終端為所述受信任類型驅動程序的驅動線程增加受信任類型標記; 所述終端識別需要運行的驅動線程的類型包括: 所述終端根據所述受信任類型標記來識別需要運行的驅動線程的類型。
7.根據權利要求5或6所述的運行驅動程序的方法,其特徵在於,在所述終端識別需要運行的驅動線程的類型後還包括: 在識別出所述需要運行的驅動線程為受信任類型時,所述終端在受信任模式下開始運行所述受信任類型驅動線程。
8.根據權利要求5至7任一所述的運行驅動程序的方法,其特徵在於,所述終端識別需要運行的驅動程序的類型具體為:所述終端在受信任模式下識別所述驅動程序的類型; 所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程前進一步包括:所述終端從受信任模式切換至非受信任模式; 所述終端在非受信任模式下創建非受信任類型驅動程序的驅動線程後還包括: 所述終端從非受信任模式切換至受信任模式。
9.根據權利要求1至8任一所述的運行驅動程序的方法,其特徵在於,所述終端識別需要運行的驅動線程的類型具體為:所述終端在受信任模式下識別所述驅動線程的類型; 所述終端在非受信任模式下運行非受信任類型的驅動線程前進一步包括:所述終端從受信任模式切換至非受信任模式; 所述終端在非受信任模式下運行非受信任類型的驅動線程後還包括: 所述終端從非受信任模式切換至受信任模式。
10.一種運行驅動程序的裝置,其特徵在於,包括: 識別單元,用於識別需要運行的驅動線程的類型; 運行單元,用於在所述識別單元識別需要運行的驅動線程的類型為非受信任類型時,在非受信任模式下開始運行所述非受信任類型驅動線程; 監測單元,用於監測所述運行單元在非受信任模式下運行的所述非受信任類型驅動線程是否需要執行受控操作; 鑑權單元,用於在所述監測單元監測到所述非受信任類型驅動線程需要執行受控操作時,對所述受控操作進行鑑權; 處理單元,用於根據所述鑑權單元的鑑權結果,對所述受控操作進行處理。
11.根據權利要求10所述的運行驅動程序的裝置,其特徵在於,所述鑑權單元具體用於: 在所述監測單元監測到所述非受信任類型驅動線程需要執行受控操作時,識別所述受控操作是否為可信操作; 所述處理單元具體用於:在所述鑑權單元識別所述受控操作是可信操作時,所述處理單元允許所述受控操作執行;在所述鑑權單元識別所述受控操作是不可信操作時,所述處理單元終止所述需要執行受控操作的驅動線程。
12.根據權利要求11所述的運行驅動程序的裝置,其特徵在於,所述處理單元還用於: 在所述鑑權單元識別所述受控操作是不可信操作時且所述受控操作的對象是預留的受保護內容時,所述處理單元終止所述需要執行受控操作的驅動線程;在所述鑑權單元識別所述受控操作是不可信行為且所述受控操作的對象不是預留的受保護內容時,所述處理單元允許所述運行單元在受信任模式下執行所述受控操作。
13.根據權利要求10至12任一所述的運行驅動程序的裝置,其特徵在於,還包括: 第一標記單元,用於為所述非受信任類型驅動程序的驅動線程增加非受信任類型標記;所述識別單元,具體用於根據非受信任類型標記來識別需要運行的驅動線程的類型。
14.根據權利要求10至13任一所述的運行驅動程序的裝置,其特徵在於,所述識別單元還用於識別驅動程序的類型; 所述裝置還包括: 創建單元,用於在所述識別單元識別出所述驅動程序的類型為非受信任類型時,在非受信任模式下創建非受信任類型驅動程序的驅動線程;在所述識別單元識別所述驅動程序的為受信任類型時,在受信任模式下創建受信任類型驅動程序的驅動線程。
15.根據權利要求14所述的運行驅動程序的裝置,其特徵在於,還包括: 第二標記單元,用於為所述受信任類型驅動程序的驅動線程增加受信任類型標記。 所述識別單元,具體用於根據受信任類型標記來識別需要運行的驅動線程的類型。
16.根據權利要求14或15所述的運行驅動程序的裝置,其特徵在於,所述運行單元還用於: 在所述識別單元識別需要運行的驅動線程為受信任類型時,在受信任模式下運行所述受信任類型驅動線程。
17.根據權利要求14至16任一所述的運行驅動程序的裝置,其特徵在於,所述識別單元,具體用於在受信任模式 下識別所述驅動程序的類型; 所述裝置還包括第一切換單元,用於在所述識別單元識別驅動程序為非受信任類型時,將處理模式從受信任模式切換至非受信任模式;在所述創建單元完成對非受信任類型驅動程序的驅動線程創建時,將所述處理模式從非受信任模式切換至受信任模式。
18.根據權利要求10至17任一所述的運行驅動程序的裝置,其特徵在於,還包括第二切換單元,所述識別單元,具體用於在受信任模式下識別所述驅動線程的類型; 第二切換單元,在所述識別單元識別需要運行的驅動線程為非受信任類型時,將所述處理模式從受信任模式切換至非受信任模式;在所述運行單元完成非受信任類型驅動線程運行時,將所述處理模式從非受信任模式切換至受信任模式。
【文檔編號】G06F21/51GK103679006SQ201310511219
【公開日】2014年3月26日 申請日期:2013年10月25日 優先權日:2013年10月25日
【發明者】劉相斌, 羅站城, 侯海濤 申請人:華為技術有限公司