CN101561764A - 一种多核环境下的补丁方法与补丁装置 - Google Patents

一种多核环境下的补丁方法与补丁装置 Download PDF

Info

Publication number
CN101561764A
CN101561764A CNA2009101453671A CN200910145367A CN101561764A CN 101561764 A CN101561764 A CN 101561764A CN A2009101453671 A CNA2009101453671 A CN A2009101453671A CN 200910145367 A CN200910145367 A CN 200910145367A CN 101561764 A CN101561764 A CN 101561764A
Authority
CN
China
Prior art keywords
patch
target virtual
virtual cpu
installing
antiderivative
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.)
Granted
Application number
CNA2009101453671A
Other languages
English (en)
Other versions
CN101561764B (zh
Inventor
殷罗英
叶鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changshu intellectual property operation center Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2009101453671A priority Critical patent/CN101561764B/zh
Publication of CN101561764A publication Critical patent/CN101561764A/zh
Priority to EP10777363.2A priority patent/EP2333666B1/en
Priority to PCT/CN2010/072865 priority patent/WO2010133160A1/zh
Priority to US13/300,330 priority patent/US20120066484A1/en
Application granted granted Critical
Publication of CN101561764B publication Critical patent/CN101561764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供一种多核环境下的补丁方法与装置,所述方法包括:向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断,使得所述目标虚拟CPU响应所述核间不可屏蔽中断,并进入补丁同步状态;监视所述目标虚拟CPU的补丁同步状态,当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,并向所有目标虚拟CPU输出补丁同步状态结束通知,使得在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。本发明实施例的方法与装置采用核间不可屏蔽中断的同步方式实现共享代码段的目标虚拟CPU的补丁同步激活,在异常处理过程中实现补丁的完全生效。

Description

一种多核环境下的补丁方法与补丁装置
技术领域
本发明涉及通信技术领域,特别涉及一种多核环境下的补丁方法与补丁装置。
背景技术
多核技术已经成为处理器技术发展的新方向,目前主流处理器厂商的路标都是多核处理器。如RAZA公司推出的MIPS(Microprocessor WithoutInterlocked Pipeline Stages:无互锁管线阶段的处理器)架构的XLR732处理器有8个核,每个核包含4个硬件线程(虚拟CPU,VCPU),总共有32个VCPU,OCETON公司的MIPS架构的Cavium5860处理器有16个核,每个核包含1个VCPU。
操作系统在多核处理器硬件平台上一般有两种构架,一种是SMP(Symmetrical Multi-Processing,对称多处理)方式,另一种为AMP(AsymmetricalMulti-Processing,非对称多处理)方式。SMP架构顾名思义就是将多个内核平等看待,每个内核运行的操作系统相同,SMP只运行一个操作系统映像,管理所有VCPU;AMP架构是将多个内核区别看待,AMP的每个VCPU上都运行一个操作系统映像,按照任务划分,各负其责,在AMP模式下,为了节省内存资源,会将一些功能相同的VCPU操作系统映像的代码段虚拟地址空间映射到相同的物理地址空间上,实现多个VCPU共享代码段。
热补丁(下文统称为补丁)是电信软件的一般要求,用于在系统运行时动态修改程序,如进行系统测试或修补软件的缺陷,而不影响正常业务的运行。现有基于单核环境下的补丁技术如下:首先将补丁新函数写在一个源文件中,编译成一个目标文件,通过补丁制作工具,利用被打补丁原函数的可执行程序文件、历史补丁文件,将目标文件中的符号进行重定位,生成一个补丁文件,通过加载工具把这个补丁文件加载到被打补丁原函数(下文简称为“补丁原函数”)运行的系统地址空间中,最后在补丁激活生效时,将补丁原函数的第一条指令修改为无条件跳转指令,跳转到补丁新函数地址。
在多核AMP共享代码段环境下,如在所有的MIPS CPU中,紧跟在跳转指令后的指令即使跳转指令执行成功也会执行,这条指令称为跳转延迟槽指令。在补丁激活时,需要将补丁原函数的第一条指令修改为无条件跳转指令,跳转到补丁新函数地址,同时需要将被打补丁原函数的第二条指令,也就是跳转指令的延迟槽指令,修改为空操作指令。即多核AMP共享代码段环境下,补丁操作需要同时修改两条指令,而在多核AMP共享代码段环境下,对一个VCPU上的软件打补丁,如果刚刚修改完被打补丁原函数的第一条指令,而这个VCPU共享代码段的其他VCPU刚好开始执行补丁函数,这时其他VCPU执行的补丁函数的第一条指令是补丁新函数的,第二条指令却是补丁原函数的,就会导致软件逻辑混乱,出现错误。
所以,在多核AMP共享代码段环境下,对一个VCPU上的软件打补丁,会影响和这个VCPU共享代码段的其它VCPU,如何保证共享代码段的一组VCPU的补丁同时生效是多核AMP共享代码段环境下补丁技术需要解决的问题。
发明内容
本发明实施例提供一种多核环境下的补丁方法与装置,以实现多核环境下补丁激活时,共享代码段的所有VCPU补丁同时生效。
一方面,本发明实施例提供了一种多核环境下的补丁方法,所述方法包括:向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断,使得所述目标虚拟CPU响应所述核间不可屏蔽中断,并进入补丁同步状态;监视所述目标虚拟CPU的补丁同步状态,当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,并向所有目标虚拟CPU输出补丁同步状态结束通知,使得在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
另一方面,本发明实施例提供了一种多核环境下的补丁方法,所述方法包括:根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,并输出所述目标虚拟CPU已进入补丁同步状态的通知;获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断;在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
又一方面,本发明实施例提供了一种多核环境下的补丁装置,所述补丁装置包括:不可屏蔽中断发送单元,用于向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断;补丁同步状态监视单元,用于监视所述目标虚拟CPU组中每个目标虚拟CPU的补丁同步状态;补丁激活单元,用于当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令;补丁同步结束通知单元,用于当所述补丁激活单元完成所有被打补丁原函数的指令修改后,向所有目标虚拟CPU输出补丁同步状态结束通知。
再一方面,本发明实施例提供了一种多核环境下的补丁装置,所述补丁装置包括:不可屏蔽中断响应单元,用于根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,输出所述目标虚拟CPU进入补丁同步状态的通知;补丁生效单元,用于获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断;异常处理单元,用于在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
可见,本发明实施例的补丁方法与装置中,通过核间不可屏蔽中断的同步方式实现了共享代码段虚拟CPU的同步,以及在共享代码段的所有目标虚拟CPU都进入补丁同步状态后,将所有目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,并在异常处理过程中将被打补丁原函数跳转到补丁新函数,从而实现了多核环境下补丁激活时,共享代码段的所有虚拟CPU补丁同时生效。并且,本发明实施例方案的核间不可屏蔽中断的方式相对于现有的核间同步消息方式,具有补丁激活时的同步时间开销小,可靠性高的效果。
附图说明
图1为本发明实施例的一种多核处理器逻辑示意图;
图2为本发明实施例管理VCPU的补丁装置的原理框图;
图3为本发明实施例目标VCPU的补丁装置的原理框图;
图4为图3的异常处理单元303的细化框图;
图5为本发明实施例的多核环境下的补丁方法流程示意图;
图6为本发明实施例的多核环境下的补丁方法流程示意图;
图7为图6异常处理过程的细化流程示意图;
图8为本发明实施例的多核环境下的补丁方法的一种详细实现流程图;
图9为本发明实施例一种多核环境下的补丁装置进行异常处理的一种详细实现流程图;
图10为本发明实施例一种多核环境下的补丁装置进行异常处理的另一种详细实现流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图对本发明具体实施方式进行详细说明:
实施例1:
本发明实施例提供一种多核环境下的补丁装置。其中,本发明实施例的补丁装置应用于多核AMP系统,图1为本实施例的一种多核AMP系统的逻辑示意图,如图1所示,从逻辑层来看,最底层为多核处理器硬件平台,包括多个VCPU,如VCPU0、VCPU1、VCPU2和VCPU3;中间层为操作系统层,每个VCPU上运行独立的操作系统RTOS;在操作系统层之上为APP应用层。
本实施例的VCPU根据不同的功能分为管理VCPU和目标VCPU,本实施例中管理VCPU为VCPU0,共享代码段的其他VCPU(VCPU1、VCPU2和VCPU3)为目标VCPU,具有共享代码段的多个VCPU形成目标VCPU组。
管理VCPU关联的补丁装置(简称管理VCPU的补丁装置)对应管理VCPU的APP层,目标VCPU关联的补丁装置(简称目标VCPU的补丁装置)对应目标VCPU的APP层。管理VCPU的补丁装置通过与目标VCPU的补丁装置进行交互,实现对目标VCPU的补丁操作,使共享代码段的所有目标VCPU的补丁同步生效。
图2为本发明实施例管理VCPU的补丁装置的原理框图。图2的补丁装置20包括:
不可屏蔽中断发送单元201,用于向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断;应当理解的是,所述目标虚拟CPU组中的每个目标虚拟CPU可以响应所述核间不可屏蔽中断,并进入补丁同步状态;
补丁同步状态监视单元202,用于监视所述目标虚拟CPU组中每个目标虚拟CPU的补丁同步状态;
补丁激活单元203,用于当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令;
这里的异常指令可以采用Break指令作为使被打补丁原函数陷入异常处理的指令;在一些特定处理器下,也可以选择一些非法指令(即在特定处理器不存在的指令)作为使被打补丁原函数陷入异常处理的指令。
补丁同步结束通知单元204,用于当所述补丁激活单元完成所有被打补丁原函数的指令修改后,向所有目标虚拟CPU输出补丁同步状态结束通知。
应当理解的是,目标虚拟CPU的补丁装置获知补丁同步状态结束通知后,会结束补丁同步状态,在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。换言之,即,在系统调用被打补丁原函数陷入异常时,通过异常处理流程实现补丁的完全生效。
可选地,本实施例的补丁装置20进一步包括:存储单元205,用于保存目标虚拟CPU的所有被打补丁原函数的信息;应当理解的是,这里的存储单元205可以为核间共享内存,多核AMP系统中的所有VCPU均可以访问。
在一种实现下,所述补丁激活单元203具体用于当所有目标虚拟CPU都进入补丁同步状态后,根据从所述存储单元中获取的所有被打补丁原函数的信息,将所有被打补丁原函数的第一条指令修改为异常指令。
可选地,所述存储单元205还用于保存有核间同步信息,所述核间同步信息包括第一共享变量、第二共享变量;
在一种实现下,所述补丁同步状态监视单元202具体用于判断所述第一共享变量的值是否等于共享代码段目标虚拟VCPU组中的目标VCPU数量,当等于时,确定所有目标虚拟VCPU都进入补丁同步状态;
所述补丁同步结束通知单元204具体用于当所述补丁激活单元完成所有被打补丁原函数的指令修改后,将第二共享变量的值置位,以通知所有目标虚拟CPU结束补丁同步状态。如果第二共享变量的值初始化为0,这里的置位可以理解为将第二共享变量的值置为1,应当理解的是,本发明实施例包括但不限于这种实现。
可见,本发明实施例的管理VCPU的补丁装置中,通过核间不可屏蔽中断的同步方式实现了共享代码段虚拟CPU的同步,以及在共享代码段的所有目标虚拟CPU都进入补丁同步状态后,将所有目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,从而便于目标VCPU的补丁装置在异常处理过程中将被打补丁原函数跳转到补丁新函数,从而实现了多核环境下补丁激活时,共享代码段的所有虚拟CPU补丁同时生效。并且,本发明实施例方案的核间不可屏蔽中断的方式相对于现有的核间同步消息方式,具有补丁激活时的同步时间开销小,可靠性高的效果。
图3为本发明实施例目标VCPU的补丁装置的原理框图。图3的补丁装置30包括:
不可屏蔽中断响应单元301,用于根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,输出所述目标虚拟CPU进入补丁同步状态的通知;
应当理解的是,这里进入补丁同步状态即同步进入中断状态。
补丁生效单元302,用于获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断,从而结束补丁同步状态;
异常处理单元303,用于在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
这里的被打补丁原函数被执行到异常指令所触发的异常处理过程,可以理解为在系统调用被打补丁原函数陷入异常。
可选地,本实施例的补丁装置30还包括:存储单元304,用于保存有核间同步信息,所述核间同步信息包括第一共享变量、第二共享变量;应当理解的是,这里的存储单元304可以为核间共享内存,多核AMP系统中的所有VCPU均可以访问。
在一种实现下,所述不可屏蔽中断响应单元301具体用于根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,并将该第一共享变量的值进行加一处理,以表示所述目标虚拟CPU进入补丁同步状态。应当理解的是,这里的加一处理,仅是一种实现,本发明实施例包括但不限于此。其中,如果每个目标虚拟CPU都将该第一共享变量的值进行加一处理,则管理虚拟CPU可以通过判断所述第一共享变量的值是否等于共享代码段目标虚拟VCPU组中的目标VCPU数量来确定所有目标虚拟VCPU是否都进入补丁同步状态。
在一种实现下,所述补丁生效单元302具体用于当检测到第二共享变量的值为一时,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断,从而结束补丁同步状态。
图4为图3的异常处理单元303的一种细化框图。本实施例的异常处理单元303包括:
调度判断单元401,用于判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次;
补丁新函数生效单元402,用于在所有线程被调度了至少一次,将补丁原函数的第二条指令修改为空操作指令,将补丁原函数的第一条指令修改为无条件跳转到补丁新函数的指令,将异常处理的返回地址修改为补丁新函数的地址;或者,用于在所有线程未被调度至少一次,将异常处理的返回地址修改为补丁新函数的地址。
在一种实现下,调度判断单元401为第一调度判断单元,用于判断所述补丁生效后是否经过了一预定时长;如果是,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程被调度了至少一次,如果否,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程未被调度至少一次。这里的预定时长可以是稍大于系统任务饿死时长。
在另一种实现下,调度判断单元401为第二调度判断单元,用于判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU中最低优先级的线程是否已经被调度;如果是,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程被调度了至少一次;如果否,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程未被调度至少一次。
可见,本发明实施例的目标VCPU的补丁装置中,通过核间不可屏蔽中断的同步方式实现了共享代码段虚拟CPU的同步,以及在异常处理过程中将被打补丁原函数跳转到补丁新函数,从而实现了多核环境下补丁激活时,共享代码段的所有目标虚拟CPU补丁同时生效。并且,本发明实施例方案的核间不可屏蔽中断的方式相对于现有的核间同步消息方式,具有补丁激活时的同步时间开销小,可靠性高的效果。
进一步的,具体异常处理过程中,通过超时机制来判断补丁完全生效的时机,或者,通过基于优先级来判断补丁完全生效的时机,使得共享代码段的所有目标虚拟CPU补丁同时生效后,再次调用被打补丁原函数,不会陷入异常,而是直接跳转到补丁新函数地址开始执行。本实施例的补丁装置在等待所有的线程都被调度了一次之后,再将被打补丁函数的指令进行修改,使被打补丁原函数跳转到补丁新函数,这种方式使得当目标VCPU不会出现某一任务执行到被打补丁原函数的第一条指令和第二条指令之间时被其他任务切换出去的情况,从而解决了MIPS处理器下跳转指令延迟槽对补丁激活的影响,本实施例的补丁装置可以支持产品在测试、上网运行时BUG修复等补丁需求,提升了产品的可服务性。
实施例2:
本实施例提供一种多核环境下的补丁方法,该多核环境的架构可以参见图1,本实施例的补丁方法包括应用于管理VCPU的补丁装置的补丁方法以及应用于目标VCPU的补丁装置的补丁方法。本实施例的方法通过核间同步机制,实现了对目标VCPU的补丁同步激活,并在异常处理中实现目标VCPU的补丁生效。
图5为本发明实施例的多核环境下的补丁方法流程示意图,需要说明的是,本实施例的补丁方法可以应用于管理VCPU的补丁装置,如图5所示:
步骤S501、向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断,使得所述目标虚拟CPU响应所述核间不可屏蔽中断,并进入补丁同步状态;需要说明的是,这里的核间不可屏蔽中断是一种指令,而非消息。
步骤S502、监视所述目标虚拟CPU的补丁同步状态,当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,并向所有目标虚拟CPU输出补丁同步状态结束通知,使得在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
这里的异常指令可以采用Break指令作为使被打补丁原函数陷入异常处理的指令;在一些特定处理器下,也可以选择一些非法指令(即在特定处理器不存在的指令)作为使被打补丁原函数陷入异常处理的指令。
可选地,该方法还包括:获取所述目标虚拟CPU的被打补丁原函数的信息,并将所述被打补丁原函数的信息保存于共享内存中,针对共享内存而言,多核AMP系统中的所有VCPU均可以访问。
在一种实现下,步骤S502中所述将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令具体包括:根据从所述共享内存中获取的所述目标虚拟CPU的被打补丁原函数的信息,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令。
可选地,所述共享内存还保存有核间同步信息,所述核间同步信息包括第一共享变量、第二共享变量;
在一种实现下,步骤S502中所述监视所述目标虚拟VCPU的补丁同步状态具体包括:判断所述第一共享变量的值是否等于共享代码段目标虚拟VCPU组中的目标VCPU数量,当等于时,确定所有目标虚拟VCPU都进入补丁同步状态;反之,确定所有目标虚拟VCPU未都进入补丁同步状态。
以及,在一种实现下,步骤S502中所述向所有目标虚拟CPU输出补丁同步状态结束通知包括:将第二共享变量的值置位,以通知所有目标虚拟CPU结束补丁同步状态。如果第二共享变量的值初始化为0,这里的置位可以理解为将第二共享变量的值置为1,应当理解的是,本发明实施例包括但不限于这种实现。
可见,本发明实施例的补丁方法中,通过核间不可屏蔽中断的同步方式实现了共享代码段虚拟CPU的同步,以及在共享代码段的所有目标虚拟CPU都进入补丁同步状态后,将所有目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,从而便于目标VCPU的补丁装置在异常处理过程中将被打补丁原函数跳转到补丁新函数,从而实现了多核环境下补丁激活时,共享代码段的所有虚拟CPU补丁同时生效。并且,本发明实施例方案的核间不可屏蔽中断的方式相对于现有的核间同步消息方式,具有补丁激活时的同步时间开销小,可靠性高的效果。
图6为本发明实施例的另一种多核环境下的补丁方法流程示意图,需要说明的是,本实施例的补丁方法可以应用于目标VCPU的补丁装置,如图6所示,该方法包括:
步骤S601、根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,并输出所述目标虚拟CPU已进入补丁同步状态的通知;
应当理解的是,这里进入补丁同步状态即同步进入中断状态。
步骤S602、获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断,从而结束补丁同步状态;
步骤S603、在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
这里的被打补丁原函数被执行到异常指令所触发的异常处理过程,可以理解为在系统调用被打补丁原函数陷入异常。
在一种实现下,步骤S603中在异常处理过程中将被打补丁原函数跳转到补丁新函数,包括:
判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次;如果所有线程被调度了至少一次,则将被打补丁原函数的第二条指令修改为空操作指令,将被打补丁原函数的第一条指令修改为无条件跳转到补丁新函数的指令,将异常处理的返回地址修改为补丁新函数的地址;反之,将异常处理的返回地址修改为补丁新函数的地址。
其中,判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次,在一种实现下,包括:
判断所述补丁生效后是否经过了一预定时长;如果是,则确定所述共享代码段目标虚拟CPU组中的所有虚拟CPU的所有线程被调度了至少一次,反之,则确定所述共享代码段目标虚拟CPU组中的所有虚拟CPU的所有线程未被调度至少一次。
其中,判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次,在另一种实现下,可以包括:
判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU中最低优先级的线程是否已经被调度;如果是,则确定所述共享代码段目标虚拟CPU组中的所有虚拟目标CPU的所有线程被调度了至少一次;反之,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程未被调度至少一次。
可选地,申请共享内存来保存有核间同步信息,所述核间同步信息包括第一共享变量、第二共享变量;
步骤S601中所述输出所述目标虚拟CPU已进入补丁同步状态的通知包括:将第一共享变量的值进行加一处理;以表示所述目标虚拟CPU进入补丁同步状态。应当理解的是,这里的加一处理,仅是一种实现,本发明实施例包括但不限于此。
步骤S602中所述获得补丁同步状态结束通知包括:当检测到第二共享变量的值为一时,确定补丁同步状态结束。
可见,本发明实施例的补丁方法中,通过核间不可屏蔽中断的同步方式实现了共享代码段虚拟CPU的同步,以及在异常处理过程中将被打补丁原函数跳转到补丁新函数,从而实现了多核环境下补丁激活时,共享代码段的所有目标虚拟CPU补丁同时生效。并且,本发明实施例方案的核间不可屏蔽中断的方式相对于现有的核间同步消息方式,具有补丁激活时的同步时间开销小,可靠性高的效果。
进一步的,具体异常处理过程中,通过超时机制来判断补丁完全生效的时机,或者,通过基于优先级来判断补丁完全生效的时机,使得共享代码段的所有目标虚拟CPU补丁同时生效后,再次调用被打补丁原函数,不会陷入异常,而是直接跳转到补丁新函数地址开始执行。本实施例的补丁装置在等待所有的线程都被调度了一次之后,再将被打补丁函数的指令进行修改,使被打补丁原函数跳转到补丁新函数,这种方式使得当目标VCPU不会出现某一任务执行到被打补丁原函数的第一条指令和第二条指令之间时被其他任务切换出去的情况,从而解决了MIPS处理器下跳转指令延迟槽对补丁激活的影响,本实施例的补丁装置可以支持产品在测试、上网运行时BUG修复等补丁需求,提升了产品的可服务性。
图7为图6异常处理过程的细化流程图,本实施例通过以下步骤实现异常处理。如图7所示,包括:
步骤S701、当被打补丁原函数被执行时,执行Break指令触发异常,进入异常处理过程;
步骤S702、判断目标VCPU组中的所有目标VCPU内的所有线程是否被调度了至少一次。
因为被打补丁原函数的第一条指令已经被修改成了Break指令,当线程被调度时,如果执行到被打补丁原函数,则在第一条指令处就进入异常处理,在异常处理返回时返回到了补丁新函数地址(参见步骤S704),所以被调度的线程不会停在被打补丁原函数的第二条指令处的,当所有线程都被调度了一次后,说明所有线程没有停留在被打补丁原函数的第二条指令处;
步骤S702的该判断方法可以包括:
(1)超时判断:判断目标VCPU在补丁激活后是否经过了一预定时长,如果是,则确定目标VCPU组中的所有VCPU的所有线程被调度了至少一次;
(2)最低优先级判断:判断目标VCPU组中的所有VCPU中最低优先级的线程是否被调度;如果是,则确定目标VCPU组中的所有VCPU的所有线程被调度了至少一次。
步骤S703、如果所有线程都被调度了至少一次,在异常处理过程中将被打补丁原函数的第二条指令修改为空操作指令,将被打补丁原函数的第一条指令修改为无条件跳转到补丁新函数的指令,并进入步骤S704;否则,直接进入步骤S704;
步骤S704、将异常处理的返回地址修改为补丁新函数的地址。
可见,本发明实施例的补丁方法通过核间消息机制保证所有VCPU的补丁同时生效;利用异常处理机制,解决了MIPS环境下的指令延迟槽引起的问题;在打补丁时,被打补丁VCPU不需要同步等待,不中断业务运行。
图8为本发明实施例的多核环境下的补丁方法的一种详细实现流程图,本实施例的管理VCPU为VCPU0。如图8所示:
步骤S800、系统初始化。
VCPU0的补丁装置申请一段核间共享内存保存核间同步信息MCPAT_SYN_INFO,用于在VCPU0和目标VCPU组之间进行同步。为了共享补丁激活的信息,本发明实施例定义数据结构MCPAT_SYN_INFO来保存核间同步信息,VCPU0的补丁装置和目标VCPU组内的目标VCPU的补丁装置都能够查看该数据结构中共享变量的值,该数据结构可以进行如下定义:
typedef struct tagMCPatSynInfo
{
volatile VOS_UINT32 ulStartSynAckFlag;//共享变量A,表示进入补丁
                                    同步状态的VCPU的数目;
volatile VOS_UINT32 ulEndSynFlag;//共享变量B,如果置位则表示VC
                                    PU0的补丁装置完成了补丁激
                                    活,此时目标VCPU的补丁装置
                                    可以结束目标VCPU的补丁同步
                                    状态;
}MCPAT_SYN_INFO;
步骤S801、VCPU0的补丁装置开始激活目标VCPU的补丁装置。
为了保证激活操作不被重入(被打断),首先关闭VCPU0的中断,不再响应中断。
步骤S802、VCPU0的补丁装置申请一段共享内存,将被打补丁原函数的信息存放到该共享内存中,使目标VCPU的补丁装置能够和VCPU0的补丁装置一起配合完成补丁同步操作。具体包括以下步骤:
(1)、VCPU0的补丁装置获取目标VCPU的补丁装置中保存的所有被打补丁原函数的地址;
(2)、VCPU0的补丁装置申请一段共享内存;
(3)、VCPU0的补丁装置将所有被打补丁原函数的信息保存在共享内存中,本发明实施例中被打补丁原函数的信息采用数据结构MCPAT_FUNC_NODE来表示,包括:函数地址、被打补丁原函数的第一/二条指令值、目标VCPU数目、当前系统TICK值、VCPU状态标识初始化。该数据结构可以定义如下:
typedef struct tagMCPatFuncNode
{
VOS_UINT32 aulFuncPtr[N];//补丁原函数地址,N表示一个补丁单元中
                            最大的补丁函数数目;
VOS_UINT32aulFuncIns1[N];//补丁原函数第一条指令,N表示一个补
                            丁单元中最大的补丁函数数目;
VOS_UINT32 aulFuncIns2[N];//补丁原函数第二条指令,N表示一个补
                             丁单元中最大的补丁函数数目;
VOS_UINT32 ulFlag;//补丁函数状态标识:为0时表示可以将补丁原函
                     数的第一条指令修改为无条件跳转指令(跳转
                     至补丁新函数),将第二条指令修改为填充跳
                     转指令延迟槽的NOP指令;
VOS UINT32 ulStartTick;//补丁函数激活时的系统TICK值;
VOS_UINT8 aucVCPUFlag[N];//VCPU状态标识:N表示系统的VCPU
                     数目,每个字节表示一个VCPU,为1表示
                     对应VCPU已经满足补丁完全生效的条件;
}MCPAT_FUNC_NODE;
(4)、VCPU0的补丁装置将共享内存的地址保存在目标VCPU组的共享指针变量g_pstShareFuncNode[Index]中,Index表示目标VCPU组ID;
步骤S803、VCPU0的补丁装置将核间同步信息数据结构MCPAT_SYN_INFO中的域ulStartSynAckFlag、ulEndSynFlag分别置为0,准备进行补丁同步;
步骤S804、VCPU0的补丁装置给所有目标VCPU的补丁装置发送一个不可屏蔽中断,以开始进行核间补丁同步;
步骤S805、目标VCPU的补丁装置响应VCPU0的补丁装置发送的核间不可屏蔽中断,进入中断处理流程,关闭目标VCPU的中断,使目标VCPU进入核间补丁同步状态;
步骤S806、目标VCPU的补丁装置将核间同步信息数据结构MCPAT_SYN_INFO中的域ulStartSynAckFlag原子加1,以标识自己已经进入同步状态;
步骤S807、VCPU0的补丁装置循环检测核间同步信息数据结构MCPATSYN_INFO中的域ulStartSynAckFlag的值是否等于目标VCPU数目,如果等于目标VCPU数目则表示所有目标VCPU都已经进入补丁同步状态;
步骤S808、VCPU0的补丁装置将所有被打补丁原函数的第一条指令修改为异常指令(如Break断点指令),以完成补丁激活,使得在被打补丁原函数被执行到异常指令所触发的异常处理流程中实现将被打补丁原函数跳转为补丁新函数;
步骤S809、VCPU0的补丁装置将核间同步信息数据结构MCPAT_SYN_INFO中的域ulEndSynFlag置为1,以通知所有目标VCPU结束补丁同步操作;
步骤S810、VCPU0的补丁装置打开中断,返回到调用补丁激活接口的指令后,以结束补丁激活操作;
步骤S811、目标VCPU的补丁装置死循环判断核间同步信息数据结构MCPAT_SYN_INFO中的域ulEndSynFlag是否等于1,如果等于1则结束补丁同步;
步骤S812、目标VCPU的补丁装置刷新本地指令Cache,进行补丁生效操作;
步骤S813、目标VCPU的补丁装置打开目标VCPU的中断,中断处理返回至被中断打断的指令处,从而结束补丁同步。现在所有目标VCPU的补丁同时生效。
可见,本发明实施例的补丁方法,设置共享内存保存核间同步信息以及补丁原函数的信息,通过核间不可屏蔽中断实现了管理VCPU和目标VCPU之间的补丁同步激活操作。
图9为本发明实施例多核环境下的目标VCPU的补丁装置进行异常处理的一种详细实现流程图,如图9所示:
步骤S901、当目标VCPU在执行至被打补丁原函数时,会陷入Break指令触发异常,进入异常处理流程:
步骤S902、判断发生异常的指令地址是否为被打补丁原函数地址以及发生异常的指令是否是Break指令;如果发生异常的指令地址为被打补丁原函数地址并且发生异常的指令为Break指令,则继续进入步骤S903进行判断,否则进入步骤S904启动常规的异常处理流程;
判断发生异常的指令地址是否为补丁函数地址,包括:判断发生异常的指令地址是否在共享变量g_pstShareFuncNode[index](Index表示当前VCPU的组ID,以下同)指向的补丁信息结构中;
步骤S903、判断当前VCPU中被打补丁函数从激活到现在是否已经超时:
如果已经超时,则继续进行补丁异常处理,将当前VCPU标记为已经进入过超时处理,具体包括:判断g_pstShareFuncNode[index]中的域aucVCPUFlag中以当前VCPU为下标的数组元素的值是否等于0,是则置为1,表示该VCPU已经进入过超时处理,同时,将域ulFlag(ulFlag的初始值置为目标VCPU组中的VCPU数目)原子减1,表示又有一个VCPU已经超时;
如果未超时,进入步骤S908;
应当理解的是:为了确保在修改被打补丁原函数的第二条指令时,所有的目标VCPU上的所有线程的PC(指令寄存器)没有停在被打补丁原函数的第二条指令处,本实施例的方法假设系统在过了一段预设的时间后,所有的线程都已经被操作系统调度了至少一次,且所有的线程的PC(指令寄存器)没有停在补丁原函数的第二条指令处;
步骤S905、判断是否目标VCPU组内的其他VCPU都已经超时,具体包括:判断g_pstShareFuncNode[index]中的域ulFlag的值是否等于0;是则进入步骤S906对被打补丁原函数进行修改,否则进入步骤S908;
步骤S906、获取g_pstShareFuncNode[index]中保存的补丁信息,将补丁原函数的第二条指令修改为空操作指令NOP;
步骤S907、将被打补丁原函数的第一条指令修改为无条件跳转指令(跳到补丁新函数地址),将g_pstShareFuncNode[index]所指向的保存补丁函数信息的共享内存释放;
步骤S908、使补丁新函数生效:将异常处理的返回地址修改为补丁新函数的地址,打开中断,以完成异常处理流程。
可见,本发明实施例的方法通过设置一个预定的时间来判断所有的线程是否已经被操作系统调度了至少一次,并根据不同的情况进行不同的异常处理。采用本实施例的异常处理机制,补丁会在设定的时长后完全生效,再次调用被打补丁函数,不会陷入Break异常,而是直接跳转到补丁新函数地址开始执行。
图10为发明实施例多核环境下的目标VCPU的补丁装置进行异常处理的另一种详细实现流程图,如图10所示:
和图9不同的是,图9的步骤S903和步骤S905通过超时机制来判断补丁完全生效的时机。图10的方法就是针对这种场景,利用嵌入式操作系统基于优先级的调度策略,如果最低优先级的线程已经被调度,说明VCPU上的所有线程已经被操作系统调度了一次。以下仅对和图9的区别部分进行描述:
步骤S1003、针对当前的目标VCPU,判断自补丁激活完成后,优先级最低的线程是否已经被调度:是则继续进行补丁异常处理,并将当前VCPU标记为优先级最低的线程已经被调度,具体包括:判断g_pstShareFuncNode[index]中的域aucVCPUFlag中以当前VCPU为下标的数组元素的值是否等于0,是则置为1,表示该VCPU最低优先级的线程已经被调度,同时将域ulFlag原子减1,表示又有一个VCPU最低优先级的线程已经被调度;
否则进入步骤S908;
步骤S1005、判断目标VCPU组内的其他目标VCPU的优先级最低的线程是否已经被调度,具体包括:判断g_pstShareFuncNode[index]中的域ulFlag的值是否等于0;是则进入步骤S906对补丁原函数进行修改,否则进入步骤S908;
可见,本发明实施例的方法根据最低优先级的线程是否被调用而采用相应的异常处理。采用本实施例的异常处理机制能够使补丁自动生效,再次调用被打补丁函数,不会陷入Break异常,而是直接跳转到补丁新函数地址开始执行。
综上所述,本发明实施例的补丁方法通过核间不可屏蔽中断的同步方式解决了多核AMP共享代码段环境下的补丁同步问题,通过异常处理机制解决了MIPS处理器下跳转指令延迟槽对补丁激活的影响,该方案使补丁激活时的同步时间开销小,可靠性高,解决了MIPS处理器下跳转指令延迟槽对补丁激活的影响,可以支持产品在测试、上网运行时BUG修复等补丁需求,提升了产品的可服务性。
需要说明的是:
1、本发明实施例解决了多核共享代码段补丁的激活问题,同样适用去激活流程。区别在于:在步骤S703,将补丁原函数的第二条指令还原,将补丁原函数的第一条指令还原;在步骤S906,将补丁原函数的第二条指令还原;在步骤S907,将补丁原函数的第一条指令还原。
2、本发明实施例采用不可屏蔽中断实现多核补丁的核间同步,在嵌入式多核AMP应用中,还可以采用下面的方案:核间中断(IPI)在有些厂商的多核处理器中都支持,通过在系统中为多核补丁的核间同步保留一个核间中断号,系统的关中断接口不关闭这个中断,实现不可屏蔽中断的功能,在一些没有不可屏蔽中断特性的处理器上可以应用。
3、本发明实施例采用Break指令作为使补丁原函数陷入异常处理的指令,在一些特定处理器下,也可以选择一些非法指令(在特定处理器不存在的指令)作为使补丁原函数陷入异常处理的指令,然后在系统调用补丁原函数陷入异常时,通过相同的异常处理流程,实现补丁的完全生效。
4、本发明实施例通过核间不可屏蔽中断方式实现多核补丁同步的方案,可以在任何多核AMP模式的系统中应用,还可以用于其他非补丁功能的核间同步需求。
5、本发明实施例中通过异常处理机制解决MIPS处理器延迟槽对补丁激活的影响的方案,可以解决单核多任务环境下的MIPS处理器延迟槽对补丁激活的影响的问题;也可以解决其他存在跳转指令延迟槽的处理器环境下补丁激活的问题;还可以用于解决PowerPC等环境下补丁长跳转的问题(需要通过两条指令跳转到更大的地址空间中,和延迟槽的影响类似)。
6、前面实施例描述的多核环境下的补丁装置,也可以理解为集成有补丁功能的VCPU。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。

Claims (12)

1、一种多核环境下的补丁方法,其特征在于,所述方法包括:
向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断,使得所述目标虚拟CPU响应所述核间不可屏蔽中断,并进入补丁同步状态;
监视所述目标虚拟CPU的补丁同步状态,当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令,并向所有目标虚拟CPU输出补丁同步状态结束通知,使得在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
2、根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标虚拟CPU的被打补丁原函数的信息,并将所述被打补丁原函数的信息保存于共享内存中;
所述将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令包括:
根据从所述共享内存中获取的所述目标虚拟CPU的被打补丁原函数的信息,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令。
3、一种多核环境下的补丁方法,其特征在于,所述方法包括:
根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,并输出所述目标虚拟CPU已进入补丁同步状态的通知;
获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断;
在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
4、根据权利要求3所述的方法,其特征在于,所述在异常处理过程中将被打补丁原函数跳转到补丁新函数,包括:
判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次;
如果所有线程被调度了至少一次,则将被打补丁原函数的第二条指令修改为空操作指令,将被打补丁原函数的第一条指令修改为无条件跳转到补丁新函数的指令,将异常处理的返回地址修改为补丁新函数的地址;否则,将异常处理的返回地址修改为补丁新函数的地址。
5、根据权利要求4所述的方法,其特征在于,判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次包括:
判断所述补丁生效后是否经过了一预定时长;如果是,则确定所述共享代码段目标虚拟CPU组中的所有虚拟CPU的所有线程被调度了至少一次。
6、根据权利要求4所述的方法,其特征在于,判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次包括:
判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU中最低优先级的线程是否已经被调度;如果是,则确定所述共享代码段目标虚拟CPU组中的所有虚拟目标CPU的所有线程被调度了至少一次。
7、一种多核环境下的补丁装置,其特征在于,所述补丁装置包括:
不可屏蔽中断发送单元,用于向共享代码段目标虚拟CPU组中的每个目标虚拟CPU发送核间不可屏蔽中断;
补丁同步状态监视单元,用于监视所述目标虚拟CPU组中每个目标虚拟CPU的补丁同步状态;
补丁激活单元,用于当所有目标虚拟CPU都进入补丁同步状态后,将所述目标虚拟CPU的被打补丁原函数的第一条指令修改为异常指令;
补丁同步结束通知单元,用于当所述补丁激活单元完成所有被打补丁原函数的指令修改后,向所有目标虚拟CPU输出补丁同步状态结束通知。
8、根据权利要求7所述的装置,其特征在于,所述补丁装置进一步包括:
存储单元,用于保存目标虚拟CPU的所有被打补丁原函数的信息;
所述补丁激活单元具体用于当所有目标虚拟CPU都进入补丁同步状态后,根据从所述存储单元中获取的所有被打补丁原函数的信息,将所有被打补丁原函数的第一条指令修改为异常指令。
9、一种多核环境下的补丁装置,其特征在于,所述补丁装置包括:
不可屏蔽中断响应单元,用于根据接收的核间不可屏蔽中断,关闭共享代码段目标虚拟CPU组中对应目标虚拟CPU的中断,输出所述目标虚拟CPU进入补丁同步状态的通知;
补丁生效单元,用于获得补丁同步状态结束通知后,刷新所述目标虚拟CPU的指令缓存使补丁生效,打开所述目标虚拟CPU组中对应目标虚拟CPU的中断;
异常处理单元,用于在被打补丁原函数被执行到异常指令所触发的异常处理过程中,将被打补丁原函数跳转到补丁新函数。
10、根据权利要求9所述的装置,其特征在于,所述异常处理单元包括:
调度判断单元,用于判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程是否被调度了至少一次;
补丁新函数生效单元,用于在所有线程被调度了至少一次,将被打补丁原函数的第二条指令修改为空操作指令,将被打补丁原函数的第一条指令修改为无条件跳转到补丁新函数的指令,将异常处理的返回地址修改为补丁新函数的地址;或者,用于在所有线程未被调度至少一次,将异常处理的返回地址修改为补丁新函数的地址。
11、根据权利要求10所述的装置,其特征在于,
所述调度判断单元为第一调度判断单元,用于判断所述补丁生效后是否经过了一预定时长;如果是,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程被调度了至少一次。
12、根据权利要求10所述的装置,其特征在于,
所述调度判断单元为第二调度判断单元,用于判断所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU中最低优先级的线程是否已经被调度;如果是,则确定所述共享代码段目标虚拟CPU组中的所有目标虚拟CPU的所有线程被调度了至少一次。
CN2009101453671A 2009-05-18 2009-05-18 一种多核环境下的补丁方法与补丁装置 Active CN101561764B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN2009101453671A CN101561764B (zh) 2009-05-18 2009-05-18 一种多核环境下的补丁方法与补丁装置
EP10777363.2A EP2333666B1 (en) 2009-05-18 2010-05-18 Patching method and patching device under multi-core environment
PCT/CN2010/072865 WO2010133160A1 (zh) 2009-05-18 2010-05-18 一种多核环境下的补丁方法与补丁装置
US13/300,330 US20120066484A1 (en) 2009-05-18 2011-11-18 Patching method and patching device in multi-core environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101453671A CN101561764B (zh) 2009-05-18 2009-05-18 一种多核环境下的补丁方法与补丁装置

Publications (2)

Publication Number Publication Date
CN101561764A true CN101561764A (zh) 2009-10-21
CN101561764B CN101561764B (zh) 2012-05-23

Family

ID=41220577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101453671A Active CN101561764B (zh) 2009-05-18 2009-05-18 一种多核环境下的补丁方法与补丁装置

Country Status (4)

Country Link
US (1) US20120066484A1 (zh)
EP (1) EP2333666B1 (zh)
CN (1) CN101561764B (zh)
WO (1) WO2010133160A1 (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
WO2010133160A1 (zh) * 2009-05-18 2010-11-25 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
CN102023898A (zh) * 2010-12-21 2011-04-20 中兴通讯股份有限公司 中央处理器热插拔的实现方法及装置
WO2012062113A1 (zh) * 2010-11-12 2012-05-18 中兴通讯股份有限公司 多核热补丁的实现方法及系统
CN102508681A (zh) * 2011-11-09 2012-06-20 华为数字技术有限公司 多核系统不中断业务的补丁方法及系统
CN104216680A (zh) * 2013-08-28 2014-12-17 威盛电子股份有限公司 微处理器及其执行方法
CN104239273A (zh) * 2013-08-28 2014-12-24 威盛电子股份有限公司 微处理器及其执行方法
CN104461625A (zh) * 2014-12-04 2015-03-25 上海斐讯数据通信技术有限公司 一种热补丁实现方法和系统
CN104750603A (zh) * 2013-12-30 2015-07-01 联芯科技有限公司 一种多核dsp软件仿真器及其物理层软件测试方法
CN105354045A (zh) * 2014-08-21 2016-02-24 中兴通讯股份有限公司 补丁的制作方法及装置、补丁的激活方法及装置
WO2016115975A1 (zh) * 2015-01-20 2016-07-28 中兴通讯股份有限公司 一种用于mips架构cpu的热补丁的方法和设备
US9430399B2 (en) 2010-10-13 2016-08-30 Huawei Technologies Co., Ltd. Multi-core online patching method and apparatus
CN106055979A (zh) * 2016-05-24 2016-10-26 百度在线网络技术(北京)有限公司 内核修复方法和装置
CN106874022A (zh) * 2015-12-11 2017-06-20 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN108089870A (zh) * 2016-11-21 2018-05-29 百度在线网络技术(北京)有限公司 用于修复应用的方法和装置
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
CN110192178A (zh) * 2017-09-08 2019-08-30 深圳市汇顶科技股份有限公司 程序打补丁的方法、装置、微控制单元和终端设备
CN110928569A (zh) * 2019-11-20 2020-03-27 杭州依赛通信有限公司 一种通信设备Live Update功能实现的方法
WO2020238245A1 (zh) * 2019-05-30 2020-12-03 华为技术有限公司 实现函数跳转的方法、装置及计算机存储介质
CN114090097A (zh) * 2020-06-30 2022-02-25 中国航发商用航空发动机有限责任公司 发动机控制系统和控制软件启动方法
WO2024193314A1 (zh) * 2023-03-22 2024-09-26 华为技术有限公司 一种补丁执行方法及装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5673666B2 (ja) * 2010-02-23 2015-02-18 富士通株式会社 マルチコアプロセッサシステム、割込プログラム、および割込方法
CN103677878B (zh) * 2012-09-12 2017-07-14 国际商业机器公司 一种打补丁的方法和装置
US9489286B2 (en) * 2013-01-30 2016-11-08 Nec Corporation Method and system for computer assisted hot-tracing mechanism
US9507404B2 (en) 2013-08-28 2016-11-29 Via Technologies, Inc. Single core wakeup multi-core synchronization mechanism
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
CN104424037B (zh) * 2013-08-29 2018-12-14 中兴通讯股份有限公司 一种动态补丁函数的方法及装置
CN104636161B (zh) * 2013-11-15 2018-06-19 华为技术有限公司 一种多核系统的在线补丁方法及系统
US9952953B2 (en) 2015-11-02 2018-04-24 Microsoft Technology Licensing Llc Non-monotonic eventual convergence for desired state configuration
CN105893320B (zh) * 2016-03-29 2019-08-06 浙江大学 一种面向多核处理器的远程任务函数调用方法
CN107451046B (zh) * 2016-05-30 2020-11-17 腾讯科技(深圳)有限公司 一种检测线程的方法及终端
CN107844306B (zh) * 2017-08-09 2020-04-03 平安壹钱包电子商务有限公司 应用程序的修复方法、装置、存储介质及终端
WO2019061407A1 (zh) 2017-09-30 2019-04-04 华为技术有限公司 一种系统服务超时的处理方法及装置
US10649763B2 (en) 2018-06-15 2020-05-12 Microsoft Technology Licensing, Llc Resource efficient deployment of multiple hot patches
CN111143127B (zh) * 2019-12-23 2023-09-26 杭州迪普科技股份有限公司 监管网络设备的方法、装置、存储介质及设备
CN114078562B (zh) * 2020-08-18 2023-08-25 长鑫存储技术有限公司 失效位元的修补方法及装置
US11881278B2 (en) 2021-03-31 2024-01-23 Changxin Memory Technologies, Inc. Redundant circuit assigning method and device, apparatus and medium

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253317B1 (en) * 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
CN1328877C (zh) * 2001-12-03 2007-07-25 中兴通讯股份有限公司 共享线程实现和调度方法
CN1230744C (zh) * 2002-08-16 2005-12-07 华为技术有限公司 一种嵌入式系统软件补丁的实现和控制方法
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7472384B1 (en) * 2003-12-02 2008-12-30 Swsoft Holdings, Ltd. System, method and computer program product for on-the-fly patching of executable code
US7383540B2 (en) * 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
CN100583049C (zh) * 2007-11-29 2010-01-20 上海华为技术有限公司 多核处理器共享代码段补丁方法及装置
CN101799763B (zh) * 2009-02-10 2013-01-30 华为技术有限公司 内核在线补丁的方法、装置和系统
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010133160A1 (zh) * 2009-05-18 2010-11-25 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
WO2011116672A1 (zh) * 2010-03-26 2011-09-29 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN101794272B (zh) * 2010-03-26 2012-07-25 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
US9430399B2 (en) 2010-10-13 2016-08-30 Huawei Technologies Co., Ltd. Multi-core online patching method and apparatus
WO2012062113A1 (zh) * 2010-11-12 2012-05-18 中兴通讯股份有限公司 多核热补丁的实现方法及系统
CN102467394A (zh) * 2010-11-12 2012-05-23 中兴通讯股份有限公司 多核热补丁的实现方法及系统
CN102023898A (zh) * 2010-12-21 2011-04-20 中兴通讯股份有限公司 中央处理器热插拔的实现方法及装置
CN102508681B (zh) * 2011-11-09 2015-03-11 北京华为数字技术有限公司 多核系统不中断业务的补丁方法及系统
CN102508681A (zh) * 2011-11-09 2012-06-20 华为数字技术有限公司 多核系统不中断业务的补丁方法及系统
CN104216680A (zh) * 2013-08-28 2014-12-17 威盛电子股份有限公司 微处理器及其执行方法
CN104239273A (zh) * 2013-08-28 2014-12-24 威盛电子股份有限公司 微处理器及其执行方法
CN104750603A (zh) * 2013-12-30 2015-07-01 联芯科技有限公司 一种多核dsp软件仿真器及其物理层软件测试方法
CN104750603B (zh) * 2013-12-30 2018-12-11 辰芯科技有限公司 一种多核dsp软件仿真器及其物理层软件测试方法
CN105354045A (zh) * 2014-08-21 2016-02-24 中兴通讯股份有限公司 补丁的制作方法及装置、补丁的激活方法及装置
CN104461625A (zh) * 2014-12-04 2015-03-25 上海斐讯数据通信技术有限公司 一种热补丁实现方法和系统
WO2016115975A1 (zh) * 2015-01-20 2016-07-28 中兴通讯股份有限公司 一种用于mips架构cpu的热补丁的方法和设备
CN105868094A (zh) * 2015-01-20 2016-08-17 中兴通讯股份有限公司 一种用于mips架构cpu的热补丁的方法和设备
CN106874022A (zh) * 2015-12-11 2017-06-20 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN106055979A (zh) * 2016-05-24 2016-10-26 百度在线网络技术(北京)有限公司 内核修复方法和装置
CN110110522B (zh) * 2016-05-24 2021-05-07 百度在线网络技术(北京)有限公司 内核修复方法和装置
CN106055979B (zh) * 2016-05-24 2019-04-09 百度在线网络技术(北京)有限公司 内核修复方法和装置
CN110110522A (zh) * 2016-05-24 2019-08-09 百度在线网络技术(北京)有限公司 内核修复方法和装置
CN108089870A (zh) * 2016-11-21 2018-05-29 百度在线网络技术(北京)有限公司 用于修复应用的方法和装置
CN109144679A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
US11972285B2 (en) 2017-06-27 2024-04-30 Huawei Technologies Co., Ltd. Interrupt request processing method and apparatus, and virtualized device
CN110192178A (zh) * 2017-09-08 2019-08-30 深圳市汇顶科技股份有限公司 程序打补丁的方法、装置、微控制单元和终端设备
CN110192178B (zh) * 2017-09-08 2023-03-10 深圳市汇顶科技股份有限公司 程序打补丁的方法、装置、微控制单元和终端设备
WO2020238245A1 (zh) * 2019-05-30 2020-12-03 华为技术有限公司 实现函数跳转的方法、装置及计算机存储介质
US11645068B2 (en) 2019-05-30 2023-05-09 Huawei Technologies Co., Ltd. Method for implementing function jump, apparatus, and computer storage medium
CN110928569A (zh) * 2019-11-20 2020-03-27 杭州依赛通信有限公司 一种通信设备Live Update功能实现的方法
CN114090097A (zh) * 2020-06-30 2022-02-25 中国航发商用航空发动机有限责任公司 发动机控制系统和控制软件启动方法
WO2024193314A1 (zh) * 2023-03-22 2024-09-26 华为技术有限公司 一种补丁执行方法及装置

Also Published As

Publication number Publication date
EP2333666B1 (en) 2013-12-18
WO2010133160A1 (zh) 2010-11-25
US20120066484A1 (en) 2012-03-15
EP2333666A1 (en) 2011-06-15
EP2333666A4 (en) 2011-11-16
CN101561764B (zh) 2012-05-23

Similar Documents

Publication Publication Date Title
CN101561764B (zh) 一种多核环境下的补丁方法与补丁装置
US5632032A (en) Cross address space thread control in a multithreaded environment
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
JP5295228B2 (ja) 複数のプロセッサを備えるシステム、ならびにその動作方法
US20140157287A1 (en) Optimized Context Switching for Long-Running Processes
TW201734767A (zh) 用於使用者等級執行緒暫止的方法、設備及指令
JP5026494B2 (ja) 高速で起動するコンピュータ
FR2881239A1 (fr) Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
CN103927187A (zh) 嵌入式系统程序执行方法
WO2011142733A1 (en) A configurable computing architecture
JP2000066904A (ja) マルチタスク制御方法及び記憶媒体
CN116594640A (zh) 面向risc-v的可扩展分段自动化镜像构建技术
CN118377637A (zh) 减少冗余缓存一致性操作的方法、装置、设备和存储介质
CN101794272B (zh) 为共享代码段打补丁的方法及装置
Kiessling An introduction to parallel programming with OpenMP
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
US11726811B2 (en) Parallel context switching for interrupt handling
CN108021408B (zh) 升级方法及装置
US20220350596A1 (en) Computing node allocation based on build process specifications in continuous integration environments
US8359602B2 (en) Method and system for task switching with inline execution
US11144329B2 (en) Processor microcode with embedded jump table
CN112148300A (zh) 一种Dex文件的构建方法、目标应用的运行方法及装置
de Almeida et al. Microkernel development for embedded systems
CN118860485A (zh) 一种非对称多处理器架构生成方法、装置、设备及介质
EP4276610A1 (en) Exception handling method and relevant apparatus

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
TR01 Transfer of patent right

Effective date of registration: 20201110

Address after: Unit 2414-2416, main building, no.371, Wushan Road, Tianhe District, Guangzhou City, Guangdong Province

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 headquarters building of Bantian HUAWEI base, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20201110

Address after: 215500 No.13, Caotang Road, Changshu, Suzhou, Jiangsu Province

Patentee after: Changshu intellectual property operation center Co.,Ltd.

Address before: Unit 2414-2416, main building, no.371, Wushan Road, Tianhe District, Guangzhou City, Guangdong Province

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right
CP02 Change in the address of a patent holder

Address after: 215500 5th floor, building 4, 68 Lianfeng Road, Changfu street, Changshu City, Suzhou City, Jiangsu Province

Patentee after: Changshu intellectual property operation center Co.,Ltd.

Address before: 215500 No.13, Caotang Road, Changshu, Suzhou, Jiangsu Province

Patentee before: Changshu intellectual property operation center Co.,Ltd.

CP02 Change in the address of a patent holder