[发明专利]用户态和内核间的通信方法及系统在审
申请号: | 201610011174.7 | 申请日: | 2016-01-04 |
公开(公告)号: | CN105677493A | 公开(公告)日: | 2016-06-15 |
发明(设计)人: | 李鹏 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李相雨 |
地址: | 300384 天津市滨海新*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用户 内核 通信 方法 系统 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种用户态和内核间的通 信方法及系统。
背景技术
Linux是当前常用的操作系统,在linux运行的用户态通常要和内核 进行交互,比如用户态收到了报文后将报文发送给内核,或者内核将 报文发送给用户态,在交互的过程中通常会有内存拷贝,这就会带来 一定的性能损耗。
发明内容
针对现有技术中的缺陷,本发明提供一种用户态和内核间的通信 方法及系统,以解决现有技术中用户态和内核交互时由于内存拷贝而 导致的性能损耗问题。
为解决上述问题,本发明提供以下技术方案:
第一方面,本发明提供了一种用户态和内核间的通信方法,包括:
内核预先申请一块物理地址,并将该块物理地址分为三部分:第 一子块物理地址、第二子块物理地址和第三子块物理地址;
内核将第一子块物理地址、第二子块物理地址和第三子块物理地 址依次映射为内核第一虚拟地址,内核第二虚拟地址和内核第三虚拟 地址;
用户态通过系统调用获取第一子块物理地址、第二子块物理地址 和第三子块物理地址,并将第一子块物理地址、第二子块物理地址和 第三子块物理地址依次映射为用户态第一虚拟地址,用户态第二虚拟 地址和用户态第三虚拟地址;
用户态向所述用户态第三虚拟地址中写入要向内核发送的报文;
内核通过所述内核第三虚拟地址读取用户态向内核发送的报文;
其中,所述内核第一虚拟地址用于存放内核侧第一读控制参数; 所述内核第二虚拟地址用于存放内核侧第一写控制参数;当内核从内 核第三虚拟地址读取报文时,内核更新内核侧第一读控制参数;
其中,所述用户态第一虚拟地址用于存放用户态侧第一读控制参 数;所述用户态第二虚拟地址用于存放用户态侧第一写控制参数;当 用户态向所述用户态第三虚拟地址中写入报文时,用户态更新用户态 侧第一写控制参数;
其中,所述内核侧第一读控制参数和内核侧第一写控制参数用于 控制内核是否可以通过所述内核第三虚拟地址读取用户态向内核发送 的报文;其中,所述用户态侧第一读控制参数和用户态侧第一写控制 参数用于控制用户态是否可以向所述用户态第三虚拟地址中写入要向 内核发送的报文。
进一步地,在用户态向所述用户态第三虚拟地址中写入要向内核 发送的报文之前,所述方法还包括:
用户态判断是否可以向所述用户态第三虚拟地址中写入要向内核 发送的报文;
其中,用户态判断是否可以向所述用户态第三虚拟地址中写入要 向内核发送的报文,包括:
用户态根据用户态侧第一读控制参数R1u和用户态侧第一写控制 参数W1u的值的大小关系,确定是否可以向所述用户态第三虚拟地址 中写入要向内核发送的报文;
当R1u>W1u时,用户态可以向用户态第三虚拟地址中写入不超过 Nuw=(R1u-W1u)个报文;
当R1u<W1u时,用户态可以向用户态第三虚拟地址中写入不超过 Nuw=(L1+(R1u-W1u))个报文;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610011174.7/2.html,转载请声明来源钻瓜专利网。