硬件资源访问方法及装置制造方法

文档序号:6510303阅读:183来源:国知局
硬件资源访问方法及装置制造方法
【专利摘要】本发明实施例提供一种硬件资源访问方法、装置及操作系统,本发明方法,包括:配置一条或多条用于访问硬件的特权指令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,所述应用程序在代码层面调用了位于用户态且封装有所述特权指令的特权应用程序编程接口API;执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令,从而使得所述应用程序不需要陷入内核即可对硬件资源进行访问。本发明实施例,通过设定直接访问硬件资源的特权指令并封装成API部署在用户空间,以实现降低访问硬件资源的系统开销,提高处理效率。
【专利说明】硬件资源访问方法及装置

【技术领域】
[0001] 本发明实施例涉及计算机技术,尤其涉及一种硬件资源访问方法及装置。

【背景技术】
[0002] 操作系统(Operating System,简称0S)是管理和控制计算机硬件与软件资源的计 算机程序,位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界 面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。访问硬件的响 应时间是判断操作系统性能的最重要的一个指标。
[0003] 现有的操作系统中,操作系统在内核内提供对硬件物理资源提供接口,上层封装 成应用程序编程接口(Application Programming Interface,简称API)供用户程序调用。
[0004] 因此,在现有操作系统中,当用户程序访问硬件资源调用相关访问硬件的API时, 系统需要陷入内核,系统将在在用户空间和内核态之间进行多次转换。这种频繁的切换会 增加系统的开销,导致系统的处理效率降低。


【发明内容】

[0005] 本发明实施例提供一种硬件资源访问方法及装置,以实现降低访问硬件资源的系 统开销,提高处理效率。
[0006] 第一方面,本发明实施例提供一种硬件资源的直接访问方法,包括:
[0007] 配置一条或多条用于访问硬件资源的特权指令的权限,使得所述特权指令供用户 态应用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,所述应用程序在代码 层面调用了位于用户态且封装有所述特权指令的特权应用程序编程接口 API ;
[0008] 执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令,从而 使得所述应用程序不需要陷入内核即可对硬件资源进行访问。
[0009] 在第一方面第一种可能的实现方式中,所述配置一条或多条用于访问硬件资源的 特权指令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件 资源进行访问,包括:
[0010] 调用支持硬件虚拟化的处理器对应的与指令权限配置相关的接口来配置所述特 权指令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件资 源进行访问。
[0011] 结合第一方面或者第一方面第一种可能的实现方式,在第一方面第二种可能的实 现方式中,在执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令之 前,所述方法还包括:
[0012] 通过内核判断所述应用程序是否具有调用所述特权API访问硬件资源的权限,如 果有,则执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令。
[0013] 结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所 述通过内核判断应用程序是否具有调用所述特权API访问硬件资源的权限包括:
[0014] 若应用程序向内核申请调用所述特权API直接访问硬件资源,则根据当前硬件资 源分配情况,通过内核判断是否通过或部分通过所述应用程序对所述特权API访问的请求 和指令操作对象的范围,若是,则表示所述应用程序是具有调用所述特权API访问硬件资 源的权限。
[0015] 结合第一方面、第一方面第一种至第三种可能的实现方式任意一种,在第一方面 第四种可能的实现方式中,所述特权指令为:
[0016] 处理器访问指令,或者内存资源访问指令,或者TLB访问指令,或者中断访问指 令,或者网络访问指令,或者I/O硬件设备访问指令,或者磁盘访问指令,或者寄存器读写 指令中的一个或多个。
[0017] 根据第一方面、第一方面第一种至第三种可能的实现方式任意一种,在第一方面 第五种可能的实现方式中,所述执行所述应用程序在代码层面调用的所述特权API中封装 的所述特权指令,包括:
[0018] 在收到所述应用程序的访问硬件资源的请求后,根据内核策略确定所述应用程序 的访问硬件资源请求是否需要陷入内核,若否,则直接执行所述特权指令。
[0019] 第二方面,本发明实施例提供一种硬件资源访问装置,包括:
[0020] 配置模块,用于配置一条或多条用于访问硬件的特权指令的权限,使得所述特权 指令供用户态应用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,所述应用 程序在代码层面调用了位于用户态且封装有所述特权指令的特权应用程序编程接口 API ;
[0021] 执行模块,用于执行所述应用程序在代码层面调用的所述特权API中封装的所述 特权指令,从而使得所述应用程序不需要陷入内核即可对硬件资源进行访问。
[0022] 在第二方面第一种可能的实现方式中,所述配置模块具体用于:
[0023] 调用支持硬件虚拟化的处理器对应的与指令权限配置相关的接口来配置所述特 权指令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件资 源进行访问。
[0024] 结合第二方面或者第一方面第一种可能的实现方式,在第二方面第二种可能的实 现方式中,所述装置还包括:
[0025] 判断模块,用于在所述配置模块配置一条或多条硬件访问特权指令的权限之后, 通过内核判断所述应用程序是否具有调用所述特权API访问硬件资源的权限,如果有,则 触发所述执行模块执行所述应用程序在代码层面调用的所述特权API中封装的所述特权 指令。
[0026] 根据第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所 述判断模块,具体用于:
[0027] 若所述应用程序向所述内核申请调用所述特权API直接访问硬件资源,则根据当 前硬件资源分配情况,通过内核判断是否通过或部分通过所述应用程序对所述特权API访 问的请求和指令操作对象的范围,若是,则表示所述应用程序是具有调用所述特权API访 问硬件资源的权限。
[0028] 结合第二方面、第二方面第一种至第三种可能的实现方式任意一种,在第二方面 第四种可能的实现方式中,所述特权指令为:
[0029] 处理器访问指令,或者内存资源访问指令,或者TLB访问指令,或者中断访问指 令,或者网络访问指令,或者I/O硬件设备访问指令,或者磁盘访问指令,或者寄存器读写 指令中的一个或多个。
[0030] 根据第二方面、第二方面第一种至第三种可能的实现方式任意一种,在第二方面 第五种可能的实现方式中,所述执行模块,具体用于:
[0031] 在收到所述应用程序的访问硬件资源的请求后,根据内核策略确定所述应用程序 的访问硬件请求是否需要陷入内核,若否,则直接执行所述特权指令。
[0032] 第三方面,本发明实施例提供一种计算机系统,包括:
[0033] 处理器、存储器以及总线;
[0034] 其中,处理器、存储器通过总线完成相互间的通信,存储器用于存储需要执行的指 令,处理器用于通过读取存储器中存储的指令执行第一方面以及第一方面各种可能的实现 形式中的访问硬件资源的方法。
[0035] 第四方面,本发明实施例提供了一种非易失性存储介质,该非易失性存储介质包 括一些指令,这些指令可供计算机中的处理器执行,通过执行这些指令来执行第一方面以 及第一方面各种可能的实现形式中的访问硬件资源的方法。
[0036] 本发明实施例通过配置访问硬件资源的特征指令的权限,实现应用程序访问硬件 资源时,执行所述应用程序在代码层面调用的特权API中封装的不需要陷入内核即可对硬 件资源进行访问,换言之,即可以绕开内核直接访问硬件资源,一定程度上解决了现有技术 中,访问硬件资源需要陷入内核导致用户态和核心态需要多次切换而导致的系统开销过大 的问题,从而实现了降低访问硬件资源的系统开销,提高处理效率。

【专利附图】

【附图说明】
[0037] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
[0038] 图1为本发明实施例一硬件资源访问方法的流程图;
[0039] 图2为本发明实施例二硬件资源访问方法的流程图;
[0040] 图3为本发明实施例三硬件资源访问装置的结构图;
[0041] 图4为本发明实施例三硬件资源访问装置另一结构图;
[0042] 图5为本发明实施例四计算机系统的结构图;
[0043] 图6为本发明实施例计算机系统中软硬件结构示意图。

【具体实施方式】
[0044] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045] 实施例一
[0046] 图1为本发明硬件资源访问方法实施例一的流程图,本发明实施例提供的硬件资 源访问方法可以应用于如图5所示的计算机系统中(可包括一个或多个处理器,一个或多 个存储器),该计算机系统可以位于一台物理主机上,也可以分布位于多台物理主机上。具 体地,该计算机系统可以位于一台或多台计算机(即计算节点)、便携式电脑、手持设备(例 如手机,PAD等)、服务器等类型的设备上。该计算机软硬件逻辑结构可参见图6,如图6所 示,该计算节点包括硬件资源(即硬件层),这里的硬件资源包括处理器(例如CPU和GPU), 当然还可以包括存储器、输入/输出设备、网络接口等,以及在硬件层之上的内核空间,以 及在内核空间之上的用户态空间,需要说明的是,这里的内核空间包括内核等,这里的用户 空间包括一些应用程序。
[0047] 如图1所示,该方法具体包括:
[0048] 步骤101、配置一条或多条用于访问硬件资源的特权指令的权限,使得特权指令供 用户态应用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,应用程序在代码 层面调用了位于用户态且封装有特权指令的特权应用程序编程接口 API ;
[0049] 本步骤中,硬件资源可以包括但不限于:CPU资源、内存资源、转址旁路缓存TLB (Translation Lookaside Buffer)资源、中断资源、网络资源、I/O硬件设备资源、磁盘资源 和寄存器资源中的一种或多种。
[0050] 本步骤中,可以使用多种方法来实现"在代码层面调用特权API",例如,让开发者 感知这些特权API的存在,开发者在编写代码时,就直接使用这些特权API来访问硬件资 源;或者,也可以让开发者在编写代码时,不感知这些代码的存在,开发者仍然使用现有的 标准API来对硬件资源进行访问,但这些现有的标准API的代码已被修改,其接口函数封装 的函数内容将被修改,修改后的现有API会调用特权API来访问硬件资源。
[0051] 在配置一条或多条硬件访问特权指令权限的时机上,可以在应用程序运行后给内 核发一个触发指令来设定;或者,内核创建应用的时候就设定;
[0052] 步骤102、执行应用程序在代码层面调用的特权API中封装的特权指令,从而使得 应用程序不需要陷入内核即可对硬件资源进行访问。
[0053] 具体地,与硬件资源相对应,特权指令可以为:处理器访问指令,或者内存资源访 问指令,或者TLB访问指令,或者中断访问指令,或者网络访问指令,或者I/0硬件设备访问 指令,或者磁盘访问指令,或者寄存器读写指令中的一种或多种。比如表1中所示的几种具 体特权指令。
[0054] 表 1

【权利要求】
1. 一种硬件资源访问方法,其特征在于,包括: 配置一条或多条用于访问硬件资源的特权指令的权限,使得所述特权指令供用户态应 用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,所述应用程序在代码层面 调用了位于用户态且封装有所述特权指令的特权应用程序编程接口 API ; 执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令,从而使得 所述应用程序不需要陷入内核即可对硬件资源进行访问。
2. 根据权利要求1所述的方法,其特征在于,所述配置一条或多条用于访问硬件资源 的特权指令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬 件资源进行访问,包括: 调用支持硬件虚拟化的处理器对应的与指令权限配置相关的接口来配置所述特权指 令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件资源进 行访问。
3. 根据权利要求1?2中任一项所述的方法,其特征在于,在配置一条或多条硬件访问 特权指令的权限之后,在执行所述应用程序在代码层面调用的所述特权API中封装的所述 特权指令之前,所述方法还包括: 通过内核判断所述应用程序是否具有调用所述特权API访问硬件资源的权限,如果 有,则执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令。
4. 根据权利要求3所述的方法,其特征在于,所述通过内核判断应用程序是否具有调 用所述特权API访问硬件资源的权限包括: 若应用程序向内核申请调用所述特权API直接访问硬件资源,则根据当前硬件资源分 配情况,通过内核判断是否通过或部分通过所述应用程序对所述特权API访问的请求和指 令操作对象的范围,若是,则表示所述应用程序是具有调用所述特权API访问硬件资源的 权限。
5. 根据权利要求1?4中任一项所述的方法,其特征在于,所述特权指令为: 处理器访问指令,或者内存资源访问指令,或者转址旁路缓存TLB访问指令,或者中断 访问指令,或者网络访问指令,或者I/O硬件设备访问指令,或者磁盘访问指令,或者寄存 器读写指令中的一个或多个。
6. 根据权利要求1?4中任一项所述的方法,其特征在于,所述执行所述应用程序在代 码层面调用的所述特权API中封装的所述特权指令,包括: 在收到所述应用程序的访问硬件资源的请求后,根据内核策略确定所述应用程序的访 问硬件资源请求是否需要陷入内核,若否,则直接执行所述特权指令。
7. -种硬件资源访问装置,其特征在于,包括: 配置模块,用于配置一条或多条用于访问硬件的特权指令的权限,使得所述特权指令 供用户态应用程序使用时不需要陷入内核即可对硬件资源进行访问,其中,所述应用程序 在代码层面调用了位于用户态且封装有所述特权指令的特权应用程序编程接口 API ; 执行模块,用于执行所述应用程序在代码层面调用的所述特权API中封装的所述特权 指令,从而使得所述应用程序不需要陷入内核即可对硬件资源进行访问。
8. 根据权利要求7所述的装置,其特征在于,所述配置模块具体用于: 调用支持硬件虚拟化的处理器对应的与指令权限配置相关的接口来配置所述特权指 令的权限,使得所述特权指令供用户态应用程序使用时不需要陷入内核即可对硬件资源进 行访问。
9. 根据权利要求7?8中任一项所述的装置,其特征在于,还包括: 判断模块,用于在所述配置模块配置一条或多条硬件访问特权指令的权限之后,通过 内核判断所述应用程序是否具有调用所述特权API访问硬件资源的权限,如果有,则触发 所述执行模块执行所述应用程序在代码层面调用的所述特权API中封装的所述特权指令。
10. 根据权利要求9所述的装置,其特征在于,所述判断模块,具体用于: 若所述应用程序向所述内核申请调用所述特权API直接访问硬件资源,则根据当前硬 件资源分配情况,通过内核判断是否通过或部分通过所述应用程序对所述特权API访问的 请求和指令操作对象的范围,若是,则表示所述应用程序是具有调用所述特权API访问硬 件资源的权限。
11. 根据权利要求7?10中任一项所述的装置,其特征在于,所述特权指令为: 处理器访问指令,或者内存资源访问指令,或者TLB访问指令,或者中断访问指令,或 者网络访问指令,或者I/O硬件设备访问指令,或者磁盘访问指令,或者寄存器读写指令中 的一个或多个。
12. 根据权利要求7?10中任一项所述的装置,其特征在于,所述执行模块,具体用 于: 在收到所述应用程序的访问硬件资源的请求后,根据内核策略确定所述应用程序的访 问硬件请求是否需要陷入内核,若否,则直接执行所述特权指令。
【文档编号】G06F9/50GK104424034SQ201310399716
【公开日】2015年3月18日 申请日期:2013年9月4日 优先权日:2013年9月4日
【发明者】郑晨, 侯瑞华, 詹剑锋, 张立新 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1