CN1304951C - 一种数字信号处理通讯应用系统内存保护方法 - Google Patents
一种数字信号处理通讯应用系统内存保护方法 Download PDFInfo
- Publication number
- CN1304951C CN1304951C CNB2004100448724A CN200410044872A CN1304951C CN 1304951 C CN1304951 C CN 1304951C CN B2004100448724 A CNB2004100448724 A CN B2004100448724A CN 200410044872 A CN200410044872 A CN 200410044872A CN 1304951 C CN1304951 C CN 1304951C
- Authority
- CN
- China
- Prior art keywords
- memory
- storage location
- internal storage
- border
- pointer
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种在通信领域DSP嵌入式应用系统中的内存保护方法,它在整个存储单元操作中,使用存储器管理器实现所定义的存储器段的管理,使用锁实现存储单元的独占操作。并定义数据结构用于内存操作的信息统计,通过增加地址指针的头数据结构和越界检验单元,监测内存的使用率和在地址分配及释放时可能发生的错误。本发明提出了在DSP实时应用系统中,集合DSP提供的功能,实现一种简单而有效的内存保护方法,该方法操作简单快速,对系统性能影响极小,在仅仅增加很少的内存单元开销,保证系统实时性的基础上,提高了DSP应用系统的稳定性和可靠性。
Description
技术领域
本发明涉及在通信领域DSP(Digital Signal Processing,数字信号处理)嵌入式应用系统中的内存保护方法。
背景技术
随着GSM、2.5G、3G和无线局域网技术的快速发展,实时DSP应用系统已经广泛地应用在信号处理的各个方面。而新一代的DSP处理器,如TI公司的TMS320C6000系列,具有优化的CPU结构、丰富的外设接口、多级流水机制,其处理能力可以达到4800MIPS(百万指令每秒)或更高,被广泛地应用在多通道无线和有线通讯领域。
在通讯系统功能实现过程中,由于数据处理的需要,必然会涉及到内存单元的申请和释放。由于其实时性、快速处理的要求以及DSP处理器的资源限制,不太可能采用诸如通用商业操作系统所采用的内存管理单元和保护机制。DSP系统一般使用实际存储器管理策略。采用简单、快速的内存分配方案。对内存的访问是直接的,它对地址的访问往往不需要经过内存管理单元,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址,而且大多数DSP应用系统对内存空间没有保护机制,各个进程实际上共享一个运行空间。在进程执行过程中,需要使用系统为其分配地址空间,在进程终止后或其所使用的内存单元不再需要时,进程需要释放所申请的存储单元。系统对进程所使用的存储单元没有保护措施,如进程程序在运行中使用了非法地址空间或对某些存储单元执行了非法地址操作,则可能会引起不可预知的后果。
发明内容
本发明的目的就是为了解决上述问题,提出一种简便高效的数字信号处理通讯应用系统内存保护方法,以提高系统稳定性。
本发明的技术解决方案:
一种数字信号处理通讯应用系统内存保护方法,其特征在于它采用如下步骤实现:
a.定义相应的数据处理所需要的内存段;
b.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制;
c.定义相应的数据结构作为头指针用于内存单元的分配和释放;
d.定义指针越界检验单元的长度和填充值;
e.申请内存单元,添加头指针到所申请的内存单元的头部,添加越界检验单元到所分配的内存单元的尾部;
f.释放内存单元,利用所定义的内存单元的头指针数据结构检查待释放内存单元指针参数的合法性,利用尾部的越界检验单元检查待释放的内存单元是否越界。
本发明方法在DSP应用系统的内存缓冲池的设计时,根据系统设计的要求,使用DSP存储器管理器,定义和实际物理内存空间相对应的存储器段,分配不同目的的数据缓存池到相应的存储器段。存储器管理器管理各存储器段,在存储器段中分配和释放内存单元,限制相应数据存储单元的操作范围,减少缓存池越界的可能性。同时建立内存操作锁,实现对片内和片外的存储单元操作时的互斥机制,防止对内存单元的同时操作。定义一个相应的数据结构用于内存单元的申请,将此数据结构的实例作为头再加到所分配的地址指针的前面。在所分配的地址指针之后加入预留字段,添入越界检验值。在内存单元释放时,利用此地址指针的头指针数据结构,判断被释放地址空间的指针的合法性;利用地址指针尾部的保护字段判断地址指针结束符是否遭到破坏,监测在系统内存分配和释放过程中可能出现的错误。由此引入内存保护机制,减少内存单元出错概率,并能快速发现可能发生的内存使用错误。本发明方法使得DSP应用系统的内存缓存池设计简单、高效,提高系统的可靠性。
附图说明
图1是本发明的初始内存缓存池定义示图。
图2是本发明中申请内存单元添加的头指针数据结构和尾部检验单元的处理流程图。
图3是本发明中释放内存单元时的检验流程图。
具体实施方式
DSP实时应用系统的稳定性、高效性和可靠性与系统的内存管理、内存单元的有效分配和释放有着必然的关系。因此设计DSP应用系统,需要考虑内存缓存池的设计和采用相应的内存保护机制;使存储资源能满足系统正常的内存分配的需要;并能观察内存的使用情况,监测内存使用中可能出现的异常情况;防止内存越界,占用其它程序的运行地址空间,导致其它程序的运行异常,破坏系统的正常工作或引起系统崩溃。
本发明方法在整个存储单元操作中,使用存储器管理器实现所定义的存储器段的管理,使用锁实现存储单元的独占操作。并定义数据结构用于内存操作的信息统计,监测内存的使用率和可能出现的内存故障。其具体实现步骤为:
1.DSP应用系统一般包括片内和片外存储器;片内存储器存取速度较快,但容量较小;片外存储器存取速度较慢,但容量较大。根据系统设计时对存取速度和内存单元大小的需要,定义相应的数据处理所需要的片内和片外内存段。
2.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制。
3.根据实时系统设计的需求,要使所采用的内存保护机制对系统实时性的影响尽可能小的原则,定义相应的数据结构作为头指针用于内存单元的分配和释放。
4.定义指针越界检验单元的长度和填充值。
5.1.在内存单元申请时,添加头指针到所申请的内存单元的头部。
5.2.添加越界检验单元到所分配的内存单元的尾部。
6.1.在释放内存单元时,利用所定义的内存单元头指针数据结构检查待释放内存单元指针参数的合法性。
6.2.利用尾部的越界检验字单元检查待释放的内存单元是否越界。
下面结合附图对本发明技术方案的实施作进一步的详细描述:
首先说明在系统运行前,图1完成内存管理和保护机制所需要的初始设置。根据系统要求的内存缓冲池的大小和运行性能的要求,在DSP的片内或片外存储空间定义相应的内存段,设定内存段的起始地址、长度和相关属性。在所创建的内存段中分配相应的数据处理的内存缓存池。在系统中创建获取内存操作锁,用于在内存单元的操作互斥保护。
图2说明在申请内存时,头指针数据结构和尾部越界检验单元的处理方法。定义头指针数据结构TUBHead为:
typedef struct tagTUBHead
{
分配地址大小(dwAlloc_Mem_Size;)
起始地址指针(dwStart_Addr;)
}TUbHead;
dwAlloc_Mem_Size是数据处理需要分配的内存的大小,dwStart_Addr是除去地址指针头部后实际返回给上层调用的存储单元位置。定义的尾部越界检验单元长度是RESERVE_LEN,其填充的值为BYTE_FILL_VALUE,该值要和可能出现的存储单元正常取值相区别。在预申请一个长度dwSize的内存单元时,实际分配的内存单元的长度是dwSize+TubHead的长度+越界检验单元长度。具体操作流程如下:
1)获取内存操作锁取得对内存单元操作权限。
2)实际分配dwSize+TubHead的长度+越界检验单元长度大小的内存单元。
3)使dwStart_Addr指向分配的指针单元偏移TubHead长度的位置。
4)在分配的指针单元的尾部RESERVE_LEN长的存储单元添入BYTE_FILL_VALUE的值。
5)返回dwStart_Addr给上层调用。
6)释放内存操作锁。
图3显示了在内存单元释放时的操作流程。
1)获取内存操作锁取得对内存单元操作权限。
2)首先进行输入待释放的起始地址指针的合法性检查,判断起始地址指针是否大于TubHead的长度,如不大于则结束。
3)如大于则起始地址指针偏移头指针数据结构TubHead的长度,即偏移后指针=起始地址指针-TubHead的长度。
4)通过偏移后指针数据结构的dwStart_Addr的值判断输入的地址指针是否是有效,如dwStart_Addr的值等于输入的地址指针的值则有效,继续下一步,如无效则结束。
5)根据尾部越界检验单元的填充值判断待释放的内存单元尾部是否越界,如越界则记录错误统计信息。
6)如不越界则置头指针数据结构dwAlloc_Mem_Size和起始地址指针dwStart_Addr为零,释放内存单元,。
7)释放内存操作锁。
本发明提出了在DSP实时应用系统中,集合DSP提供的功能,实现一种简单而有效的内存保护方法。此方法通过增加地址指针的头数据结构和越界检验单元,监测在地址分配和释放时可能发生的错误。而且该方法操作简单快速,对系统性能影响极小。在仅仅增加很少的内存单元开销,保证系统实时性的基础上,提高了DSP应用系统的稳定性和可靠性。
Claims (4)
1、一种数字信号处理通讯应用系统内存保护方法,其特征在于它采用如下步骤实现:
a.定义相应的数据处理所需要的内存段;
b.建立内存操作锁,用于在对指定内存段的内存单元进行操作时实现互斥机制;
c.定义相应的数据结构作为头指针用于内存单元的分配和释放;
d.定义指针越界检验单元的长度和填充值,填充值和出现的内存单元正常取值相区别;
e.申请内存单元,添加头指针到所申请的内存单元的头部,添加越界检验单元到所分配的内存单元的尾部;
f.释放内存单元,利用所定义的内存单元的头指针数据结构检查待释放内存单元指针参数的合法性,利用尾部的越界检验单元检查待释放的内存单元是否越界。
2、按权利要求1所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于:在所述定义相应的数据处理所需要的内存段是根据系统要求的内存缓冲池的大小和运行性能的要求,在数字信号处理的片内或片外存储器的存储空间定义相应的内存段,设定内存段的起始地址、长度和相关属性,在所创建的内存段中分配相应的数据处理的内存缓存池。
3、按权利要求1所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于:在所述申请内存单元包括:
e1)获取内存操作锁取得对内存单元操作权限;
e2)实际分配预申请内存单元长度+头指针数据结构长度+越界检验单元长度的内存单元;
e3)使起始地址指针指向分配的内存单元偏移头指针数据结构长度的位置;
e4)在分配的内存单元的尾部添入越界检验单元的填充值;
e5)返回起始地址指针给调用函数;
e6)释放内存操作锁。
4、按权利要求3所述的一种数字信号处理通讯应用系统内存保护方法,其特征在于在所述内存单元释放时按下述流程进行:
f1)获取内存操作锁取得对内存单元操作权限;
f2)首先对待释放的起始地址指针的合法性检查,判断起始地址指针是否大于头指针数据结构的长度,如不大于则结束;
f3)如大于则起始地址指针偏移头指针数据结构的长度,即偏移后指针=起始地址指针-头指针数据结构的长度;
f4)通过偏移后头指针数据结构的值判断起始地址指针是否有效,如无效则结束,如有效则继续;
f5)根据尾部越界检验单元的填充值判断待释放的内存单元尾部是否越界,如越界则记录错误统计信息;
f6)如正常则设置头指针数据结构和起始地址指针为零,释放内存单元;
f7)释放内存操作锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100448724A CN1304951C (zh) | 2004-05-28 | 2004-05-28 | 一种数字信号处理通讯应用系统内存保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100448724A CN1304951C (zh) | 2004-05-28 | 2004-05-28 | 一种数字信号处理通讯应用系统内存保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1584845A CN1584845A (zh) | 2005-02-23 |
CN1304951C true CN1304951C (zh) | 2007-03-14 |
Family
ID=34601791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100448724A Expired - Fee Related CN1304951C (zh) | 2004-05-28 | 2004-05-28 | 一种数字信号处理通讯应用系统内存保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1304951C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685421B (zh) * | 2008-09-24 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种dsp内存的获取方法和装置 |
CN102541748B (zh) * | 2011-12-28 | 2014-06-25 | 青岛海信宽带多媒体技术有限公司 | 一种内存保护方法 |
CN102543164B (zh) * | 2011-12-29 | 2015-02-11 | 北京控制工程研究所 | 一种航天器dsp芯片的数据保护方法 |
CN104850505B (zh) * | 2015-05-26 | 2017-08-25 | 左应鹏 | 基于链式堆叠的内存管理方法与系统 |
CN105608017A (zh) * | 2015-12-11 | 2016-05-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种存储器的控制电路及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998043167A1 (en) * | 1997-03-21 | 1998-10-01 | Canal+ Societe Anonyme | Computer memory organization |
CN1434389A (zh) * | 2003-03-07 | 2003-08-06 | 张有成 | 一种基于BIOS层的Linux硬盘数据备份与还原方法 |
-
2004
- 2004-05-28 CN CNB2004100448724A patent/CN1304951C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998043167A1 (en) * | 1997-03-21 | 1998-10-01 | Canal+ Societe Anonyme | Computer memory organization |
CN1434389A (zh) * | 2003-03-07 | 2003-08-06 | 张有成 | 一种基于BIOS层的Linux硬盘数据备份与还原方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1584845A (zh) | 2005-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402487B (zh) | 一种零拷贝接收报文的方法和系统 | |
CN102156675B (zh) | 一种内存分配方法及装置 | |
CN1266590C (zh) | 面向构件基于系统内核的进程池/线程池管理方法 | |
CN100487658C (zh) | 一种检测内存访问越界的方法 | |
CN1996258A (zh) | 一种动态内存池的实现方法 | |
CN1271524C (zh) | 一种静态内存管理方法 | |
CN102063385A (zh) | 一种内存管理方法和系统 | |
CN102662850B (zh) | 一种内存管理方法及其系统 | |
CN101493787A (zh) | 一种内存操作的管理方法及系统 | |
CN1304951C (zh) | 一种数字信号处理通讯应用系统内存保护方法 | |
CN110727517A (zh) | 一种基于分区设计的内存分配方法和装置 | |
CN106326004A (zh) | 一种嵌入式数据库的动态内存分配方法 | |
US8725974B2 (en) | Page-protection based memory access barrier traps | |
CN1967508A (zh) | 一种对内存进行保护的方法 | |
Younan et al. | Efficient protection against heap-based buffer overflows without resorting to magic | |
Raoufi et al. | IR-ORAM: Path access type based memory intensity reduction for path-oram | |
CN115879107A (zh) | 计算机装置及其访存方法、处理装置和存储介质 | |
CN112000484A (zh) | 栈帧地址随机化方法及相关设备 | |
CN102521079B (zh) | 软件栈缓冲区溢出的容错方法 | |
CN115080343A (zh) | 基于紧凑内存池的内存访问异常监控方法 | |
CN117729022B (zh) | 一种软硬件结合的虚拟机防攻击保护方法和装置 | |
CN105740170B (zh) | 一种缓存脏页刷写方法及装置 | |
Hameed et al. | Reducing inter-core cache contention with an adaptive bank mapping policy in DRAM cache | |
CN112199042B (zh) | 存储空间管理方法、装置、芯片、设备及存储介质 | |
CN102214147A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070314 Termination date: 20190528 |