硬件資源訪問(wèn)方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供一種硬件資源訪問(wèn)方法、裝置及操作系統(tǒng),本發(fā)明方法,包括:配置一條或多條用于訪問(wèn)硬件的特權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,所述應(yīng)用程序在代碼層面調(diào)用了位于用戶態(tài)且封裝有所述特權(quán)指令的特權(quán)應(yīng)用程序編程接口API;執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令,從而使得所述應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。本發(fā)明實(shí)施例,通過(guò)設(shè)定直接訪問(wèn)硬件資源的特權(quán)指令并封裝成API部署在用戶空間,以實(shí)現(xiàn)降低訪問(wèn)硬件資源的系統(tǒng)開(kāi)銷(xiāo),提高處理效率。
【專(zhuān)利說(shuō)明】硬件資源訪問(wèn)方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù),尤其涉及一種硬件資源訪問(wèn)方法及裝置。
【背景技術(shù)】
[0002] 操作系統(tǒng)(Operating System,簡(jiǎn)稱(chēng)0S)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì) 算機(jī)程序,位于底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過(guò)操作系統(tǒng)的用戶界 面,輸入命令。操作系統(tǒng)則對(duì)命令進(jìn)行解釋?zhuān)?qū)動(dòng)硬件設(shè)備,實(shí)現(xiàn)用戶要求。訪問(wèn)硬件的響 應(yīng)時(shí)間是判斷操作系統(tǒng)性能的最重要的一個(gè)指標(biāo)。
[0003] 現(xiàn)有的操作系統(tǒng)中,操作系統(tǒng)在內(nèi)核內(nèi)提供對(duì)硬件物理資源提供接口,上層封裝 成應(yīng)用程序編程接口(Application Programming Interface,簡(jiǎn)稱(chēng)API)供用戶程序調(diào)用。
[0004] 因此,在現(xiàn)有操作系統(tǒng)中,當(dāng)用戶程序訪問(wèn)硬件資源調(diào)用相關(guān)訪問(wèn)硬件的API時(shí), 系統(tǒng)需要陷入內(nèi)核,系統(tǒng)將在在用戶空間和內(nèi)核態(tài)之間進(jìn)行多次轉(zhuǎn)換。這種頻繁的切換會(huì) 增加系統(tǒng)的開(kāi)銷(xiāo),導(dǎo)致系統(tǒng)的處理效率降低。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種硬件資源訪問(wèn)方法及裝置,以實(shí)現(xiàn)降低訪問(wèn)硬件資源的系 統(tǒng)開(kāi)銷(xiāo),提高處理效率。
[0006] 第一方面,本發(fā)明實(shí)施例提供一種硬件資源的直接訪問(wèn)方法,包括:
[0007] 配置一條或多條用于訪問(wèn)硬件資源的特權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶 態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,所述應(yīng)用程序在代碼 層面調(diào)用了位于用戶態(tài)且封裝有所述特權(quán)指令的特權(quán)應(yīng)用程序編程接口 API ;
[0008] 執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令,從而 使得所述應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。
[0009] 在第一方面第一種可能的實(shí)現(xiàn)方式中,所述配置一條或多條用于訪問(wèn)硬件資源的 特權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件 資源進(jìn)行訪問(wèn),包括:
[0010] 調(diào)用支持硬件虛擬化的處理器對(duì)應(yīng)的與指令權(quán)限配置相關(guān)的接口來(lái)配置所述特 權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資 源進(jìn)行訪問(wèn)。
[0011] 結(jié)合第一方面或者第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第二種可能的實(shí) 現(xiàn)方式中,在執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令之 前,所述方法還包括:
[0012] 通過(guò)內(nèi)核判斷所述應(yīng)用程序是否具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限,如 果有,則執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令。
[0013] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,所 述通過(guò)內(nèi)核判斷應(yīng)用程序是否具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限包括:
[0014] 若應(yīng)用程序向內(nèi)核申請(qǐng)調(diào)用所述特權(quán)API直接訪問(wèn)硬件資源,則根據(jù)當(dāng)前硬件資 源分配情況,通過(guò)內(nèi)核判斷是否通過(guò)或部分通過(guò)所述應(yīng)用程序?qū)λ鎏貦?quán)API訪問(wèn)的請(qǐng)求 和指令操作對(duì)象的范圍,若是,則表示所述應(yīng)用程序是具有調(diào)用所述特權(quán)API訪問(wèn)硬件資 源的權(quán)限。
[0015] 結(jié)合第一方面、第一方面第一種至第三種可能的實(shí)現(xiàn)方式任意一種,在第一方面 第四種可能的實(shí)現(xiàn)方式中,所述特權(quán)指令為:
[0016] 處理器訪問(wèn)指令,或者內(nèi)存資源訪問(wèn)指令,或者TLB訪問(wèn)指令,或者中斷訪問(wèn)指 令,或者網(wǎng)絡(luò)訪問(wèn)指令,或者I/O硬件設(shè)備訪問(wèn)指令,或者磁盤(pán)訪問(wèn)指令,或者寄存器讀寫(xiě) 指令中的一個(gè)或多個(gè)。
[0017] 根據(jù)第一方面、第一方面第一種至第三種可能的實(shí)現(xiàn)方式任意一種,在第一方面 第五種可能的實(shí)現(xiàn)方式中,所述執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝 的所述特權(quán)指令,包括:
[0018] 在收到所述應(yīng)用程序的訪問(wèn)硬件資源的請(qǐng)求后,根據(jù)內(nèi)核策略確定所述應(yīng)用程序 的訪問(wèn)硬件資源請(qǐng)求是否需要陷入內(nèi)核,若否,則直接執(zhí)行所述特權(quán)指令。
[0019] 第二方面,本發(fā)明實(shí)施例提供一種硬件資源訪問(wèn)裝置,包括:
[0020] 配置模塊,用于配置一條或多條用于訪問(wèn)硬件的特權(quán)指令的權(quán)限,使得所述特權(quán) 指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,所述應(yīng)用 程序在代碼層面調(diào)用了位于用戶態(tài)且封裝有所述特權(quán)指令的特權(quán)應(yīng)用程序編程接口 API ;
[0021] 執(zhí)行模塊,用于執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述 特權(quán)指令,從而使得所述應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。
[0022] 在第二方面第一種可能的實(shí)現(xiàn)方式中,所述配置模塊具體用于:
[0023] 調(diào)用支持硬件虛擬化的處理器對(duì)應(yīng)的與指令權(quán)限配置相關(guān)的接口來(lái)配置所述特 權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資 源進(jìn)行訪問(wèn)。
[0024] 結(jié)合第二方面或者第一方面第一種可能的實(shí)現(xiàn)方式,在第二方面第二種可能的實(shí) 現(xiàn)方式中,所述裝置還包括:
[0025] 判斷模塊,用于在所述配置模塊配置一條或多條硬件訪問(wèn)特權(quán)指令的權(quán)限之后, 通過(guò)內(nèi)核判斷所述應(yīng)用程序是否具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限,如果有,則 觸發(fā)所述執(zhí)行模塊執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán) 指令。
[0026] 根據(jù)第二方面第二種可能的實(shí)現(xiàn)方式,在第二方面第三種可能的實(shí)現(xiàn)方式中,所 述判斷模塊,具體用于:
[0027] 若所述應(yīng)用程序向所述內(nèi)核申請(qǐng)調(diào)用所述特權(quán)API直接訪問(wèn)硬件資源,則根據(jù)當(dāng) 前硬件資源分配情況,通過(guò)內(nèi)核判斷是否通過(guò)或部分通過(guò)所述應(yīng)用程序?qū)λ鎏貦?quán)API訪 問(wèn)的請(qǐng)求和指令操作對(duì)象的范圍,若是,則表示所述應(yīng)用程序是具有調(diào)用所述特權(quán)API訪 問(wèn)硬件資源的權(quán)限。
[0028] 結(jié)合第二方面、第二方面第一種至第三種可能的實(shí)現(xiàn)方式任意一種,在第二方面 第四種可能的實(shí)現(xiàn)方式中,所述特權(quán)指令為:
[0029] 處理器訪問(wèn)指令,或者內(nèi)存資源訪問(wèn)指令,或者TLB訪問(wèn)指令,或者中斷訪問(wèn)指 令,或者網(wǎng)絡(luò)訪問(wèn)指令,或者I/O硬件設(shè)備訪問(wèn)指令,或者磁盤(pán)訪問(wèn)指令,或者寄存器讀寫(xiě) 指令中的一個(gè)或多個(gè)。
[0030] 根據(jù)第二方面、第二方面第一種至第三種可能的實(shí)現(xiàn)方式任意一種,在第二方面 第五種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊,具體用于:
[0031] 在收到所述應(yīng)用程序的訪問(wèn)硬件資源的請(qǐng)求后,根據(jù)內(nèi)核策略確定所述應(yīng)用程序 的訪問(wèn)硬件請(qǐng)求是否需要陷入內(nèi)核,若否,則直接執(zhí)行所述特權(quán)指令。
[0032] 第三方面,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)系統(tǒng),包括:
[0033] 處理器、存儲(chǔ)器以及總線;
[0034] 其中,處理器、存儲(chǔ)器通過(guò)總線完成相互間的通信,存儲(chǔ)器用于存儲(chǔ)需要執(zhí)行的指 令,處理器用于通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的指令執(zhí)行第一方面以及第一方面各種可能的實(shí)現(xiàn) 形式中的訪問(wèn)硬件資源的方法。
[0035] 第四方面,本發(fā)明實(shí)施例提供了一種非易失性存儲(chǔ)介質(zhì),該非易失性存儲(chǔ)介質(zhì)包 括一些指令,這些指令可供計(jì)算機(jī)中的處理器執(zhí)行,通過(guò)執(zhí)行這些指令來(lái)執(zhí)行第一方面以 及第一方面各種可能的實(shí)現(xiàn)形式中的訪問(wèn)硬件資源的方法。
[0036] 本發(fā)明實(shí)施例通過(guò)配置訪問(wèn)硬件資源的特征指令的權(quán)限,實(shí)現(xiàn)應(yīng)用程序訪問(wèn)硬件 資源時(shí),執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的特權(quán)API中封裝的不需要陷入內(nèi)核即可對(duì)硬 件資源進(jìn)行訪問(wèn),換言之,即可以繞開(kāi)內(nèi)核直接訪問(wèn)硬件資源,一定程度上解決了現(xiàn)有技術(shù) 中,訪問(wèn)硬件資源需要陷入內(nèi)核導(dǎo)致用戶態(tài)和核心態(tài)需要多次切換而導(dǎo)致的系統(tǒng)開(kāi)銷(xiāo)過(guò)大 的問(wèn)題,從而實(shí)現(xiàn)了降低訪問(wèn)硬件資源的系統(tǒng)開(kāi)銷(xiāo),提高處理效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0037] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0038] 圖1為本發(fā)明實(shí)施例一硬件資源訪問(wèn)方法的流程圖;
[0039] 圖2為本發(fā)明實(shí)施例二硬件資源訪問(wèn)方法的流程圖;
[0040] 圖3為本發(fā)明實(shí)施例三硬件資源訪問(wèn)裝置的結(jié)構(gòu)圖;
[0041] 圖4為本發(fā)明實(shí)施例三硬件資源訪問(wèn)裝置另一結(jié)構(gòu)圖;
[0042] 圖5為本發(fā)明實(shí)施例四計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)圖;
[0043] 圖6為本發(fā)明實(shí)施例計(jì)算機(jī)系統(tǒng)中軟硬件結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0044] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045] 實(shí)施例一
[0046] 圖1為本發(fā)明硬件資源訪問(wèn)方法實(shí)施例一的流程圖,本發(fā)明實(shí)施例提供的硬件資 源訪問(wèn)方法可以應(yīng)用于如圖5所示的計(jì)算機(jī)系統(tǒng)中(可包括一個(gè)或多個(gè)處理器,一個(gè)或多 個(gè)存儲(chǔ)器),該計(jì)算機(jī)系統(tǒng)可以位于一臺(tái)物理主機(jī)上,也可以分布位于多臺(tái)物理主機(jī)上。具 體地,該計(jì)算機(jī)系統(tǒng)可以位于一臺(tái)或多臺(tái)計(jì)算機(jī)(即計(jì)算節(jié)點(diǎn))、便攜式電腦、手持設(shè)備(例 如手機(jī),PAD等)、服務(wù)器等類(lèi)型的設(shè)備上。該計(jì)算機(jī)軟硬件邏輯結(jié)構(gòu)可參見(jiàn)圖6,如圖6所 示,該計(jì)算節(jié)點(diǎn)包括硬件資源(即硬件層),這里的硬件資源包括處理器(例如CPU和GPU), 當(dāng)然還可以包括存儲(chǔ)器、輸入/輸出設(shè)備、網(wǎng)絡(luò)接口等,以及在硬件層之上的內(nèi)核空間,以 及在內(nèi)核空間之上的用戶態(tài)空間,需要說(shuō)明的是,這里的內(nèi)核空間包括內(nèi)核等,這里的用戶 空間包括一些應(yīng)用程序。
[0047] 如圖1所示,該方法具體包括:
[0048] 步驟101、配置一條或多條用于訪問(wèn)硬件資源的特權(quán)指令的權(quán)限,使得特權(quán)指令供 用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,應(yīng)用程序在代碼 層面調(diào)用了位于用戶態(tài)且封裝有特權(quán)指令的特權(quán)應(yīng)用程序編程接口 API ;
[0049] 本步驟中,硬件資源可以包括但不限于:CPU資源、內(nèi)存資源、轉(zhuǎn)址旁路緩存TLB (Translation Lookaside Buffer)資源、中斷資源、網(wǎng)絡(luò)資源、I/O硬件設(shè)備資源、磁盤(pán)資源 和寄存器資源中的一種或多種。
[0050] 本步驟中,可以使用多種方法來(lái)實(shí)現(xiàn)"在代碼層面調(diào)用特權(quán)API",例如,讓開(kāi)發(fā)者 感知這些特權(quán)API的存在,開(kāi)發(fā)者在編寫(xiě)代碼時(shí),就直接使用這些特權(quán)API來(lái)訪問(wèn)硬件資 源;或者,也可以讓開(kāi)發(fā)者在編寫(xiě)代碼時(shí),不感知這些代碼的存在,開(kāi)發(fā)者仍然使用現(xiàn)有的 標(biāo)準(zhǔn)API來(lái)對(duì)硬件資源進(jìn)行訪問(wèn),但這些現(xiàn)有的標(biāo)準(zhǔn)API的代碼已被修改,其接口函數(shù)封裝 的函數(shù)內(nèi)容將被修改,修改后的現(xiàn)有API會(huì)調(diào)用特權(quán)API來(lái)訪問(wèn)硬件資源。
[0051] 在配置一條或多條硬件訪問(wèn)特權(quán)指令權(quán)限的時(shí)機(jī)上,可以在應(yīng)用程序運(yùn)行后給內(nèi) 核發(fā)一個(gè)觸發(fā)指令來(lái)設(shè)定;或者,內(nèi)核創(chuàng)建應(yīng)用的時(shí)候就設(shè)定;
[0052] 步驟102、執(zhí)行應(yīng)用程序在代碼層面調(diào)用的特權(quán)API中封裝的特權(quán)指令,從而使得 應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。
[0053] 具體地,與硬件資源相對(duì)應(yīng),特權(quán)指令可以為:處理器訪問(wèn)指令,或者內(nèi)存資源訪 問(wèn)指令,或者TLB訪問(wèn)指令,或者中斷訪問(wèn)指令,或者網(wǎng)絡(luò)訪問(wèn)指令,或者I/0硬件設(shè)備訪問(wèn) 指令,或者磁盤(pán)訪問(wèn)指令,或者寄存器讀寫(xiě)指令中的一種或多種。比如表1中所示的幾種具 體特權(quán)指令。
[0054] 表 1
【權(quán)利要求】
1. 一種硬件資源訪問(wèn)方法,其特征在于,包括: 配置一條或多條用于訪問(wèn)硬件資源的特權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng) 用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,所述應(yīng)用程序在代碼層面 調(diào)用了位于用戶態(tài)且封裝有所述特權(quán)指令的特權(quán)應(yīng)用程序編程接口 API ; 執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令,從而使得 所述應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述配置一條或多條用于訪問(wèn)硬件資源 的特權(quán)指令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬 件資源進(jìn)行訪問(wèn),包括: 調(diào)用支持硬件虛擬化的處理器對(duì)應(yīng)的與指令權(quán)限配置相關(guān)的接口來(lái)配置所述特權(quán)指 令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn) 行訪問(wèn)。
3. 根據(jù)權(quán)利要求1?2中任一項(xiàng)所述的方法,其特征在于,在配置一條或多條硬件訪問(wèn) 特權(quán)指令的權(quán)限之后,在執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述 特權(quán)指令之前,所述方法還包括: 通過(guò)內(nèi)核判斷所述應(yīng)用程序是否具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限,如果 有,則執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述通過(guò)內(nèi)核判斷應(yīng)用程序是否具有調(diào) 用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限包括: 若應(yīng)用程序向內(nèi)核申請(qǐng)調(diào)用所述特權(quán)API直接訪問(wèn)硬件資源,則根據(jù)當(dāng)前硬件資源分 配情況,通過(guò)內(nèi)核判斷是否通過(guò)或部分通過(guò)所述應(yīng)用程序?qū)λ鎏貦?quán)API訪問(wèn)的請(qǐng)求和指 令操作對(duì)象的范圍,若是,則表示所述應(yīng)用程序是具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的 權(quán)限。
5. 根據(jù)權(quán)利要求1?4中任一項(xiàng)所述的方法,其特征在于,所述特權(quán)指令為: 處理器訪問(wèn)指令,或者內(nèi)存資源訪問(wèn)指令,或者轉(zhuǎn)址旁路緩存TLB訪問(wèn)指令,或者中斷 訪問(wèn)指令,或者網(wǎng)絡(luò)訪問(wèn)指令,或者I/O硬件設(shè)備訪問(wèn)指令,或者磁盤(pán)訪問(wèn)指令,或者寄存 器讀寫(xiě)指令中的一個(gè)或多個(gè)。
6. 根據(jù)權(quán)利要求1?4中任一項(xiàng)所述的方法,其特征在于,所述執(zhí)行所述應(yīng)用程序在代 碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令,包括: 在收到所述應(yīng)用程序的訪問(wèn)硬件資源的請(qǐng)求后,根據(jù)內(nèi)核策略確定所述應(yīng)用程序的訪 問(wèn)硬件資源請(qǐng)求是否需要陷入內(nèi)核,若否,則直接執(zhí)行所述特權(quán)指令。
7. -種硬件資源訪問(wèn)裝置,其特征在于,包括: 配置模塊,用于配置一條或多條用于訪問(wèn)硬件的特權(quán)指令的權(quán)限,使得所述特權(quán)指令 供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn),其中,所述應(yīng)用程序 在代碼層面調(diào)用了位于用戶態(tài)且封裝有所述特權(quán)指令的特權(quán)應(yīng)用程序編程接口 API ; 執(zhí)行模塊,用于執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán) 指令,從而使得所述應(yīng)用程序不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn)行訪問(wèn)。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述配置模塊具體用于: 調(diào)用支持硬件虛擬化的處理器對(duì)應(yīng)的與指令權(quán)限配置相關(guān)的接口來(lái)配置所述特權(quán)指 令的權(quán)限,使得所述特權(quán)指令供用戶態(tài)應(yīng)用程序使用時(shí)不需要陷入內(nèi)核即可對(duì)硬件資源進(jìn) 行訪問(wèn)。
9. 根據(jù)權(quán)利要求7?8中任一項(xiàng)所述的裝置,其特征在于,還包括: 判斷模塊,用于在所述配置模塊配置一條或多條硬件訪問(wèn)特權(quán)指令的權(quán)限之后,通過(guò) 內(nèi)核判斷所述應(yīng)用程序是否具有調(diào)用所述特權(quán)API訪問(wèn)硬件資源的權(quán)限,如果有,則觸發(fā) 所述執(zhí)行模塊執(zhí)行所述應(yīng)用程序在代碼層面調(diào)用的所述特權(quán)API中封裝的所述特權(quán)指令。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述判斷模塊,具體用于: 若所述應(yīng)用程序向所述內(nèi)核申請(qǐng)調(diào)用所述特權(quán)API直接訪問(wèn)硬件資源,則根據(jù)當(dāng)前硬 件資源分配情況,通過(guò)內(nèi)核判斷是否通過(guò)或部分通過(guò)所述應(yīng)用程序?qū)λ鎏貦?quán)API訪問(wèn)的 請(qǐng)求和指令操作對(duì)象的范圍,若是,則表示所述應(yīng)用程序是具有調(diào)用所述特權(quán)API訪問(wèn)硬 件資源的權(quán)限。
11. 根據(jù)權(quán)利要求7?10中任一項(xiàng)所述的裝置,其特征在于,所述特權(quán)指令為: 處理器訪問(wèn)指令,或者內(nèi)存資源訪問(wèn)指令,或者TLB訪問(wèn)指令,或者中斷訪問(wèn)指令,或 者網(wǎng)絡(luò)訪問(wèn)指令,或者I/O硬件設(shè)備訪問(wèn)指令,或者磁盤(pán)訪問(wèn)指令,或者寄存器讀寫(xiě)指令中 的一個(gè)或多個(gè)。
12. 根據(jù)權(quán)利要求7?10中任一項(xiàng)所述的裝置,其特征在于,所述執(zhí)行模塊,具體用 于: 在收到所述應(yīng)用程序的訪問(wèn)硬件資源的請(qǐng)求后,根據(jù)內(nèi)核策略確定所述應(yīng)用程序的訪 問(wèn)硬件請(qǐng)求是否需要陷入內(nèi)核,若否,則直接執(zhí)行所述特權(quán)指令。
【文檔編號(hào)】G06F9/50GK104424034SQ201310399716
【公開(kāi)日】2015年3月18日 申請(qǐng)日期:2013年9月4日 優(yōu)先權(quán)日:2013年9月4日
【發(fā)明者】鄭晨, 侯瑞華, 詹劍鋒, 張立新 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所