[发明专利]一种通信方法、装置及可读存储介质,一种文件系统在审
申请号: | 202010693121.4 | 申请日: | 2020-07-17 |
公开(公告)号: | CN111813579A | 公开(公告)日: | 2020-10-23 |
发明(设计)人: | 李养兆;仇锋利 | 申请(专利权)人: | 济南浪潮数据技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/50;G06F3/06 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王云晓 |
地址: | 250101 山东省济南市高新区*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通信 方法 装置 可读 存储 介质 文件系统 | ||
本申请公开了一种通信方法、装置及可读存储介质,一种文件系统。在本申请中,内核态模块在获取到其对应的第一队列的锁后,将应用进程发送的待处理IO请求添加至第一队列的尾部;然后用户态模块从第一队列中读取待处理IO请求并进行处理,将获得的处理结果添加至内核态模块对应的第二队列的尾部;最后内核态模块从第二队列中读取处理结果,并返回处理结果至应用进程。本申请利用第一队列和第二队列使内核态模块和用户态模块实现了相互通信,避免了内核态模块和用户态模块之间的系统调用,降低了IO时延,提高了IO处理效率以及文件系统的性能。相应地,本申请提供的一种通信装置及可读存储介质,一种文件系统,也同样具有上述技术效果。
技术领域
本申请涉及计算机技术领域,特别涉及一种通信方法、装置及可读存储介质,一种文件系统。
背景技术
目前,内核态模块和用户态模块基于文件系统中的IOCTL(用户态模块和内核态模块之间通信的一种系统调用方式)进行通信,具体过程包括:用户态模块发起IOCTL系统调用,并等待待处理IO请求的到来;内核态模块打包待处理IO请求,并触发IOCTL系统调用,以将待处理IO请求返回给用户态模块让其处理;用户态模块处理待处理IO请求后,再次通过IOCTL系统调用将处理结果返回给内核态模块。可见,该过程需要进行多次IOCTL系统调用,会造成IO时延增大,导致IO处理效率和文件系统的性能降低。
因此,如何减少内核态模块和用户态模块之间的系统调用次数,降低IO时延,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种通信方法、装置及可读存储介质,一种文件系统,以减少内核态模块和用户态模块之间的系统调用次数,降低IO时延。其具体方案如下:
第一方面,本申请提供了一种通信方法,应用于内核态模块,包括:
接收应用进程发送的待处理IO请求;
获取所述内核态模块对应的第一队列的锁;
若获取到所述锁,则将所述待处理IO请求添加至所述第一队列的尾部,并修改所述第一队列的第一尾部指针,以便用户态模块按照所述第一尾部指针从所述第一队列中读取所述待处理IO请求并进行处理,将获得的处理结果添加至所述内核态模块对应的第二队列的尾部,并修改所述第二队列的第二尾部指针;
按照所述第二尾部指针从所述第二队列中读取所述处理结果,并返回所述处理结果至所述应用进程。
优选地,所述按照所述第二尾部指针从所述第二队列中读取所述处理结果之前,还包括:
调用IOCTL唤醒第二轮询线程,并利用所述第二轮询线程轮询所述第二队列。
优选地,若所述第二队列为空,则所述第二轮询线程进入休眠状态。
优选地,还包括:
若未获取到所述锁,则进入锁等待队列,以等待所述锁。
优选地,所述用户态模块按照所述第一尾部指针从所述第一队列中读取所述待处理IO请求并进行处理之前,还包括:
所述用户态模块调用IOCTL唤醒第一轮询线程,并利用所述第一轮询线程轮询所述第一队列。
优选地,若所述第一队列为空,则所述第一轮询线程进入休眠状态。
第二方面,本申请提供了一种通信装置,应用于内核态模块,包括:
接收模块,用于接收应用进程发送的待处理IO请求;
获取模块,用于获取所述内核态模块对应的第一队列的锁;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于济南浪潮数据技术有限公司,未经济南浪潮数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010693121.4/2.html,转载请声明来源钻瓜专利网。