[发明专利]一种用户态与内核态共享内存的管理方法和装置有效
申请号: | 201210523851.5 | 申请日: | 2012-12-04 |
公开(公告)号: | CN103034544A | 公开(公告)日: | 2013-04-10 |
发明(设计)人: | 赵丹 | 申请(专利权)人: | 杭州迪普科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 310051 浙江省杭*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用户 内核 共享 内存 管理 方法 装置 | ||
技术领域
本发明涉及数据交换技术,尤其涉及一种用户态与内核态共享内存的管理方法和装置。
背景技术
随着互联网(Internet)的迅猛发展,内核态进程和用户态进程之间的数据交互越来越频繁,并且交互的数据量越来越大。内核态进程和用户态进程各自使用自己的地址空间,两个状态看到的虚拟地址空间是分离的,内核态进程和用户态进程之间的数据交互需要专门的机制例如共享内存机制来实现。
在共享内存机制中,通过将一段物理内存同时映射到内核态地址空间和用户态地址空间,来实现内核态进程和用户态进程之间的数据通信。内存映射完成后,内核态进程和用户态进程分别会获得共享内存的基地址(虚拟地址)和长度。由于内核态进程和用户态进程所获取的基地址是不同的,所以要是使用传统的链表内保存共享内存中内存对象的起始地址(虚拟地址)的方法来动态管理共享内存,就无法解决用户态进程和内核态进程通用的问题。
具体地,现有技术中主要提供如下两种方案来进行共享内存的管理。
方案一
一次性映射一大块共享内存,然后静态为使用者(内核态进程或用户态进程)分配共享内存空间,即不管使用者最终使用多少内存,统一给使用者分配一定数量的内存。
该方案的缺点在于:1、如果使用者最终使用的内存小于为其分配的内存,会浪费内存;2、如果使用者最终使用的内存大于为其分配的内存,将导致内存越界,破坏其他内存使用者存储的信息;3、不利于内存的回收和重新使用。
方案二
不同使用者(内核态进程或用户态进程)各自映射所需的共享内存,使用后将其释放,下次使用再重新映射。
该方案的缺点在于:每次内核态进程和用户态进程交互数据都需要进行共享内存的映射,这样增大了系统的开销,降低了内核态进程和用户态进程之间数据交互效率。
发明内容
有鉴于此,本发明的目的是提供一种用户态与内核态共享内存的管理方法和装置,能够提高数据的交互效率,同时节约内存。
为实现上述目的,本发明提供技术方案如下:
一种用户态与内核态共享内存的管理方法,包括:
将预定长度的物理内存作为共享内存分别映射到用户态地址空间和内核态地址空间,映射完成后,用户态进程和内核态进程在各自的地址空间分别得到共享内存的基地址;
将多个伪链表的头节点保存到共享内存的最后区域,其中,伪链表的节点的结构包括对象类型和伪链表中下一个节点的起始地址相对于基地址的偏移,且每种对象类型对应一种长度的内存对象;
根据使用者需要申请内存的大小,从所述多个伪链表中选取一个伪链表,从所选取的伪链表中选取一个或多个节点,将选取的一个或多个节点对应的内存对象分配给该使用者,并将选取的一个或多个节点从所选取的伪链表中摘除,其中,所述使用者为内核态进程或用户态进程,所述使用者能够将自己的基地址加上所分配的内存对象的起始偏移得到内存对象的起始地址,并根据所述起始地址对所述内存对象进行操作。
一种用户态与内核态共享内存的管理装置,包括:
内存映射单元,用于将预定长度的物理内存作为共享内存分别映射到用户态地址空间和内核态地址空间,映射完成后,用户态进程和内核态进程在各自的地址空间分别得到共享内存的基地址;
伪链表建立单元,用于将多个伪链表的头节点保存到共享内存的最后区域,其中,伪链表的节点的结构包括对象类型和伪链表中下一个节点的起始地址相对于基地址的偏移,且每种对象类型对应一种长度的内存对象;
内存分配单元,用于根据使用者需要申请内存的大小,从所述多个伪链表中选取一个伪链表,从所选取的伪链表中选取一个或多个节点,将选取的一个或多个节点对应的内存对象分配给该使用者,并将选取的一个或多个节点从所选取的伪链表中摘除,其中,所述使用者为内核态进程或用户态进程,所述使用者能够将自己的基地址加上所分配的内存对象的起始偏移得到内存对象的起始地址,并根据所述起始地址对所述内存对象进行操作。
与现有技术相比,本发明提供的内核态和用户态共享内存的管理方案,应用于内核态进程和用户态进程之间存在大量数据交互的场合时,可以提高数据的交互效率,同时节约内存。
附图说明
图1是本发明实施例的用户态与内核态共享内存的管理方法流程图;
图2是本发明实施例中共享内存的构成示意图;
图3是本发明实施例中普通对象对应的内存结构图;
图4是本发明实施例中特殊对象对应的内存结构图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州迪普科技有限公司,未经杭州迪普科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210523851.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种供电式热水器蓄水箱
- 下一篇:一种防震抗冲击空调柜