[发明专利]多核处理器共享代码段补丁方法及装置有效
申请号: | 200710171674.8 | 申请日: | 2007-11-29 |
公开(公告)号: | CN101178672A | 公开(公告)日: | 2008-05-14 |
发明(设计)人: | 侯德强 | 申请(专利权)人: | 上海华为技术有限公司 |
主分类号: | G06F11/00 | 分类号: | G06F11/00 |
代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 逯长明 |
地址: | 200121上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多核 处理器 共享 代码 补丁 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及多核处理器共享代码段补丁方法及装置。
背景技术
在计算机系统运行过程中经常需要进行打补丁操作。补丁功能的主要目的是为了能够在系统运行过程中可以在线地维护和修改其代码,而不影响正常业务的运行,从而实现主机系统代码的动态升级。
下面以MIPS(Microcumputer without interlocked pipeline stages一种典型的指令系统)处理器为例介绍具体的打补丁的工作原理,如图1所示,为了使用新的函数替换原来的函数,也就是进行打补丁操作,需要修改原函数的起始指令,使之跳转到位于补丁区的新函数,当新函数执行完成之后直接返回到调用原函数的主函数,这样就可以实现基于函数级的代码补丁操作。
由于目前处理器的技术大部分使用了流水线技术。对图1的MIPS处理器,由于使用流水线技术,进行指令跳转时存在延迟槽(实际执行时会执行延迟槽指令,再执行跳转指令),所以在修改函数指令使之实现跳转操作时必须同时修改两条指令,即就该使用空指令NOP作为延迟槽指令、以及修改跳转指令才能实现打补丁操作。
因为补丁操作需要同时修改两条指令,且不能在代码已经执行了第1条指令的情况下进行指令修改。这对多任务操作环境和多核处理器且共享代码段的情况下的补丁操作提出了较高的要求。
为了解决上述提到的问题,一个最简单的方法就是在进行系统设计时从整体实现上加以保证,即使用单任务操作环境,或者使待打补丁的代码与打补丁函数本身位于同一个任务中。下面分别分析单任务运行环境下和多任务环境下的两种情况:
1、在单任务运行环境下,如果执行打补丁操作,其他的操作自然会停止执行,即系统中不可能运行将被打补丁函数的指令。
2、如果在系统中必须使用多任务环境,可以采用变通的方法,即让需要打补丁的函数与实施打补丁操作的函数在同一个任务中。举例如下:如果系统仅需要对消息处理的相关函数进行补丁操作,可以将打补丁操作的函数也作为一个消息的处理函数,用消息的方式触发补丁操作,由于消息处理本身的异步性就可以保证在打补丁操作时不可能执行其他的消息处理函数,再通过禁任务、禁中断等方式禁止其他操作的进行,从而可以方便地实现补丁操作。也就是说如果需要在真正的多任务环境下进行补丁操作,由于多任务环境本质上是由一个CPU(Central Processing Unit,中央处理器)进行分时操作完成多任务处理,可以通过锁任务、锁中断实现补丁操作;并进一步通过检查各任务上下文等其他手段来检查当前各任务是否处于待打补丁函数的前两条指令状态从而决策当前是否可以进行补丁操作。
虽然以上两种方法能够在一定程度上解决打补丁的问题,但是需要系统设计时加以保证,降低了系统设计的灵活性;无法使用多任务环境或者导致打补丁的范围受限。
由于多核处理器本身就是多vCPU的并行处理方式,对于在多核处理器中且共享代码段的情况下,由于存在多vCPU共同执行同一段代码,但各vCPU又使用独立的私有数据(包括任务上下文)的情况,在打补丁时难以保证补丁操作完成性,而且由于各个vCPU的独立性,给共享代码打补丁的vCPU难以查看其他vCPU的当前执行状态。
因此以上技术中虽然实现了单CPU多任务环境下的补丁操作,但仍无法解决多核处理器在共享代码段时的补丁操作。
发明内容
本发明要解决的技术问题是在多核处理器共享代码段补丁方法,实现该方法的具体过程为:
开放对预置的代码补丁区和共享代码段的访问权限,向业务vCPU发送补丁同步消息;
查看所述业务vCPU是否全部完成同步;
若全部完成同步则进行补丁操作。
本发明实施例提供了一种多核处理器共享代码段补丁装置,该装置包括:
权限控制单元,用于开放对预置的代码补丁区和共享代码段的访问权限;
发送单元,用于向业务vCPU发送补丁同步消息。
控制单元,用于查看所述业务vCPU是否全部同步完成,若全部完成则进行补丁操作。
本发明实施例提供了一种多核处理器共享代码段补丁方法,该方法具体为:
接收补丁同步消息;
设置标记变量为同步状态并发送给控制vCPU;
刷新快速缓冲贮存区,并通知控制vCPU所述的刷新完成,开始正常的业务处理。
本发明实施例提供了一种多核处理器共享代码段补丁装置,该装置包括:
接收单元,用于接收控制vCPU发送的补丁同步消息和补丁操作完成通知;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海华为技术有限公司,未经上海华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710171674.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:大型鱼雷罐下料及组焊方法
- 下一篇:数据队列装置与数据队列测试方法