[发明专利]基于代码段多副本对比机制提高程序可靠性方法无效
申请号: | 201010239426.4 | 申请日: | 2010-07-28 |
公开(公告)号: | CN101901174A | 公开(公告)日: | 2010-12-01 |
发明(设计)人: | 张兴军;董小社;雷济凯;郑豪;刘鹏飞;王恩东;胡雷钧;张东;伍卫国 | 申请(专利权)人: | 西安交通大学;浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 陆万寿 |
地址: | 710049*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 代码 副本 对比 机制 提高 程序 可靠性 方法 | ||
技术领域
本发明属于计算机领域,涉及计算机容错技术,特别涉及一种基于代码段多副本对比机制提高程序可靠性方法。
背景技术
随着互联网的发展以及计算机应用的不断普及和深入,各个行业、各种应用对计算机系统可靠性要求越来越高。尤其是面向高端、关键业务的应用越来越多,系统可靠性问题变得日益突出。在现代企业中,服务器宕机时间是损失利润的主要原因之一。由此可见,对于需要向用户提供不间断服务或需要保证信息安全的机构来说,如何保证业务系统的可靠性十分重要。容错计算机及相关技术正是在这种客观需求下应运而生,利用容错计算机能避免因服务器故障而引发的数以万计的经济损失。
通过对运行在计算机系统上的程序进行保护是计算机系统常用的容错技术之一。计算机系统在设计时提供了对于程序的保护机制。绝大部分处理器都提供了虚拟内存保护机制,操作系统通过设置特定的标志位可以限制对于程序代码的写操作,防止错误程序或恶意程序的破坏,从而提高程序的可靠性。但这种传统程序保护技术存在不足之处:
1)对于由于瞬时故障造成的代码段改变不能进行检测
处理器提供的虚拟内存保护机制,只能够检测由于程序非法读写代码段出现的异常,而对于由于瞬时故障导致的对于代码段的读写不能进行检测。例如由于处理器温度过高造成的内存单元位反转导致的代码段改变是检测不到的。
2)没有考虑硬件技术的发展对计算机系统带来的影响
近年来集成电路制造工艺逐步发展到纳米级,底层集成电路特征尺寸的减少、电源电压的降低和频率的升高,使得处理器对于各种噪声干扰变得更加敏感,因而更容易发生硬件瞬时故障。这些瞬时故障可能造成计算机程序代码段被修改,最终可能引发服务失效甚至系统整体失效。
发明内容
针对背景技术所述程序保护技术存在的缺陷,本发明的目的在于提供一种实现简单、有效的基于代码段多副本对比机制提高程序可靠性方法。
为达到以上目的,本发明是采取如下技术方案予以实现:
一种基于代码段多副本对比机制提高程序可靠性方法,包括下述步骤:
(1)在操作系统中启动一个内核线程作为初始化线程,初始化线程通过进程描述符task_struct中的内存信息描述符mm_struct提取需要保护程序的代码段信息,代码段信息包括代码段大小、起始逻辑地址、结束逻辑地址;
(2)初始化线程根据步骤(1)中提取的代码段信息,建立两份需要保护进程的代码段副本,一份称为主副本,另外一份称为次副本;
(3)初始化进程对需要保护进程的代码段进行划分,把进程代码段划分为多个代码区域,若需要保护进程的代码段大小为代码区域大小的整数倍,则划分得到的代码区域大小都相同;否则划分得到的代码区域中最后一个代码区域大小小于其他代码区域大小。
(4)初始化进程根据步骤(3)中划分的代码区域数量,生成相应数目的内核线程作为一致性维护线程;
(5)每个一致性维护线程针对自己负责的代码区域,进行代码区域一致性维护工作,一致性维护线程进行的一致性维护工作如下:
(a)初始化相应数据结构,包括待比较代码区域相关信息的载入、比较指针的设置;
(b)根据一致性维护线程执行频率设置判断一致性维护线程是否应该睡眠,如果未到达执行频率所规定的等待时间,则设置一致性维护线程状态为睡眠,睡眠时间由执行频率决定;
(c)更新比较指针,比较当前位置进程代码段和主副本的内容,如果内容一致,并且还有数据比较,则继续执行步骤(c);如果内容一致但已经完成所有比较,则转步骤(b);否则执行步骤(d);
(d)如果系统中有其他CPU,则停止其他所有CPU的执行,如果停止其他CPU失败,则向控制台发送警告信息;
(e)判断发生错误的位置:分别比较进程代码段、主副本和次副本当前位置的内容,可能的比较结果及处理方法如下:a)进程代码段和次副本一致但主副本和次副本内容不一致,转步骤(f);b)进程代码段和次副本不一致但主副本和次副本内容一致,转步骤(g);进程代码段和次副本不一致并且主副本和次副本内容不一致,转步骤(h);
(f)此时主副本发生错误,使用次副本的当前位置的内容修改主副本当前位置的内容,恢复主副本错误,如果恢复成功,则记录相关错误以及恢复信息,重新启动系统中其他CPU的执行,转步骤(c)执行;如果恢复失败,则记录相关错误以及恢复信息,杀死当前进程的执行然后结束;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学;浪潮(北京)电子信息产业有限公司,未经西安交通大学;浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010239426.4/2.html,转载请声明来源钻瓜专利网。