[发明专利]基于紧凑内存池的内存访问异常监控方法在审

专利信息
申请号: 202210682081.2 申请日: 2022-06-15
公开(公告)号: CN115080343A 公开(公告)日: 2022-09-20
发明(设计)人: 史晓华;付全发 申请(专利权)人: 北京航空航天大学
主分类号: G06F11/30 分类号: G06F11/30
代理公司: 北京永创新实专利事务所 11121 代理人: 周长琪
地址: 100191*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 紧凑 内存 访问 异常 监控 方法
【说明书】:

发明提供了一种基于紧凑内存池的内存访问异常监控方法,属于计算机技术领域。本发明方法对内存访问错误检测工具ASan的内存池进行优化,改进堆变量的内存分配方式,包括:对同一应用程序的堆变量,将不同大小的内存块用同一个内存池来分配存储地址;将分配的每个内存块对应红黑树的一个节点,利用内存块后端的内存保护区维护一颗红黑树;通过红黑树可以快速检索到内存块的首地址,当超过红黑树节点的地址范围时可以发现程序异常。本发明方法在保证ASan检测性能的前提下,避免产生多个碎片化的Shadow Memory,减少了ASan内存池中内存的使用浪费。

技术领域

本发明属于计算机技术领域,具体涉及一种基于紧凑内存池的内存访问异常监控方法。

背景技术

C/C++的优点使其具有极大的吸引力,并且在某些情况下必不可少:它运行速度优异、内存和磁盘空间小、成熟、执行可预测,并且它们的平台适用性几乎无与伦比,在一个平台上无需安装任何其他工具即可使用这门语言。但与Java、Golang这类运行时系统不同,C/C++语言为了出色的程序运行效率,并没有运行时系统提供的内存管理机制,需要用户手动的管理内存。这就导致C/C++程序出现了其他语言(带内存管理机制的语言)不同的漏洞,即内存安全问题。

针对C/C++程序内存安全问题,开源社区先后涌现出一大批内存安全检测工具,如:Valgrind,AddressSanitizer,HWAddressSanitizer等。ASan(AddressSanitizer)在2012年由Google开源,由于其优异的性能和额外资源消耗更低而普遍应用于程序检测中,逐渐替代了Valgrind。ASan通过源码插桩和动态链接库的方式,对程序的指针越界,释放后使用等内存安全问题进行捕获。主要是通过Shadow Memory(影子映射内存),Redzone(内存保护区)、Memory Quarantine(内存隔离区)及其他辅助数据结构完成。

由于分配给应用程序的所有内存都是可以正常访问的,并没有一个机制能够有效区分指针越界或释放后使用,因此,通过引入Shadow Memory来标识内存是否可以访问,每一个应用程序使用的内存都有一块Shadow Memory与之对应,当程序可以访问这块内存时,置Shadow Memory为自然数,当该内存不可访问时,则置为负数。如图1所示,为ShadowMemory的示意图。

Shadow Memory的引入,将程序的内存分门别类。接下来,就是内存安全问题归结为非法内存,使Shadow Memory可以有效区分。由于应用程序要尽可能充分的使用内存,所以两个变量之间是紧密排列的,没有间隙。ASan通过引入内存保护区用于捕获指针越界问题,当需要分配一个内存块时,在内存块的两端多分配一些内存,大小根据想要分配的内存按比例计算,称之为内存保护区。把内存保护区的Shadow Memory置为不可访问,这样当发生指针越界时,会访问到内存保护区,即可捕获到指针越界。

程序的变量分为全局变量,局部变量和堆变量。本发明主要围绕堆变量的内存分配问题。程序需要维护内存池来高效合理的分配堆变量,但由于堆变量的特殊性,内存安全检测工具使用了类似于Slab机制的内存池,但这种方式比较消耗内存。

现有类Slab内存池机制,为16B、32B、…、65536B这30种内存块,分别分配一个固定大小,如1MB大小的内存池,专门用来分配固定大小的内存块,当用完,则再分配一个1MB的内存池。如图2所示,就是两个1MB的内存池,分别用来分配16B和32B的内存块。这个内存池可以满足一个内存块的任何地址都可以定位到首地址,每个内存池都是1MB地址对齐的,k字节内存块在内存池中是k字节对齐的。由于操作系统分配物理内存的最小单位是一个物理页,一般为4KB,而在使用类Slab机制分配一块内存池,如1MB内存池来分配特定大小的内存块chunk,如16B,如果程序只分配很少次16B,如分配5次,则4KB-5*16B的内存都被浪费掉。不仅仅如此,内存块是离散的也就导致了Shadow Memory是离散的,也导致了ShadowMemory内存消耗的增长。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202210682081.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top