【技术实现步骤摘要】
一种基于异步检查点的多线程软件动态升级方法
本专利技术属于软件可靠性研究中的安全领域,更具体地,涉及一种基于异步检查点的多线程软件动态升级方法。
技术介绍
为了针对提供7/24小时服务可靠性,从软件的角度考虑,传统的软件更新方法通常要求停止软件的运行,应用更新后再次重启软件方可完成。这样的停止——重启方式不可避免地破坏了运行服务的执行,降低了软件的可用性。从硬件的角度,有的方案可以在增加服务器镜像的前提下实现动态迁移,待到升级完毕后,将数据重新同步回主服务器,从而保证应用(服务)的可靠性,然而这种方案需要购买额外的冗余硬件,大大的增加了维护成本。综上所述,基于异步检查点的多线程软件动态升级方案将能够很好的提升在线程序(服务)的可靠性,减少宕机时间,增加盈利。为了解决以上问题,动态软件更新(DSU)孕育而生,并且成为目前急切需要的新技术。在动态软件更新当中,多线程支持又是一个新的挑战,因为线程执行相同的函数并试图修改相同的数据,这样很难保证数据的一致性。一般来讲,很多现存的方法都是基于更新点(待更新的数据和代码当前还未被调用的位置称为更新点)。这样在更新一个运行系统 ...
【技术保护点】
一种基于异步检查点的多线程软件动态升级方法,其特征在于,包括以下步骤:(1)获取待升级软件的新旧版本,分别提取新旧版本中的项目源文件,并分别将该新旧版本的项目源文件整合;(2)对整合后的新版本的项目源文件和旧版本的项目源文件进行对比,以生成初级补丁;(3)将异步检查点插入初级补丁中,以生成动态升级补丁,其中异步检查点中保存了待升级软件的新旧版本的延续点的映射关系;(4)将生成的动态升级补丁加载到运行中的待升级软件的旧版本中;(5)接收用户的初始化请求,并根据该初始化请求使用动态升级补丁中待更新的函数名查找内存中对应的函数体,并将步骤(3)中的异步检查点插入该函数体中;(6) ...
【技术特征摘要】
1.一种基于异步检查点的多线程软件动态升级方法,其特征在于,包括以下步骤:(1)获取待升级软件的新旧版本,分别提取新旧版本中的项目源文件,并分别将该新旧版本的项目源文件整合;(2)对整合后的新版本的项目源文件和旧版本的项目源文件进行对比,以生成初级补丁;(3)将异步检查点插入初级补丁中,以生成动态升级补丁,其中异步检查点中保存了待升级软件的新旧版本的延续点的映射关系;(4)将生成的动态升级补丁加载到运行中的待升级软件的旧版本中;(5)接收用户的初始化请求,并根据该初始化请求使用动态升级补丁中待更新的函数名查找内存中对应的函数体,并将步骤(3)中的异步检查点插入该函数体中;(6)接收用户的应用请求,并根据该应用请求利用异步检查点算法使待升级软件中的所有线程达到阻塞状态;(7)对于待升级软件中的线程中未被使用和执行的函数及变量,采用二进制重写的方式实现函数的间接跳转,对于待升级软件中的线程中正在使用和执行的函数及变量,采用堆栈重构的方式进行映射和状态转换;(8)根据动态升级补丁中异步检查点中保存的新旧版本的延续点的映射关系恢复执行所有线程,过程结束。2.根据权利要求1所述的多线程软件动态升级方法,其特征在于,步骤(1)是采用通用中间语言中的合并功能进行项目源文件的整合。3.根据权利要求1所述的多线程软件动态升级方法,其特征在于,步骤(5)将异步检查点插入函数体中是利用动态插桩方式,插入函数体的位置是位于该函数体的头部、循环体的开头、函数调用之前。4.根据权利要求1所述的多线程软件动态升级方法,其特征在于,步骤(6)具体包括以下子步骤:(6-1)接收用户的应用请求,该应用请求中包括待更新软件的进程ID、以及步骤(3)中动态升级补丁文件的路径;(6-2)初始化空的第一映射表和第二映射表,其中第一映射表表示线程已经获得的临界变量以及协助动态升级的锁,第二映射表表示线程希望获得的临界变量以及协助动态升级的锁;(6-3)通过包装替换系统调用来追踪线程的共享临界变量和协助动态升级的锁,当系统每次对共享临界变量和协助动态升级的锁有操作时,查找步骤(6-2)中的第一映射表和第二映射表,然后进入步骤(6-4),若没有则将临界变量名和...
【专利技术属性】
技术研发人员:邹德清,羌卫中,金海,王皓,
申请(专利权)人:华中科技大学,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。