多核热补丁的实现方法及系统的制作方法

文档序号:6335823阅读:230来源:国知局
专利名称:多核热补丁的实现方法及系统的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种多核热补丁的实现方法及系统。
背景技术
随着中央处理器(Central Processing Unit,简称为CPU)技术的不断发展, 多核技术已经成为当前的主流。传统的多核架构有两种非对称多处理(Asymmetrical Multi-Processing,简称为 AMP)和对称多处理(Symmetrical Multi-Processing,简称为 SMP)。SMP就是多个内核运行一个操作系统,它们共享内存、总线和其它资源,任务被均勻分配到各个内核上进行处理。在SMP架构中,每个内核的地位是相等的。而AMP架构中,各个内核有主有次,每个内核均运行一个操作系统,根据分工的不同处理不同类型的任务。在 AMP架构下,为了节省内存,通常多核之间相同虚拟地址的代码会被映射到相同的物理地址上,以实现代码共享。任何软件系统都不可避免的存在缺陷和漏洞,修正软件缺陷的方法通常有发布新版本或打补丁。由于版本发布会牵涉较多方面,因此在缺陷影响小、数目少时,通常采用打补丁的办法。所谓打补丁,即用正确的代码来更正当前软件版本中的缺陷,通常以补丁文件的形式来完成,如Windows操作系统发布的各个补丁包。在电信服务中,要求系统在发现软件缺陷后能迅速地修正,并且不允许系统中断运行以避免造成不必要的损失。补丁操作大致的流程如下所示步骤1 在现有工程中加入补丁文件patch, c,编译链接成新的工程。步骤2:制作补丁版本。步骤3 新的补丁版本代替原有的版本。相对于普通情况下的补丁操作(冷补丁), 不中断系统运行的前提下即完成补丁操作的过程称为热补丁。相关技术中的热补丁实现方法只适用于单核系统(一个CPU),对于多核系统的热补丁可能导致系统不稳定甚至业务中断。

发明内容
本发明的主要目的在于提供一种多核热补丁实现方法及系统,以至少解决上述相关技术中的热补丁实现方法只适用于单核系统(一个CPU),对于多核系统的热补丁可能导致系统不稳定甚至业务中断的问题。为了实现上述目的,根据本发明的一个方面,提供了一种多核热补丁的实现方法。根据本发明的多核热补丁包括多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元,其他核心处理单元在接收到通知后等待补丁操作执行完毕;执行补丁操作的核心处理单元执行补丁操作;在补丁操作执行完毕之后,执行补丁操作的核心处理单元通知其他核心处理单元补丁操作执行完毕。进一步地,多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元,其他核心处理单元在接收到通知后等待补丁操作执行完毕包括执行补丁操作的核心处理单元修改全局共享变量,以通知与其共享代码的其他核心处理单元,其中,全局共享变量用于多核同步;其他核心处理单元分别修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作,并等待补丁操作执行完毕。进一步地,执行补丁操作的核心处理单元修改全局共享变量为待补丁状态,以通知与其共享代码的其他核心处理单元;其他核心处理单元分别修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作,并在IDLE任务中等待补丁操作执行完毕。进一步地,多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元,其他核心处理单元在接收到通知后等待补丁操作执行完毕包括执行补丁操作的核心处理单元向其他核分发核间中断,以通知与其共享代码的其他核心处理单元;其他核心处理单元在接收到核间中断之后,等待补丁操作执行完毕;在补丁操作执行完毕之后,执行补丁操作的核心处理单元再次发送核间中断以通知其他核心处理单元补丁操作执行完毕。进一步地,在执行补丁操作之前,为补丁操作对应的补丁预定固定的内存空间。进一步地,通过设置标志位用于标识共享代码的核心处理单元。进一步地,补丁操作对应的补丁为补丁对,补丁对包括被补丁函数和补丁函数。进一步地,补丁操作后生成的MAP文件和补丁操作前生成的MAP文件除预留补丁段之外保持一致。根据本发明的另一方面,提供了一种多核热补丁的实现系统。根据本发明的多核热补丁的实现系统包括执行补丁操作的核心处理单元,其包括第一通知模块,用于在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元;执行模块,用于执行补丁操作;第二通知模块,用于在补丁操作执行完毕之后,通知其他核心处理单元补丁操作执行完毕;其他核心处理单元,其包括等待模块,用于在接收到第一通知模块的通知后等待补丁操作执行完毕。进一步地,第一通知模块包括第一修改子模块,用于修改全局共享变量,以通知与其共享代码的其他核心处理单元;等待模块包括第二修改子模块,用于修改全局变量为就绪状态,以通知执行补丁操作的核心处理单元其已经准备执行补丁操作;第一等待子模块,用于等待补丁操作执行完毕。进一步地,第一修改子模块,用于修改全局共享变量为待补丁状态,以通知与其共享代码的其他核心处理单元;第二修改子模块,用于修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作。进一步地,第一通知模块包括第一分发子模块,用于向其他核分发核间中断,以通知与其共享代码的其他核心处理单元;第二通知模块包括第二分发子模块,用于在补丁操作执行完毕之后,再次发送核间中断以通知其他核心处理单元补丁操作执行完毕;等待模块包括接收子模块,用于接收到核间中断;第二等待子模块,用于在接收核间中断后等待补丁操作执行完毕。通过本发明,采用多个核心处理单元,解决了相关技术中的热补丁实现方法只适用于单核系统(一个CPU),对于多核系统的热补丁可能导致系统不稳定甚至中断的问题,进而实现了在多核系统中实现热补丁,避免了系统中断造成的损失,并达到了提高了系统稳定性的效果。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的多核热补丁实现方法的流程图;图2是根据本发明实施例的前台系统以及后台补丁工具的架构图;图3是根据本发明实施例的后台补丁工具制作补丁包的流程图;图4是根据本发明实施例的多核系统的热补丁功能示意图;图5是根据本发明实施例的处理补丁命令的流程图;图6是根据本发明实施例的多核系统框架图;图7是根据本发明实施例的多核同步的流程图;图8是根据本发明实施例的多核热补丁的实现系统的结构框图;以及图9是根据本发明实施例的多核热补丁的实现系统的结构框图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本实施例提供了一种多核热补丁的实现方法,图1是根据本发明实施例的热补丁实现方法的流程图,如图1所示,该方法包括步骤S102 多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元,其他核心处理单元在接收到通知后等待补丁操作执行完毕;步骤S104 执行补丁操作的核心处理单元执行补丁操作;步骤S106 在补丁操作执行完毕之后,执行补丁操作的核心处理单元通知其他核心处理单元补丁操作执行完毕。通过上述步骤,多个共享代码的核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元等待其补丁操作执行完毕,然后在其执行完补丁操作后通知与其共享代码的其他核心处理单元补丁操作执行完毕,克服了相关技术中的热补丁实现方法只适用于单核心处理单元,在多核心处理单元系统中会造成系统不稳定及业务中断的问题,实现了在多核系统中实现热补丁,达到了提高了系统稳定性的效果。优选地,下面对步骤S102中的一个优选的实施方式进行说明。执行补丁操作的核心处理单元修改全局共享变量,以通知与其共享代码的其他核心处理单元,其中,全局共享变量用于多核同步;其他核心处理单元分别修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作,并等待补丁操作执行完毕。通过该优选实施例, 实现了通过修改全局共享变量用以通知本次补丁操作相关的其他核心处理单元,以及通过修改全局变量为就绪状态以通知准备执行补丁操作,并等待补丁操作执行完毕,实现了在不影响业务流程的情况下多核之间的同步。优选地,执行补丁操作的核心处理单元修改全局共享变量为待补丁状态,以通知与其共享代码的其他核心处理单元;其他核心处理单元分别修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作,并在IDLE任务中等待补丁操作执行完毕。通过该优选实施例,通过IDLE实现多核之间信息的交互,降低了热补丁的中断延迟并降低了对业务流程的影响。下面对步骤S102的一个优选的实施方式进行说明。执行补丁操作的核心处理单元向其他核分发核间中断,以通知与其共享代码的其他核心处理单元;其他核心处理单元在接收到中断之后,等待补丁操作执行完毕;在补丁操作执行完毕之后,执行补丁操作的核心处理单元再次发送核间中断以通知其他核心处理单元补丁操作执行完毕。通过该优选实施例,实现了通过分发核间中断来实现热补丁中核间信息的传递。优选地,在执行补丁操作之前,为补丁操作对应的补丁预定固定的内存空间。通过该优选实施例,保证了除补丁文件外的其他所有内存不受影响,及保证了执行热补丁的正确性。优选地,通过设置标志位用于标识共享代码的核心处理单元。通过该优选实施例, 通过标识为标志共享代码的核心处理单元,可以实现所有核心处理单元共享代码或者部分核心处理单元共享代码,既可以支持SMP架构的系统,也可以支持AMP架构的系统。优选地,补丁操作对应的补丁为补丁对,补丁对包括被补丁函数和补丁函数。通过该优选实施例,将被补丁函数和补丁函数作为补丁对,在补丁操作出现错误时,可以执行被补丁函数用以系统还原,提高了系统的健壮性。优选地,补丁操作后生成的MAP文件和补丁操作前生成的MAP文件除预留补丁段之外保持一致。通过该优选实施例,保证了补丁对文件的准确性。实施例一本实施例结合了上述实施例及其中的优选实施方式,在本实施例中,提供了一种多核热补丁的实现方法,该方法包括步骤1:用以标志补丁函数适用的核号分布(补丁适用位图)。并以被补丁函数 (原有系统中错误的实现)和补丁函数(用于对被补丁函数进行修改的正确实现)为一组称为补丁对(Pair)。若该对补丁对适用于某核,其对应比特位置1。所有的补丁对及其它补丁信息(如补丁函数的二进制码实现、补丁函数在补丁段里的分布等)共同组成一个补丁文件,称为补丁包(Patch)。在复杂的系统(指AMP架构的多核系统)中,由于功能划分的需要,可能既存在多核共享代码,也存在单核私有代码,甚至是某几个核共享、其它核不能访问的分组代码,通过步骤1,代码可以用来标识是那几个核共享的。步骤2 在原有系统中预留补丁段。为了保证原系统在补丁操作后避免出现调用异常,必须保证除了补丁段(数据段、代码段和常量段等)外的其它内存划分在补丁前后是一致的。如在原有系统中有一函数调用callp —FuncOrigl^xt ;,在链接后生成的二进制代码中,FuncOrigkxt被编译生成的一个内存地址所替换。假如补丁前后FuncOrigkxt的地址分别0x1000和0x2000,那么补丁后执行该函数调用将无法得到正确的结果。为此,要求应用程序提前给热补丁模块预留一定的内存空间(大小固定、地址固定),补丁时增加的文件中定义的全局变量、代码、常量等必须指定到补丁段中,从而能够保证除了补丁文件外的其它所有内存都不受影响。
步骤3 通过后台补丁工具来实现补丁包的制作、校验、分发。图2是根据本发明实施例的前台系统以及后台补丁工具的架构图,如图2所示,后台补丁工具向前台软件系统发送补丁命令,并接收来自前台软件系统反馈的执行结果。补丁工具向用户提供友好的界面,允许用户指定补丁的各种配置如补丁对的版本号、补丁对适用的核号。补丁工具从用户定义的MAP文件和OUT文件中提取补丁对的信息函数名、函数定义、二进制代码实现等。并按照定义的格式补丁对信息写入补丁包中。在制作补丁包之前,为了确保步骤2中的内存一致性,补丁工具提供了 MAP文件校验的功能,即补丁工具可判断原有系统的MAP文件与补丁系统的map文件是否除了补丁段外再无其它不同。当校验一致后,补丁工具生成补丁包文件。同时,补丁工具开启TFTP服务器。具体地,图3是根据本发明实施例的后台补丁工具制作补丁包的流程图,如图3所示,包括步骤S302 用户在补丁工具上输入补丁包的各种属性信息。步骤S304 补丁工具校验原系统MAP文件与新系统MAP是否一致。步骤S306 补丁工具从新系统MAP文件、OUT文件中提取补丁段信息。步骤S308 补丁工具生成补丁包文件。步骤4 软件系统热补丁功能模块处理补丁请求。软件系统初始化热补丁模块时, 创建补丁处理任务来处理一切跟补丁操作相关的命令。包括激活补丁、卸载补丁。当现有补丁需要补丁操作时,补丁工具发送命令到前台软件,前台热补丁模块处理命令请求,发起TFTP请求补丁包文件的下载,并对补丁包进行解析,根据补丁包的内容配置补丁段。图 4是根据本发明实施例的多核系统的热补丁功能示意图,如图4所示,热补丁功能管理模块与内存存储单元进行信息交互,用以完成补丁命令处理、补丁版本管理、代码。缓存(CACHE) 同步、多核状态同步等功能。步骤5 多核同步后修改被补丁函数处的跳转代码。在多核系统中存在有共享代码,其中一核在修改被补丁函数时,其它核不能执行该函数。优选地,所有多核的补丁操作可以由核号最小的核来完成,其它核只负责与该核进行配合。多核同步的具体过程如下最小核修改全局共享变量,通知本次补丁操作相关的其它核。其它核发现本核需要补丁操作后,进入IDLE任务中修改全局共享变量为就绪状态,通知最小核本核已经同步完毕。此后其它核在IDLE任务里死等,直至最小核完成补丁操作为止。当所有核均同步完毕,最小核即开始执行补丁操作,完成后修改全局变量为退出状态通知其它核退出同步。具体地,图5是根据本发明实施例的处理补丁命令的流程图,包括步骤S502 补丁工具向软件系统发送补丁请求命令。步骤S504 最小核更改全局变量通知其他核进入多核同步状态。步骤S506 其他核收到同步请求,进入IDLE任务,修改全局变量,并死等。步骤S508 最小核在其他核同步完成后配置补丁段、修改被补丁函数的跳转代码。步骤S510 最小核补丁操作完成,通知其他核离开多核同步状态。优选地,同步过程还可以通过以下方式实现。主核负责接收接收补丁请求,并向需要进行配合的其他核分发核间中断,其他核第一次收到核间中断(主核准备开始执行热补
8丁操作)后死等直到再一次收到主核发送的核间中断,则可认为主核完成了热补丁操作, 从中断中返回并继续执行业务流程。但这种方式的缺陷是可能影响业务流程,且中断的延迟比较大。此外,多核同步亦可采用核间信号量、核间邮箱等多核间同步机制来实现。步骤6 软件系统管理不同的补丁版本。补丁包在下载到前台后,随即被备份在内存中。在内存允许的情况下,不同版本的补丁允许同时存在于当前系统中。本特征作为一项辅助功能,允许用户定义多个补丁包,进行灵活的操作,并对单元测试和集成测试提供更全面的支持。需要说明的是,上述实施例给出的技术方案以多核DSP系统中的具体实现,但其同样适用在其它的单核系统或多核系统,在此不再赘述。实施例二本实施例提供了一种多核热补丁实现方法,本实施例所处的系统环境为多核的 AMP系统,如图6所示,η = 5。其中,代码段分为3中类型1)6核共享的代码,称为ST ;2) 核0、核1共享的分组代码,称为GlT ;3)核2、3、4、5共享的分组代码,称为G2T。假设原软件系统中分别有3个函数ST_Fimc、GlT_Fimc、G2T_Fimc,现发现这3个函数有错误,故欲对其进行补丁操作,对应的补丁函数分别为ST_Func_Patch、GlT_Func_Patch和G2T_Func_ Patch。该方法包括如下步骤步骤1 实现补丁函数,编译补丁工程,生成补丁代码。具体地,将ST_Func_Patch、GlT_Func_Patch 和 G2T_Func_Patch 的实现写入 Patch, c中,并在原系统的工程中加入I^atch. c,使用编译环境或Makefile编译补丁工程, 生成新的map文件和out文件。应注意的是,编译器为了优化起见,未被调用的函数可能不被链接到新的out文件中,应采取措施确保补丁函数被链接。步骤2:制作补丁包文件。具体地,将软件系统与补丁工具相连接。用户通过补丁工具依次设置补丁对(ST_ Func、ST_Func_Patch)、(GlT_Func、GlT_Func_Patch)、(G2T_Func、G2T_Func_Patch)的属性版本号、适用的核号。并指定补丁工程生成的map文件和out文件,同时指定原系统的 map文件。补丁工具首先比较2个map文件的差异,只有所有的差异都在补丁段的预留内存里时,2个map文件才被认为是匹配的。若map文件不能匹配,则不能继续进行下一步操作。然后,补丁工具从新的map文件中找到补丁对的函数地址,并从out文件中提取整个补丁段内容,最后按照约定的格式封装成补丁包。步骤3 发送补丁激活或卸载命令。具体地,激活命令用于软件系统从后台主机上下载补丁包文件到内存,并用补丁包中的补丁函数来替换被补丁函数。卸载命令则用于将当前正在运行的补丁包去除,系统状态回复到被补丁前的状态,同时将补丁包的备份从内存中删除。步骤4 热补丁任务处理补丁请求。处理过程包括步骤a和步骤b。步骤a:若补丁工具向软件系统发送的是激活命令,则补丁工具在本地开启一个 TFTP服务器,同时TFTP服务器的IP地址、补丁包在本地的存储路径、补丁包的版本号作为命令的附加参数被发送到前台系统。前台则根据这些参数向本地主机下载补丁包,然后从内存中申请动态内存来备份补丁包和被补丁函数的代码。
当备份工作完成后,当前处于运行状态的最小核开始执行补丁操作。多核系统的同步使用全局共享变量来标志各核的状态,从而实现同步。volatile unsigned int gaudCoresPatchStat [6] ;//标志多核的同步状态。本实施例的每个核对应gaudCoresPatchStat的一个索弓丨。gaudCoresPatchStat 可能的状态有 3 个PM_SYNC_ENTER、PM_SYNC_READY、PM_SYNC_EXIT。PM_SYNC_ENTER 表示该核目前需要进入同步状态,但尚未完成同步。PM_SYNC_READY表示该核已进入同步状态。 PM_SYNC_EXIT表示该核可以退出同步状态。图7是根据本发明实施例的多核同步的流程图,如图7所示,包括步骤S702 最小核将本次补丁操作相关的核标志修改为PM_SYNC_ENTER。步骤S704 最小核配置补丁段。步骤S706 最小核修改补丁函数跳转代码。步骤S708 更新 gtCachetrl。步骤S710 最小核修改 gaudCoresPatchMat 为 PM_SYNC_EXIT。步骤S712 反馈执行结果,并退出。步骤S714 其它核在进入IDLE任务后查询本核的标志是否为PM_SYNC_ENTER,若是,则将本核的标志修改为PM_SYNC_READY。步骤S716 然后死等,直至本核的标志为PM_SYNC_EXIT。最小核在所有核均完成同步后,将补丁包文件中保存的补丁代码段、数据段和常量段依次拷贝到相应的物理内存处。然后依次修改被补丁函数的第一条指令,将其改为其补丁函数的入口地址。如ST_Fimc 的第一条指令应修改为jmp_ST_Func_Patch,其中_ST_Func_Patch应为具体的内存地址。 需要特别说明的是,执行完ST_FimC_PatCh补丁后,应将PC指针返回到调用ST_Fimc的地址。步骤S718 同时,由于代码段可能是cacheable的,因此最小核在修改了被补丁函数的代码后,应通知其它核刷新被补丁函数的cache,避免其它核仍然执行的是cache里的旧代码。具体实现方案如下定义全局结构体变量gtCacheCtrl,保存补丁包中与被补丁函数相关的数据。最小核在执行补丁操作后,将补丁包中的信息备份到gtCacheCtrl中。其它核在退出IDLE任务前将gtCacheCtrl内容刷到cache里,完成内存与cache的同步。步骤S720 最小核完成以上工作后,修改本次补丁相关核的标志为PM_SYNC_ EXIT。其它核在IDLE任务中得以退出,并继续执行。步骤b 若补丁工具向软件系统发送的是卸载命令,则前台系统执行以下操作使用备份的原补丁函数的信息来恢复到补丁前的系统状态。此过程中的同步操作与上文所述一致。然后,将补丁激活过程中申请的动态内存全部释放,将备份的补丁文件删除,以避免系统存在内存泄露的隐患。步骤5 热补丁任务反馈处理结果。前台系统最后处理的结果以错误码的形式反馈到后台补丁工具。本实施例提供了一种多核热补丁的实现系统,图8是根据本发明实施例的多核热补丁的实现系统的结构框图,如图8所示,下面对上述结构进行详细描述执行补丁操作的核心处理单元2,其包括第一通知模块82,用于在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元;执行模块84,连接至第一通知模块82,用于在第一通知模块82通知与其共享代码的其他核心处理单元之后,执行补丁操作;第二通知模块86,连接至执行模块84,用于在执行模块84的补丁操作执行完毕之后,通知其他核心处理单元补丁操作执行完毕;其他核心处理单元4,包括等待模块88,用于在接收到第一通知模块82的通知后等待补丁操作执行完毕。图9是根据本发明实施例的多核热补丁的实现系统的优选的结构框图,如图9所示,下面对上述结构进行详细描述第一通知模块82包括第一修改子模块822,用于修改全局共享变量,以通知与其共享代码的其他核心处理单元;等待模块88包括第二修改子模块882,用于修改全局变量为就绪状态,以通知执行补丁操作的核心处理单元其已经准备执行补丁操作;第一等待子模块884,连接至第二修改子模块882,用于等待补丁操作执行完毕。优选地,第一修改子模块822,用于修改全局共享变量为待同步状态,以通知与其共享代码的其他核心处理单元;第二修改子模块882,用于修改全局变量为就绪状态以通知执行补丁操作的核心处理单元其已经准备执行补丁操作。第一通知模块82包括第一分发子模块824,用于向其他核分发核间中断,以通知与其共享代码的其他核心处理单元;第二通知模块86包括第二分发子模块862,用于在补丁操作执行完毕之后,再次发送核间中断以通知其他核心处理单元补丁操作执行完毕;等待模块88包括接收子模块886,用于接收到核间中断;第二等待子模块888, 连接至接收子模块886,用于在接收到核间中断后等待补丁操作执行完毕;通过上述实施例,提供了一种多核热补丁实现方法及系统,通过该方法,多个共享代码的核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元等待其补丁操作执行完毕,然后在其执行完补丁操作后通知与其共享代码的其他核心处理单元补丁操作执行完毕,克服了相关技术中的热补丁实现方法只适用于单核心处理单元,在多核心处理单元系统中会造成系统不稳定及业务中断的问题,实现了在多核系统中实现热补丁,达到了提高了系统稳定性的效果。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多核热补丁的实现方法,其特征在于,包括多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享所述代码的其他核心处理单元,所述其他核心处理单元在接收到所述通知后等待所述补丁操作执行完毕;执行所述补丁操作的核心处理单元执行所述补丁操作;在所述补丁操作执行完毕之后,执行所述补丁操作的核心处理单元通知所述其他核心处理单元所述补丁操作执行完毕。
2.根据权利要求1所述的方法,其特征在于,多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享所述代码的其他核心处理单元,所述其他核心处理单元在接收到所述通知后等待所述补丁操作执行完毕包括执行所述补丁操作的核心处理单元修改全局共享变量,以通知与其共享所述代码的其他核心处理单元,其中,所述全局共享变量用于多核同步;所述其他核心处理单元分别修改所述全局变量为就绪状态以通知执行所述补丁操作的核心处理单元其已经准备执行补丁操作,并等待所述补丁操作执行完毕。
3.根据权利要求2所述的方法,其特征在于执行所述补丁操作的核心处理单元修改所述全局共享变量为待补丁状态,以通知与其共享所述代码的其他核心处理单元;所述其他核心处理单元分别修改所述全局变量为就绪状态以通知执行所述补丁操作的核心处理单元其已经准备执行补丁操作,并在空闲IDLE任务中等待所述补丁操作执行完毕。
4.根据权利要求1所述的方法,其特征在于,多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享所述代码的其他核心处理单元,所述其他核心处理单元在接收到所述通知后等待所述补丁操作执行完毕包括执行所述补丁操作的核心处理单元向所述其他核分发核间中断,以通知与其共享所述代码的其他核心处理单元;所述其他核心处理单元在接收到所述核间中断之后,等待所述补丁操作执行完毕;在所述补丁操作执行完毕之后,执行所述补丁操作的核心处理单元再次发送核间中断以通知所述其他核心处理单元所述补丁操作执行完毕。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在执行所述补丁操作之前, 为所述补丁操作对应的补丁预定固定的内存空间。
6.根据权利要求1至4中任一项所述的方法,其特征在于,通过设置标志位用于标识共享所述代码的核心处理单元。
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述补丁操作对应的补丁为补丁对,所述补丁对包括被补丁函数和补丁函数。
8.根据权利要求7所述的方法,其特征在于,所述补丁操作后生成的MAP文件和所述补丁操作前生成的MAP文件除预留补丁段之外保持一致。
9.一种多核热补丁的实现系统,其特征在于,包括执行补丁操作的核心处理单元,其包括第一通知模块,用于在对代码执行补丁操作之前,通知与其共享所述代码的其他核心处理单元;执行模块,用于执行所述补丁操作;第二通知模块,用于在所述补丁操作执行完毕之后,通知所述其他核心处理单元所述补丁操作执行完毕;所述其他核心处理单元,其包括等待模块,用于在接收到所述第一通知模块的通知后等待所述补丁操作执行完毕。
10.根据权利要求9所述的系统,其特征在于, 所述第一通知模块包括第一修改子模块,用于修改全局共享变量,以通知与其共享所述代码的其他核心处理单元;所述等待模块包括第二修改子模块,用于修改全局变量为就绪状态,以通知执行所述补丁操作的核心处理单元其已经准备执行补丁操作;第一等待子模块,用于等待所述补丁操作执行完毕。
11.根据权利要求10所述的系统,其特征在于所述第一修改子模块,用于修改全局共享变量为待补丁状态,以通知与其共享所述代码的其他核心处理单元;所述第二修改子模块,用于修改全局变量为就绪状态以通知执行所述补丁操作的核心处理单元其已经准备执行补丁操作。
12.根据权利要求9所述的系统,其特征在于, 所述第一通知模块包括第一分发子模块,用于向所述其他核分发核间中断,以通知与其共享所述代码的其他核心处理单元;所述第二通知模块包括第二分发子模块,用于在所述补丁操作执行完毕之后,再次发送核间中断以通知所述其他核心处理单元所述补丁操作执行完毕; 所述等待模块包括接收子模块,用于接收到所述核间中断;第二等待子模块,用于在接收到所述核间中断后等待所述补丁操作执行完毕。
全文摘要
本发明公开了一种多核热补丁的实现方法及系统,该方法包括多个核心处理单元中的一个在对代码执行补丁操作之前,通知与其共享代码的其他核心处理单元,其他核心处理单元在接收到通知后等待补丁操作执行完毕;执行补丁操作的核心处理单元执行补丁操作;在补丁操作执行完毕之后,执行补丁操作的核心处理单元通知其他核心处理单元补丁操作执行完毕。通过本发明,提高了系统稳定性。
文档编号G06F9/445GK102467394SQ201010543020
公开日2012年5月23日 申请日期2010年11月12日 优先权日2010年11月12日
发明者汤时虎, 赵路, 郑国春 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1