[发明专利]一种定位特定内存被函数非法改写的方法有效
申请号: | 200810006831.4 | 申请日: | 2008-02-02 |
公开(公告)号: | CN101231599A | 公开(公告)日: | 2008-07-30 |
发明(设计)人: | 杨利君;石江涛 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 信息产业部电子专利中心 | 代理人: | 梁军 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 定位 特定 内存 函数 非法 改写 方法 | ||
技术领域
本发明涉及通信领域,特别涉及一种定位特定内存被函数非法改写的方法。
背景技术
在通信技术领域中,大多数产品采用的是嵌入式实时操作系统,例如Linux、VxWorks等操作系统。在当前数据通讯产品,例如路由器、交换机、以及宽带接入服务器中,都使用了VxWorks作为技术人员开发的基石,内存管理采用了基于VxWorks的扁平(FLAT)内存模式,所有的全局变量、队列、链表、指针可以被所有的任务直接访问。尽管这样可以提高进程或任务间通讯的效率,但同时也很有可能导致系统运行出现异常。
为了避免上述共享内存带来的系统不稳定问题,目前通常考虑使用禁止抢占、关中断或者使用信号量的方式来保护共享内存。
在上述三种方法中,禁止抢占会使内核任务调度暂时失效,但是,除了中断程序,其它任务都不能运行;使用信号量来保护共享内存时,并不禁止其它任务的运行,只会让访问到共享内存资源的任务暂停,尽管对系统实时性影响较小,但是也无法防止中断服务程序对临界资源的访问;而关中断,相对上述两种方式而言更为有效,其可以完全防止其它任务或中断服务程序的冲突访问,执行效率也最高,但是,中断只能关很短时间,否则会造成系统时钟以及其它外部事件都无法得到正确处理,从而极大的降低系统的实时程度。
总之,通过上述三种方式对特定的共享内存进行保护均有各自的缺点,为此,需要找到一种更为有效的防止特定内存被非法改写的方法。
发明内容
本发明的目的在于,提供一种定位特定内存被函数非法改写的方法,能够较好的避免并定位内存被非法改写而不得知的情况,可以提高系统稳定性。
本发明的定位特定内存被函数非法改写的方法,其中,在嵌入式实时操作系统运行中,在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理,并在函数内进行了改写特定内存操作时进行相应的处理及定位。
其中,所述在函数体内设定函数改写特定内存时候的异常处理,为将非法操作任务挂起。
其中,所述在函数内进行了改写特定内存操作时进行相应的处理及定位,包括下列步骤:通过调用系统中的查看运行任务功能的函数,查看当前CPU上运行的所有任务,针对其中处于挂起状态的任务,通过调用系统中的查看当前任务中函数调用情况的函数,查看给定任务的当前函数调用堆栈情况,获知特定内存被哪个函数所改写。
进一步地,可以包括下列步骤:
步骤A:预先设置特定内存空间所在页的页属性为不可写;
步骤B:系统在运行过程中,当有函数访问或改写特定内存时,判断是否允许所述函数访问或改写,如果否,则在不允许访问特定内存的函数体内设定函数改写特定内存时候的异常处理。
其中,在所述步骤A之前,可以进一步包括下列步骤:系统在初始化过程中,设定一内存空间为特定内存,内存空间的大小以页为单位。
其中,在步骤B中,在判断结果为允许所述函数访问或改写时,可以包括下列步骤:在所述函数执行体的开始部分,编写代码设置特定内存所在页属性为可写,然后所述函数执行写特定内存操作的程序指令,并在函数执行结束时设置内存属性为不可写后退出,系统正常运行。
此外,所述嵌入式实时操作系统,为VxWorks系统或者Linux系统。
其中,在VxWorks系统中,所述系统内相关函数,包括查看系统上运行任务的i函数、查看当前任务中函数调用情况的tt函数、以及查看当前任务状态的ti函数。
本发明的有益效果是:依照本发明的定位特定内存被函数非法改写的方法,通过只允许一个或几个有合法写权限的函数可以对重要的共享内存空间执行写操作,对于某些不被授权的函数,则增加针对改写内存操作的异常处理方式,从而能够较好的避免并定位内存被非法改写而不得知的情况,可以提高系统的稳定性。
附图说明
图1为本发明实施例的定位VxWorks特定内存被函数非法改写的方法流程图。
具体实施方式
以下,参考附图详细描述本发明的定位特定内存被函数非法改写的方法。
本发明的核心思想是:对于嵌入式实时操作系统,任务表现为一个函数,该函数就是任务的入口函数,每个任务拥有自己的堆栈,操作系统使用抢占调度或轮转调度对系统中的任务进行调度,所有任务在一个统一的线性地址空间内运行。因此,可利用系统中自带的很多调试函数来查看系统运行异常如任务挂起时候的信息,根据此信息定位任务挂起的原因,从而迅速解决问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810006831.4/2.html,转载请声明来源钻瓜专利网。