IO处理方法和系统技术方案

技术编号:37634741 阅读:13 留言:0更新日期:2023-05-20 08:55
本申请实施例提供了一种IO处理方法及系统,涉及终端操作系统技术领域,该方法包括:置于业务服务中的第一驱动模块,对应用的IO请求进行处理,置于驱动框架中的第二驱动模块,对硬件设备进行初始化、卸载、IO错误处理等,以分离式驱动架构实现硬件设备的驱动,以减少IPC,提升IO性能。提升IO性能。提升IO性能。

【技术实现步骤摘要】
IO处理方法和系统


[0001]本申请实施例涉及终端操作系统
,尤其涉及一种IO处理方法和系统。

技术介绍

[0002]在微内核架构下,硬件设备的驱动和处理IO的业务服务分别在用户态的不同进程中,在处理应用对硬件设备的IO访问请求的过程中,处理IO的业务服务与硬件设备的驱动之间存在IPC(Inter process communication,进程间通信),从而降低了IO性能。
[0003]例如,在自动驾驶系统的CDC(Cockpit Domain controller,座舱域控制器)智能座舱场景中,系统启动过程中,需要加载大量ko(Kernel module,内核模块)、so(shared object,共享库)来支撑仪表、倒车影像、360环视等业务App(Application,应用程序)运行。IO(Input output,输入输出)性能会严重影响业务组件的初始化,从而影响系统的启动速度、虚拟化存储性能等。另外,车机中控域的Android(安卓)虚拟机对IO性能的要求也比较高,那么IO性能将会影响到系统的启动时长,App的响应速度,以及自动驾驶等,进而影响用户体验。

技术实现思路

[0004]为了解决上述技术问题,本申请提供一种IO处理方法及系统。在该方法中,可将硬件设备的处理IO请求的驱动程序置于业务服务中,可绕过驱动框架的冗长代码,并减少业务服务与硬件设备驱动之间的IPC调用,以提升IO性能。
[0005]第一方面,本申请实施例提供一种IO处理系统。
[0006]所述IO处理系统与硬件设备连接,所述IO处理系统包括:预设业务服务和驱动框架,所述预设业务服务内置有第一驱动模块,所述驱动框架内置有第二驱动模块;所述第一驱动模块包括硬件协议;
[0007]所述第一驱动模块,用于:
[0008]响应于接收到的第一IO请求,按照所述硬件设备的硬件协议,封装所述第一IO请求,生成第二IO请求;
[0009]通过操作所述硬件设备的硬件队列,将所述第二IO请求发送至所述硬件设备;
[0010]所述第二驱动模块,用于:
[0011]对所述硬件设备进行连接管理和IO错误处理。
[0012]在本申请实施例中,以分离式驱动架构来构建一个硬件设备的驱动程序模块,硬件设备的驱动程序模块包括部署在预设业务服务中的第一驱动模块,和,部署在驱动框架中的第二驱动模块。其中,第一驱动模块用于按照硬件协议处理IO请求,第一驱动模块可绕过驱动框架的冗长代码,在预设业务服务的进程中处理IO请求,减少了业务服务与硬件设备驱动之间的IPC,提供了高效的IO处理方式。并且,第一驱动模块可通过硬件设备的硬件队列,直接将IO请求下发给硬件设备,可进一步减少IPC,提升IO性能。此外,第二驱动模块置于驱动框架中,来对硬件设备与IO处理系统之间的连接进行管理,以及对报错的IO请求
进行处理,可利用开源的驱动框架实现与驱动框架强耦合的逻辑操作,同时,第一驱动模块部署在预设业务服务中,可避免第一驱动模块被开源污染。
[0013]在一种可能的实现方式中,所述硬件设备包括硬盘,所述预设业务服务包括:与所述硬盘对应的多个文件系统服务,所述多个文件系统服务分别置有所述第一驱动模块;
[0014]置于所述硬盘的多个文件系统服务中的所述第一驱动模块,用于操作所述硬盘的不同硬件队列。
[0015]在一种可能的实现方式中,置于高优先级的文件系统服务中的第一驱动模块,操作的所述硬盘的硬件队列的数量,多于置于低优先级的文件系统服务中的第一驱动模块,操作的所述硬盘的硬件队列的数量。
[0016]在一种可能的实现方式中,所述第二驱动模块,具体用于:
[0017]基于所述硬盘的硬件队列的数量,对置于所述硬盘的不同文件系统服务中的多个所述第一驱动模块,分配用于操作的硬件队列。
[0018]在一种可能的实现方式中,所述硬件设备包括物理网卡,所述预设业务服务包括网络服务;
[0019]置于所述网络服务中的所述第一驱动模块,具体用于:
[0020]在对来自不同应用的IO请求进行响应时,操作不同的硬件队列。
[0021]在一种可能的实现方式中,置于所述网络服务中的所述第一驱动模块,还用于:
[0022]基于所述物理网卡的硬件队列的数量,按照访问所述网络服务的应用的优先级,确定与所述应用对应的硬件队列的数量。
[0023]在一种可能的实现方式中,所述驱动框架内置有多个所述第二驱动模块,所述多个第二驱动模块,用于对不同协议版本的硬件设备进行连接管理和IO错误处理。
[0024]在一种可能的实现方式中,所述第一驱动模块包括一个或多个协议版本的硬件设备的硬件协议。
[0025]在一种可能的实现方式中,所述第二驱动模块,具体用于:
[0026]响应于所述硬件设备的初始化请求,对所述硬件设备的硬件队列创建硬件队列对象并将所述硬件队列对象写入第一内存。
[0027]所述第一驱动模块,具体用于:
[0028]通过调用所述第一内存中的所述硬件队列对象,将所述第二IO请求写入所述硬件设备的硬件队列中。
[0029]在一种可能的实现方式中,所述第二驱动模块,具体用于:
[0030]将所述硬件设备的硬件队列的队列状态、所述硬件设备的硬件状态设置至所述第一内存;
[0031]所述第一驱动模块,具体用于:
[0032]响应于接收到的第一IO请求,在所述第一内存中获取所述硬件设备的硬件状态和目标硬件队列的队列状态,其中,所述目标硬件队列为所述第一IO请求所访问的物理地址所对应的硬件队列;
[0033]在所述硬件状态和所述目标硬件队列的队列状态均为预设状态的情况下,按照所述硬件设备的硬件协议,封装所述第一IO请求,生成第二IO请求。
[0034]在一种可能的实现方式中,所述第一驱动模块,还用于:
[0035]接收所述硬件设备的中断;
[0036]根据所述中断,从操作的所述硬件队列中,获取所述硬件设备响应于所述第二IO请求的IO结果。
[0037]在一种可能的实现方式中,所述第一驱动模块,还用于:
[0038]将所述IO结果发送至目标应用,其中,所述目标应用触发所述第一IO请求。
[0039]在一种可能的实现方式中,所述第一驱动模块,还用于:
[0040]在所述IO结果中的错误号与预设号码列表内的号码匹配的情况下,按照所述硬件设备的硬件协议对所述第一IO请求重新封装,并通过重新操作所述硬件设备的硬件队列,将封装后的第一IO请求重新发送至所述硬件设备。
[0041]在一种可能的实现方式中,
[0042]所述第一驱动模块,还用于:
[0043]在所述IO结果中的错误号与预设号码列表内的号码匹配的情况下,将所述错误号发送至所述第二驱动模块;
[0044]所述第二驱动模块,具体用于:
[0045]根据所述错误号,确定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种IO处理系统,其特征在于,所述IO处理系统与硬件设备连接,所述IO处理系统包括:预设业务服务和驱动框架,所述预设业务服务内置有第一驱动模块,所述驱动框架内置有第二驱动模块;所述第一驱动模块包括硬件协议;所述第一驱动模块,用于:响应于接收到的第一IO请求,按照所述硬件设备的硬件协议,封装所述第一IO请求,生成第二IO请求;通过操作所述硬件设备的硬件队列,将所述第二IO请求发送至所述硬件设备;所述第二驱动模块,用于:对所述硬件设备进行连接管理和IO错误处理。2.根据权利要求1所述的系统,其特征在于,所述硬件设备包括硬盘,所述预设业务服务包括:与所述硬盘对应的多个文件系统服务,所述多个文件系统服务分别置有所述第一驱动模块;置于所述硬盘的多个文件系统服务中的所述第一驱动模块,用于操作所述硬盘的不同硬件队列。3.根据权利要求2所述的系统,其特征在于,置于高优先级的文件系统服务中的第一驱动模块,操作的所述硬盘的硬件队列的数量,多于置于低优先级的文件系统服务中的第一驱动模块,操作的所述硬盘的硬件队列的数量。4.根据权利要求2或3所述的系统,其特征在于,所述第二驱动模块,具体用于:基于所述硬盘的硬件队列的数量,对置于所述硬盘的不同文件系统服务中的多个所述第一驱动模块,分配用于操作的硬件队列。5.根据权利要求1所述的系统,其特征在于,所述硬件设备包括物理网卡,所述预设业务服务包括网络服务;置于所述网络服务中的所述第一驱动模块,具体用于:在对来自不同应用的IO请求进行响应时,操作不同的硬件队列。6.根据权利要求5所述的系统,其特征在于,置于所述网络服务中的所述第一驱动模块,还用于:基于所述物理网卡的硬件队列的数量,按照访问所述网络服务的应用的优先级,确定与所述应用对应的硬件队列的数量。7.根据权利要求1所述的系统,其特征在于,所述驱动框架内置有多个所述第二驱动模块,所述多个第二驱动模块,用于对不同协议版本的硬件设备进行连接管理和IO错误处理。8.根据权利要求1所述的系统,其特征在于,所述第一驱动模块包括一个或多个协议版本的硬件设备的硬件协议。9.根据权利要求1所述的系统,其特征在于,所述第二驱动模块,具体用于:响应于所述硬件设备的初始化请求,对所述硬件设备的硬件队列创建硬件队列对象并将所述硬件队列对象写入第一内存。所述第一驱动模块,具体用于:通过调用所述第一内存中的所述硬件队列对象,将所述第二IO请求写入所述硬件设备
的硬件队列中。10.根据权利要求9所述的系统,其特征在于,所述第二驱动模块,具体用于:将所述硬件设备的硬件队列的队列状态、所述硬件设备的硬件状态设置至所述第一内存;所述第一驱动模块,具体用于:响应于接收到的第一IO请求,在所述第一内存中获取所述硬件设备的硬件状态和目标硬件队列的队列状态,其中,所述目标硬件队列为所述第一IO请求所访问的物理地址所对应的硬件队列;在所述硬件状态和所述目标硬件队列的队列状态均为预设状态的情况下,按照所述硬件设备的硬件协议,封装所述第一IO请求,生成第二IO请求。11.根据权利要求1所述的系统,其特征在于,所述第一驱动模块,还用于:接收所述硬件设备的中断;根据所述中断,从操作的所述硬件队列中,获取所述硬件设备响应于所述第二IO请求的IO结果。12.根据权利要求11所述的系统,其特征在于,所述第一驱动模块,还用于:将所述IO结果发送至目标应用,其中,所述目标应用触发所述第一IO请求。13.根据权利要求11所述的系统,其特征在于,所述第一驱动模块,还用于:在所述IO结果中的错误号与预设号码列表内的号码匹配的情况下,按照所述硬件设备的硬件协议对所述第一IO请求重新封装,并通过重新操作所述硬件设备的硬件队列,将封装后的第一IO请求重新发送至所述硬件设备。14.根据权利要求13所述的系统,其特征在于,所述第一驱动模块,还用于:在所述IO结果中的错误号与预设号码列表内的号码匹配的情况下,将所述错误号发送至所述第二驱动模块;所述第二驱动模块,具体用于:根据所述错误号,确定所述硬件设备中出错的硬件对象,将第一内存中所述硬件设备的所述硬件对象的状态更新为不可用状态;按照所述硬件协议对所述硬件设备的所述硬件对象进行重置操作;获取重置操作后所述硬件对象的状态,以在所述硬件对象的状态发生变化的情况下,对所述第一内存中所述硬件对象的状态进行更新。15.一种IO处理方法,应用于IO处理系统,所述IO处理系统与硬件设备连接,所述IO处理系统包括:预设业务服务和驱动框架,所述预设业务服务内置有第一驱动模块,所述驱动框架内置有第二驱动模块;所述第一驱动模块包括硬件协议;所述第一驱动模块响应于接收到的第一IO请求,按照所述硬件设备的硬件协议,封装所述第一IO请求,生成第二IO请求;所述第一驱动模块通过操作所述硬件设备的硬件队列,将所述第二IO请求发送至所述硬件设备;所述第二驱动模块对所述硬件设备连接管理和IO错误处理。
16.根据权利要求15所述的方法,其特征在于,所述硬件设备包括硬盘,所述预设业务服务包括:...

【专利技术属性】
技术研发人员:缪勰汤晨曹树烽温从洋
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1