CN102541748B - 一种内存保护方法 - Google Patents
一种内存保护方法 Download PDFInfo
- Publication number
- CN102541748B CN102541748B CN201110446650.5A CN201110446650A CN102541748B CN 102541748 B CN102541748 B CN 102541748B CN 201110446650 A CN201110446650 A CN 201110446650A CN 102541748 B CN102541748 B CN 102541748B
- Authority
- CN
- China
- Prior art keywords
- memory
- information
- identification information
- consistent
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种内存保护方法,包括以下步骤:(1)、每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;(2)、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;(3)、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。本方法通过在所分配的内存另外开辟一段存储有标识信息的空间,一起分配给用户,当用户释放内存时,判断标识信息的正确性,进而可以判断出内存是否被踩,并做出记录,可以有效的监控检查内存,极大提升系统稳定性及可靠性。
Description
技术领域
本发明涉及一种内存保护方法,属于内存管理技术领域。
背景技术
现有OS(操作系统)的内存管理机制能够让用户灵活动态的使用操纵内存,这种机制给用户带来便利的同时也带来了极大的安全隐患。伴随技术的快速发展,软件规模越来越庞大,软件的复杂度也极大提高,这样就会导致内存使用的随意性大大增加,内存被破坏的可能性也大大提高,而有的内存管理机制无法识别内存地址的合法性,在用户动态申请、释放内存时就会带来极大的安全隐患,导致系统极为不稳定,严重情况可导致系统瘫痪,导致设备无法正常工作。
现有一些解决方案虽然在一定程度上解决了一些内存的隐患,但绝大部分仅仅保护内存首地址信息而没有对整块内存进行有效保护。
针对上述情况,如何提出一种内存保护方法,在对整块内存加以保护的同时还采用了内存记录日志系统对内存使用情况进行了有效的跟踪记录,是本发明主要解决的问题。
发明内容
本发明为了解决现有内存保护机制不完善的问题,提供了一种内存保护方法,可以有效的监控检查内存,极大提升系统稳定性及可靠性。
为了解决上述技术问题,本发明采用以下技术方案予以实现:
一种内存保护方法,包括以下步骤:
(1)、每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;
(2)、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;
(3)、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。
进一步的,步骤(1)中所开辟的存储有标识信息的空间为:
在实际分配的内存空间的两端分别加入头、尾两部分标识信息,其中,头标识信息记录为DOGTAG_VALID,尾标识信息记录为DOGTAG_TAIL。
又进一步的,步骤(2)中判断标识信息中是否包含内存空间释放的信息的方式为:判断头标识信息中是否包含内存空间释放的信息。
再进一步的,当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放:DOG_FREE。
优选的,当用户释放内存时,还包括将内存块清零的步骤。
步骤(3)中判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为:
(31)、首先判断头标识中的信息是否与DOGTAG_VALID一致,若不一致,记录错误信息,若一致,执行步骤(32);
(32)、判断尾标识中的信息是否与DOGTAG_TAIL一致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放:DOG_FREE。
步骤(3)中记录错误信息的方式为:创建内存日志记录系统,当用户分配内存时,建立一个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息时,将错误信息记录于内存日志记录系统中。
当释放内存时,从所述节点移除,并将移除时的DOG_FREE信息记录到内存日志记录系统中。
优选的,所述头标识信息的数据大小为8字节。
优选的,所述尾标识信息的数据大小为4字节。
与现有技术相比,本发明的优点和积极效果是:本发明的内存保护方法原有操作系统的内存管理基础上引入了狗牌保护机制及内存记录日志系统,在动态内存管理上加入狗牌标记,有效识别并记录内存使用情况,确保用户使用操作的内存合法有效,并协助用户监控、检查内存是否有泄漏,有效提升了系统稳定性。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明所提出的内存保护方法的一种实施例流程图;
图2是本发明所提出的内存保护方法的一种实施例的内存空间示意图;
图3是本发明所提出的内存保护方法的一种实施例的内存日志记录系统结构示意图。
具体实施方式
本发明为了解决现有内存保护机制不完善的问题,提供了一种内存保护方法,通过在所分配的内存另外开辟一段存储有标识信息的空间,一起分配给用户,当用户释放内存时,判断标识信息的正确性,进而可以判断出内存是否被踩,并做出记录,可以有效的监控检查内存,极大提升系统稳定性及可靠性。
下面结合附图对本发明的具体实施方式作进一步详细地说明。
实施例一,参见图1所示,本实施例的内存保护方法,包括以下步骤:
S1、每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;
S2、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;
S3、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息。
作为一个具体的实施例,在本实施例中,参见图2所示,步骤S1中所开辟的存储有标识信息的空间为:
在实际分配的内存空间的两端分别加入头、尾两部分标识信息,其中,头标识信息记录为DOGTAG_VALID,尾标识信息记录为DOGTAG_TAIL。
其中,头标识信息中可以记录头标识和分配的内存大小,尾标识信息中记录有尾标识,优选所述头标识信息的数据大小为8字节,其中两部分内容的信息各占4字节,由于尾标识信息中只记录了尾标识,因此,为其分配4字节即可实现。这样,也即为所分配的内存做了独一无二的标记,在释放内存时只需要检查标记的合法性,即可以判断内存是否被踩,防止由于用户误使用内存导致的异常。
步骤S2中判断标识信息中是否包含内存空间释放的信息的方式为:判断头标识信息中是否包含内存空间释放的信息。
由于当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放:DOG_FREE。
因此,在步骤S2中,判断标识信息中是否包含内存空间释放的信息的方式也即判断头标识信息中是否包含DOG_FREE,若包含,则说明内存空间释放,否则,有可能出现两种情况:内存被踩或者系统未及时修改内存空间释放,具体属于哪种情况还需步骤S3做进一步判断。
为了及时清空内存块的空间,当用户释放内存时,还包括将内存块清零的步骤。
步骤S3中判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为:
S31、首先判断头标识中的信息是否与DOGTAG_VALID一致,若不一致,记录错误信息,若一致,执行步骤S32;
也即,若内存没有被踩的话,首先头标识中的信息与DOGTAG_VALID是一致的,一旦出现不一致情况,则说明内存被踩,或者用户操作不当造成了出错,此时记录错误信息,若是一致的,则继续检查尾标识中的信息是否正常。
S32、判断尾标识中的信息是否与DOGTAG_TAIL一致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放:DOG_FREE。
同样道理的,若内存没有被踩的话,尾标识中的信息与DOGTAG_TAIL是一致的,一旦出现不一致情况,则说明内存被踩,或者用户操作不当造成了出错,此时记录错误信息,若是一致的,则说明内存使用情况正常,未出现错误。
在本实施例中,步骤S3中记录错误信息的方式为:创建内存日志记录系统,当用户分配内存时,建立一个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息时,将错误信息记录于内存日志记录系统中。
参见图3所示,本内存日志记录系统可以采用双向链表式结构进行管理,将用户动态使用的内存信息做一一记录。通过表中记录的内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息,可有效定位到用户分配内存时的大小、所在文件名以及行号等。其中附属信息采用联合的结构描述,在分配内存是该结构记录下该节点的pre和next节点信息,以方便查询数据,当释放内存后,该联合结构记录下释放内存时所在的文件名及行号,以方便用户查询历史分配记录。
当释放内存时,从所述节点移除,并将移除时的DOG_FREE信息记录到内存日志记录系统中,以方便用户查询。
本发明对用户使用的整块内存加上保护机制,能够及时发现内存是否被踩,进而给用户预警哪部分内存被踩,并根据内存记录日志系统记录的内存情况协助用户进行有效的监控、检查,极大提升系统稳定性及可靠性。本内存保护方法适合应用于数字电视机顶盒、手机等带有实时操作系统的设备上。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
Claims (7)
1.一种内存保护方法,其特征在于,包括以下步骤:
(1)、每次分配内存时,另外开辟一段存储有标识信息的空间,并一起分配给用户;
所开辟的存储有标识信息的空间为:
在实际分配的内存空间的两端分别加入头、尾两部分标识信息,其中,头标识信息记录为DOGTAG_VALID,尾标识信息记录为DOGTAG_TAIL;
(2)、当用户释放内存时,判断标识信息中是否包含内存空间释放的信息,若是,则结束;
(3)、若标识信息中没有包含内存空间释放的信息,则判断标识信息中的信息是否与分配内存时所存储的标识信息一致,若一致,则结束,否则,记录错误信息,其中记录错误信息的方式为:创建内存日志记录系统,当用户分配内存时,建立一个日志记录系统节点,并将内存块首地址、内存块大小、分配内存所在的文件名、分配内存所在的行号以及附属信息填充于日志记录系统中,当需要记录错误信息时,将错误信息记录于内存日志记录系统中,
判断标识信息中的信息是否与分配内存时所存储的标识信息一致的方式为:
(31)、首先判断头标识中的信息是否与DOGTAG_VALID一致,若不一致,记录错误信息,若一致,执行步骤(32);
(32)、判断尾标识中的信息是否与DOGTAG_TAIL一致,若不一致,记录错误信息,若一致,则将头标识中的信息修改为内存空间释放:DOG_FREE。
2.根据权利要求1所述的内存保护方法,其特征在于,步骤(2)中判断标识信息中是否包含内存空间释放的信息的方式为:判断头标识信息中是否包含内存空间释放的信息。
3.根据权利要求2所述的内存保护方法,其特征在于,当用户释放内存时,调用释放指令,并且将头标识中的信息修改为内存空间释放:DOG_FREE。
4.根据权利要求3所述的内存保护方法,其特征在于,当用户释放内存时,还包括将内存块清零的步骤。
5.根据权利要求1所述的内存保护方法,其特征在于,当释放内存时,从所述节点移除,并将移除时的DOG_FREE信息记录到内存日志记录系统中。
6.根据权利要求2-4任一项权利要求所述的内存保护方法,其特征在于,所述头标识信息的数据大小为8字节。
7.根据权利要求2-4任一项权利要求所述的内存保护方法,其特征在于,所述尾标识信息的数据大小为4字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110446650.5A CN102541748B (zh) | 2011-12-28 | 2011-12-28 | 一种内存保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110446650.5A CN102541748B (zh) | 2011-12-28 | 2011-12-28 | 一种内存保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541748A CN102541748A (zh) | 2012-07-04 |
CN102541748B true CN102541748B (zh) | 2014-06-25 |
Family
ID=46348688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110446650.5A Active CN102541748B (zh) | 2011-12-28 | 2011-12-28 | 一种内存保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541748B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183542B (zh) * | 2015-08-13 | 2019-07-12 | 上海斐讯数据通信技术有限公司 | 一种内存管理方法及系统 |
CN110866589B (zh) * | 2018-08-10 | 2023-06-30 | 阿里巴巴(中国)有限公司 | 深度神经网络模型的运行方法、装置及框架 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584845A (zh) * | 2004-05-28 | 2005-02-23 | 中兴通讯股份有限公司 | 一种数字信号处理通讯应用系统内存保护方法 |
CN101110042A (zh) * | 2006-07-20 | 2008-01-23 | 中兴通讯股份有限公司 | 一种检测内存访问越界的方法 |
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7178136B2 (en) * | 2003-06-30 | 2007-02-13 | International Business Machines Corporation | Debugging step-back button |
-
2011
- 2011-12-28 CN CN201110446650.5A patent/CN102541748B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584845A (zh) * | 2004-05-28 | 2005-02-23 | 中兴通讯股份有限公司 | 一种数字信号处理通讯应用系统内存保护方法 |
CN101110042A (zh) * | 2006-07-20 | 2008-01-23 | 中兴通讯股份有限公司 | 一种检测内存访问越界的方法 |
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102541748A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829384A (zh) | 容器的管理方法、装置、计算机设备及存储介质 | |
CN105260314B (zh) | 内存泄漏的监测方法 | |
CN105933391A (zh) | 一种节点扩容方法、装置及系统 | |
CN107122133B (zh) | 数据存储方法及装置 | |
CN108038384B (zh) | 一种高安全的集群共享存储虚拟化方法 | |
CN107608826A (zh) | 一种存储集群的节点的故障恢复方法、装置及介质 | |
CN101201783A (zh) | 网络存储系统的存储空间不足预警方法 | |
CN102541748B (zh) | 一种内存保护方法 | |
CN112035216A (zh) | 一种Kubernetes集群网络和OpenStack网络的打通方法 | |
CN111163189A (zh) | 一种基于网络命名空间管控的ip监控和回收系统与方法 | |
CN103309796A (zh) | 一种组件对象模型对象的监控方法和装置 | |
CN110659259A (zh) | 数据库迁移方法、服务器以及计算机存储介质 | |
CN109391691A (zh) | 一种单节点故障下nas服务的恢复方法及相关装置 | |
CN105718319A (zh) | 一种内存池版图解析方法和内存池装置 | |
CN107908505A (zh) | 一种数据存储方法、装置、设备及系统 | |
US9092396B2 (en) | Standby system device, a control method, and a program thereof | |
CN108008913A (zh) | 一种基于管理节点的扩容方法、装置及存储系统 | |
CN110321199B (zh) | 一种共用数据变更的通知方法、装置、电子设备及介质 | |
CN105450679A (zh) | 进行数据云存储的方法及系统 | |
CN102420856B (zh) | 一种数据处理方法和设备 | |
CN105790975A (zh) | 一种业务处理操作的执行方法及装置 | |
CN112650645B (zh) | 堆内存使用情况监测方法、装置和5g基站设备 | |
CN105631317B (zh) | 一种系统调用方法及装置 | |
CN114706526A (zh) | 云原生存储数据卷的自动扩容方法、系统及设备 | |
CN104239192A (zh) | 内存监控处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |