一种热补丁加载方法以及装置制造方法及图纸

技术编号:15540830 阅读:40 留言:0更新日期:2017-06-05 10:31
本发明专利技术提供了一种热补丁加载方法以及装置,热补丁加载方法包括步骤:获取并记录与热补丁冲突的内核态冲突进程;跟踪内核态冲突进程,当内核态冲突进程退出内核态时,停止内核态冲突进程的运行;重新加载热补丁;判断重新加载热补丁的结果,当结果为不成功时,循环执行自获取并记录与热补丁冲突的内核态冲突进程的步骤起至重新加载热补丁的步骤;当重新加载热补丁的结果为成功时,恢复所有内核态冲突进程的运行。通过记录与热补丁冲突的内核态冲突进程,并在内核态冲突进程退出内核态时,停止内核态冲突进程的运行,有效降低了热补丁和进程内核函数调用栈的冲突,从而提高热补丁的加载成功率。

Thermal patch loading method and device

The present invention provides a heat patch loading method and apparatus, hot patch loading method comprises the steps of: obtaining and recording the kernel conflict process and hot patch conflicts; tracking kernel conflict process, when the kernel conflict process exit kernel mode, the kernel in the process of the conflict to stop operation; reload hot patch; judgment reload the hot patch results, if the result is not successful, since the loop is executed to acquire and record the kernel conflict process and hot patch conflict steps to reload the hot patch steps; when the results reload the hot patch for success, to restore all the kernel state conflict process. The kernel conflict process by recording and hot patch conflicts, and exit the kernel in the kernel state conflict process, stop the kernel conflict process, effectively reducing the conflict hot patches and process kernel function call stack, so as to improve the success rate of hot patch loading.

【技术实现步骤摘要】
一种热补丁加载方法以及装置
本专利技术涉及软件更新领域,尤其涉及一种热补丁加载方法及装置。
技术介绍
随着近年来计算技术的迅猛发展,计算机产品的更新换代速度也随之增快。目前,在软件开发过程中,难免存在一些软件设计方面的漏洞或用户对该软件的新的需求,为了不影响软件的使用,一般以热补丁的方式对该软件进行漏洞修复或更新,即在不中止软件的情况下对该软件进行修复或更新。内核热补丁技术是一种对运行中的内核加载热补丁的技术,以避免对操作系统的重启,从而减少重启带来的宕机时间,提高可用性。内核热补丁技术的处理方式基本是以函数为单位的,即可通过对出现漏洞或需要更新的函数进行修复,以实现对内核的修复或更新。当对内核热补丁进行加载时,由于处于内核态的进程需要调用热补丁所涉及的函数,从而与热补丁加载产生冲突,进而导致内核热补丁加载失败。
技术实现思路
针对以上问题,本专利技术的目的在于提供一种热补丁加载方法以及装置,能够有效减少加载内核热补丁的冲突,提高加载成功率。根据本专利技术的第一个方面,提供一种热补丁加载方法,包括步骤:获取并记录与热补丁冲突的内核态冲突进程;跟踪内核态冲突进程,当内核态冲突进程退出内核态时,停止内核态冲突进程的运行;重新加载热补丁;判断重新加载热补丁的结果,当结果为不成功时,循环执行自获取并记录与热补丁冲突的内核态冲突进程的步骤起至重新加载热补丁的步骤;当重新加载热补丁的结果为成功时,恢复所有内核态冲突进程的运行。优选地,所述获取并记录与所述热补丁冲突的内核态冲突进程的步骤包括:在每次循环中获取本次循环中与所述热补丁冲突的所述内核态冲突进程,并持续记录所有循环中的所述内核态冲突进程。优选地,在多个进程的内核态函数调用栈中查找所述热补丁函数,获取包括所述热补丁函数的内核态函数调用栈对应的进程的进程标识符,以获取与所述热补丁冲突的内核态冲突进程,记录所述进程标识符,以记录所述内核态冲突进程。优选地,跟踪内核态冲突进程,当内核态冲突进程退出内核态时,停止内核态冲突进程的运行的步骤包括:跟踪多个内核态冲突进程,停止退出内核态的内核态冲突进程的运行,直至停止所有内核态冲突进程的运行。优选地,通过ptrace函数跟踪内核态冲突进程。优选地,对所有停止的内核态冲突进程使用ptrace函数,以使所有内核态冲突进程恢复运行。优选地,第一个方面的热补丁加载方法还包括步骤:计算重新加载热补丁的次数,当重新加载热补丁的次数达到预设次数时,停止循环执行自获取并记录与热补丁冲突的内核态冲突进程的步骤起至重新加载热补丁的步骤,并恢复运行所有内核态冲突进程。根据本专利技术的第二个方面,提供一种热补丁加载装置,包括:冲突记录单元,用于获取并记录与热补丁冲突的内核态冲突进程;跟踪单元,用于跟踪内核态冲突进程,当内核态冲突进程退出内核态时,停止内核态冲突进程的运行,以及恢复所有内核态冲突进程的运行;加载单元,用于重新加载热补丁;循环单元,用于判断重新加载热补丁的结果是否成功,当结果为不成功时循环调用冲突记录单元、跟踪单元以及加载单元;恢复单元,用于当重新加载热补丁的结果为成功时,恢复所有内核态冲突进程的运行。优选地,所述冲突记录单元在每次循环中获取本次循环中与所述热补丁冲突的所述内核态冲突进程,并持续记录所有循环中的所述内核态冲突进程。优选地,所述冲突记录单元在多个进程内核态函数调用栈中查找所述热补丁函数,获取包括所述热补丁函数的内核态函数调用栈对应的进程的进程标识符,以获取与所述热补丁冲突的内核态冲突进程,记录所述进程标识符,以记录所述内核态冲突进程。优选地,跟踪单元跟踪多个内核态冲突进程,停止退出内核态的内核态冲突进程的运行,直至停止所有内核态冲突进程的运行。优选地,跟踪单元通过ptrace函数跟踪内核态冲突进程。优选地,恢复单元对所有停止的内核态冲突进程使用ptrace函数,以使所有内核态冲突进程恢复运行。优选地,上述第二方面的热补丁加载装置还包括计数单元,计数单元用于计算重新加载热补丁的次数,当计数单元计数重新加载热补丁的次数达到预设次数时,循环单元停止循环调用冲突记录单元、跟踪单元以及加载单元,恢复单元恢复所有内核态冲突进程的运行。本专利技术获取并记录与热补丁冲突的内核态冲突进程,并在内核态冲突进程退出内核态时,停止内核态冲突进程的运行,在此基础上重新加载热补丁,通过这样的方法,在下一次加载热补丁时,能够降低内核态进程与热补丁之间的冲突,从而提高加载热补丁的成功率。附图说明以下结合附图和具体实施例对本专利技术的技术方案进行详细的说明,以使本专利技术的特性和优点更为明显。图1为现有技术中的热补丁加载方法的流程图;图2为本专利技术的热补丁加载方法的第一实施例的流程图;图3为本专利技术的热补丁加载方法的第二实施例的流程图;图4为本专利技术的热补丁加载装置的一个实施例的模块示意图。具体实施方式以下将对本专利技术的实施例给出详细的说明。尽管本专利技术将结合一些具体实施方式进行阐述和说明,但需要注意的是本专利技术并不仅仅只局限于这些实施方式。相反,对本专利技术进行的修改或者等同替换,均应涵盖在本专利技术的权利要求范围当中。一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。图1为现有技术中的热补丁加载方法的流程图,通过图1对热补丁加载方法进行介绍。通常而言,热补丁技术由制作热补丁和加载热补丁两个部分组成,其中制作热补丁的方法使用现有技术中的方法,例如ksplice技术中,首先获取一份运行中内核对应的源码并编译出二进制,称为pre对象,打上源码补丁再次编译后,称为post对象,对post对象和pre对象逐条指令比较并找出存在差异的函数,之后把这些差异函数合并为内核模块形式的热补丁。对于加载热补丁,如图1所示,现有技术中首先执行步骤S201,编译热补丁函数,即通过编译器将热补丁函数编译为二进制。接着如步骤S202,加载热补丁至操作系统内存。然后如步骤S203,判断进程的内核态函数调用栈中是否存在热补丁函数。具体而言,遍历操作系统中所有进程的内核态函数调用栈,并在内核态函数调用栈中查找是否存在热补丁函数。若内核态函数调用栈中不存在热补丁函数,则继续执行步骤S205,依据热补丁函数对应的原函数地址改变原函数的指令,以使得执行原函数时能够跳转执行热补丁函数。接着,如步骤S206,执行原函数,并通过原函数跳转执行热补丁函数,执行完成后通过热补丁函数返回。完成以上步骤后,则进入步骤S207热补丁加载成功。若在步骤S203中,内核态函数调用栈中包括热补丁函数,该包括热补丁函数的内核态函数调用栈对应的进程即为内核态冲突进程,由于存在内核态冲突进程,则在对热补丁函数进行更新时容易发生系统崩溃,为了保持操作系统稳定性,则进入步骤S204热补丁加载失败。现有技术当进入步骤S204后,会通知用户导致失败的内核态冲突进程,用户可以通过多次尝试加载热补丁,以期待在某个加载时间点没有任何进程的内核函数调用栈包括热补丁函数。然而,对于频繁使用的内核函数如schedule,本文档来自技高网...
一种热补丁加载方法以及装置

【技术保护点】
一种热补丁加载方法,其特征在于包括步骤:获取并记录与所述热补丁冲突的内核态冲突进程;跟踪所述内核态冲突进程,当所述内核态冲突进程退出内核态时,停止所述内核态冲突进程的运行;重新加载所述热补丁;判断所述重新加载所述热补丁的结果,当结果为不成功时,循环执行自所述获取并记录与所述热补丁冲突的内核态冲突进程的步骤起至所述重新加载所述热补丁的步骤;当所述重新加载所述热补丁的结果为成功时,恢复所有所述内核态冲突进程的运行。

【技术特征摘要】
1.一种热补丁加载方法,其特征在于包括步骤:获取并记录与所述热补丁冲突的内核态冲突进程;跟踪所述内核态冲突进程,当所述内核态冲突进程退出内核态时,停止所述内核态冲突进程的运行;重新加载所述热补丁;判断所述重新加载所述热补丁的结果,当结果为不成功时,循环执行自所述获取并记录与所述热补丁冲突的内核态冲突进程的步骤起至所述重新加载所述热补丁的步骤;当所述重新加载所述热补丁的结果为成功时,恢复所有所述内核态冲突进程的运行。2.如权利要求1所述的热补丁加载方法,其特征在于,所述获取并记录与所述热补丁冲突的内核态冲突进程的步骤包括:在每次循环中获取本次循环中与所述热补丁冲突的所述内核态冲突进程,并持续记录所有循环中的所述内核态冲突进程。3.如权利要求1或2所述的热补丁加载方法,其特征在于,在多个进程的内核态函数调用栈中查找所述热补丁函数,获取包括所述热补丁函数的内核态函数调用栈对应的进程的进程标识符,以获取与所述热补丁冲突的内核态冲突进程,记录所述进程标识符,以记录所述内核态冲突进程。4.如权利要求1所述的热补丁加载方法,其特征在于,所述跟踪所述内核态冲突进程,当所述内核态冲突进程退出内核态时,停止所述内核态冲突进程的运行的步骤包括:跟踪多个所述内核态冲突进程,停止退出内核态的所述内核态冲突进程的运行,直至停止所有所述内核态冲突进程的运行。5.如权利要求1或4所述的热补丁加载方法,其特征在于,通过ptrace函数跟踪所述内核态冲突进程。6.如权利要求1所述的热补丁加载方法,其特征在于,对所有停止的所述内核态冲突进程使用ptrace函数,以使所有所述内核态冲突进程恢复运行。7.如权利要求1所述的热补丁加载方法,其特征在于,还包括步骤:计算重新加载所述热补丁的次数,当重新加载所述热补丁的次数达到预设次数时,停止循环执行自所述获取并记录与所述热补丁冲突的内核态冲突进程的步骤起至所述重新加载所述热补丁的步骤,并恢复运行所有...

【专利技术属性】
技术研发人员:王超邱模炯
申请(专利权)人:上海优刻得信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1