[发明专利]面向异构平台的多层次存储结构内存检测方法有效
申请号: | 201910903842.0 | 申请日: | 2019-09-24 |
公开(公告)号: | CN112631893B | 公开(公告)日: | 2022-11-15 |
发明(设计)人: | 武文浩;沈莉;王飞;肖谦;管茂林;周文浩 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 平台 多层次 存储 结构 内存 检测 方法 | ||
本发明公开一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理;S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行。本发明在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。
技术领域
本发明涉及一种面向异构平台的多层次存储结构内存检测方法,属于编译优化技术领域。
背景技术
内存错误是C和C++程序员常见的编程问题之一。内存错误不仅仅会引起运行结果错误、运行程序崩溃,甚至会被黑客恶意利用。内存错误检测可以提高程序正确性、稳定性和安全性。
通用芯片的编译器将内存划分为三个逻辑区域:堆、栈和静态存储区。而国产异构众核处理器是多层次的存储结构,分为数据共享区、代码只读区、动态空间区等,在同一内存空间中,不同功能区空间编址不连续,编址空间范围大,存在多块堆、栈和静态存储区。异构众核处理器编程较为复杂,在C和C++异构代码中,所有内存的操作都要由程序员负责,程序员既要考虑存储结构还需要自己管理各层次内存使用,所以,如果处理不好,就会发生内存问题,并且难以发现定位。如果分配了堆对象,却忘记了释放,就会产生内存泄漏;而如果已释放了对象,却没有将相应的指针置为 NULL,该指针就是所谓的“悬挂指针”,再度使用此指针时,就会出现非法访问,严重时就导致程序崩溃;不正确的内存使用也会产生内存溢出,从而导致程序运行错误或者被黑客利用。一旦产生这些问题,对于程序员来说是致命的,因为代码极其复杂很难准确定位到具体的错误现场。
目前结合编译技术进行的内存错误检测大多专注于静态检测,但静态检测漏报率低但误报率很高,动态检测无法支持多层次的存储空间。通用处理器静态内存检测只是简单的对源码进行词法分析、语法分析等通过简单判断就完成错误检测功能,错误类型不全面,大量检测工具只能检测某一类的内存错误,对于其他类型的错误就束手无策,然而这些错误很可能是影响软件安全的重要一环。通用处理器的动态检测机制效果较好,但是由于动态检测与架构息息相关,因此在内存划分,阴影区映射,功能区区分等方面不能有效支持复杂的多层次存储结构,不适用在拥有多指令集、多层次存储结构的异构众核处理器上。结合编译技术且应用在国产异构众核处理器上的动态内存错误检测工具处于空白,成为本领域技术人员努力的方向。
发明内容
本发明的目的是提供一种面向异构平台的多层次存储结构内存检测方法,该面向异构平台的多层次存储结构内存检测方法在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,为基于国产异构众核处理器的编译器实现动态内存错误检测提供了方法,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。
为达到上述目的,本发明采用的技术方案是:一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:
S1、实现自定义动态运行时库,提供接口函数,主核、从核通过接口函数,调用自定义动态运行时库,在该自定义动态运行时库中实现内存检测及相关工作,具体过程如下:
S11、在内存映射的过程中,建立阴影内存,阴影内存与主存之间的关系是:N=ChooseBlock(mem);shadow=((mem-membeg[N])3)+shadowbeg[N],即阴影内存与主存之间存在一一对应的映射关系;
S12、基于多层次存储结构,自定义动态运行时库按访问权限和功能特性,对主存和阴影内存的虚拟空间进行重新划分,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910903842.0/2.html,转载请声明来源钻瓜专利网。