一种跨虚拟机的多服务调用方法及系统的制作方法_2

文档序号:9349794阅读:来源:国知局
文切换后处理器的执行初始状态,以确保多个处理器同时执行任务程序时不相互干扰。
[0041]步骤S3:所述第二虚拟机执行所述第二任务,完成后通过网络发送响应结果,然后向所述虚拟机监控器发送关于所述第一任务的第二上下文切换请求。
[0042]步骤S4:所述虚拟机监控器接收所述第二上下文切换请求,将所述第二任务的上下文切换至所述第一虚拟机中第一任务的上下文,完成整个网络请求的处理操作。
[0043]需要说明的是,在上述切换过程中,处理器需要维护一可相互调用的虚拟机任务列表,该任务列表为每个任务制定一个唯一的ID (该ID用于标识任务的唯一身份),并将该ID关联到相应任务的上下文状态。当程序从第一虚拟机切换到第二虚拟机时需要提供第二虚拟机的ID号。处理器通过第二虚拟机的ID号找到对应的第二虚拟机的状态。切换过程所做的状态更改包括:页表、通用寄存器状态及控制寄存器等。
[0044]在一实施例中,所述第一、第二上下文切换还可以通过切换进程的页表状态来实现。需要说明的是,更改页表优选为将当前处理器的扩展页表(Extended Page Table, EPT)寄存器的值改为第二虚拟机的扩展页表的根指针,将当前处理器的页表寄存器CR3的值改为第二虚拟机中的第二任务对应的页表根指针。当程序请求切换调用时,处理器首先通过一个虚拟机调用hypercall进入到特权态,将第一虚拟机对应的上下文状态保存在一段被保护的内存中,然后通过程序所提供的第二任务ID在所维护的可相互调用的虚拟机任务列表中找到第二虚拟机中的第二任务的上下文状态,加载到处理器寄存器中,随后重新返回到非特权态。此时,处理器上下文将变为第二虚拟机中第二任务的上下文状态,切换过程完成。
[0045]在一实施例中,所述虚拟机监控器收到第一或第二上下文切换请求后,先对第一或第二虚拟机进行安全认证,认证通过时进行相应的上下文切换。
[0046]需要说明的是,本方法并不限于第一、第二虚拟机,当还有其他虚拟机且需要执行当中的服务时,可以同时实现虚拟机之间的对不同服务的调用操作而互不干扰。除此之外,本方法也不局限在一个处理器中,当处于多核情况,每个处理器的处理过程皆可使用本方法来实现。特别的,当系统运行数据密集型应用时,由于被调用的处理器与调用的处理器往往不是同一个,因而数据需要在不同核中进行同步,导致产生大量的缓存同步从而降低了系统的性能。本方法的同步调用可以避免缓存同步与失效的发生。
[0047]请参阅图4,与方法实施例原理相似的是,本发明提供一种跨虚拟机的多服务调用系统9,包括:第一虚拟机91、第二虚拟机92及虚拟机监控器93。①-⑤表示网络请求的处理顺序。由于前述方法实施例中的技术特征可应用于本发明的系统实施例中,因此不在重复赘述。
[0048]①,第一虚拟机91接收第一网络请求,据以执行第一任务。②,第一虚拟机91向虚拟机监控器93发送第一上下文切换请求。③,虚拟机监控器93接收第一上下文切换请求,将所述第一任务的上下文切换至第二虚拟机92中执行第二任务的上下文。④,第二虚拟机92执行第二任务,完成第二任务后发送关于第一任务的第二上下文切换请求至虚拟机监控器93。⑤,虚拟机监控器93接收第二上下文切换请求,将所述第二任务的上下文切换至所述第一虚拟机91中第一任务的上下文。
[0049]在一实施例中,所述系统是在以共享内存的方式建立的数据共享区中运行的。
[0050]在一实施例中,所述第一、第二上下文切换是通过一个超调用(hypercall)向虚拟机监控器93发送一即时切换请求实现的。
[0051]在一实施例中,所述第一、第二上下文切换是通过切换进程的页表状态实现的。
[0052]在一实施例中,虚拟机监控器93还用于:收到第一或第二上下文切换请求后,对第一或第二虚拟机进行安全认证,认证通过时进行相应的上下文切换。
[0053]综上所述,本发明的跨虚拟机的多服务调用方法及系统可使系统在处于高负载的情况下在较短的时间内处理完网络请求,而在处于低负载的情况下减小处理器的处理强度,有效地克服了现有技术中的种种缺点而具高度的产业利用价值。
[0054]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【主权项】
1.一种跨虚拟机的多服务调用方法,其特征在于,包括: 第一虚拟机接收第一网络请求,根据所述第一网络请求执行第一任务后向虚拟机监控器发送第一上下文切换请求; 所述虚拟机监控器接收所述第一上下文切换请求,将所述第一任务的上下文切换至第二虚拟机中执行第二任务的上下文; 所述第二虚拟机执行所述第二任务,完成后向所述虚拟机监控器发送关于所述第一任务的第二上下文切换请求; 所述虚拟机监控器接收所述第二上下文切换请求,将所述第二任务的上下文切换至所述第一虚拟机中第一任务的上下文。2.根据权利要求1所述的跨虚拟机的多服务调用方法,其特征在于,所述方法是在以共享内存的方式建立的数据共享区中实现的。3.根据权利要求1所述的跨虚拟机的多服务调用方法,其特征在于,所述第一、第二上下文切换是通过一个超调用向所述虚拟机监控器发送一即时切换请求实现的。4.根据权利要求1所述的跨虚拟机的多服务调用方法,其特征在于,所述第一、第二上下文切换是通过切换进程的页表状态实现的。5.根据权利要求1所述的跨虚拟机的多服务调用方法,其特征在于,所述虚拟机监控器收到第一或第二上下文切换请求后,对第一或第二虚拟机进行安全认证,认证通过时进行相应的上下文切换。6.一种跨虚拟机的多服务调用系统,其特征在于,包括: 第一虚拟机,用于接收第一网络请求,据以执行第一任务,发送第一上下文切换请求; 第二虚拟机,用于执行第二任务,发送关于所述第一任务的第二上下文切换请求; 虚拟机监控器,用于接收所述第一上下文切换请求,将所述第一任务的上下文切换至第二虚拟机中执行第二任务的上下文;接收所述第二上下文切换请求,将所述第二任务的上下文切换至所述第一虚拟机中第一任务的上下文。7.根据权利要求6所述的跨虚拟机的多服务调用系统,其特征在于,所述系统是在以共享内存的方式建立的数据共享区中运行的。8.根据权利要求6所述的跨虚拟机的多服务调用系统,其特征在于,所述第一、第二上下文切换是通过一个超调用向所述虚拟机监控器发送一即时切换请求实现的。9.根据权利要求6所述的跨虚拟机的多服务调用系统,其特征在于,所述第一、第二上下文切换是通过切换进程的页表状态实现的。10.根据权利要求6所述的跨虚拟机的多服务调用系统,其特征在于,所述虚拟机监控器还用于:收到第一或第二上下文切换请求后,对第一或第二虚拟机进行安全认证,认证通过时进行相应的上下文切换。
【专利摘要】本发明提供一种跨虚拟机的多服务调用方法及系统,方法包括:第一虚拟机接收第一网络请求,根据所述第一网络请求执行第一任务后向虚拟机监控器发送第一上下文切换请求;所述虚拟机监控器接收所述第一上下文切换请求,将所述第一任务的上下文切换至第二虚拟机中执行第二任务的上下文;所述第二虚拟机执行所述第二任务,完成后向所述虚拟机监控器发送关于所述第一任务的第二上下文切换请求;所述虚拟机监控器接收所述第二上下文切换请求,将所述第二任务的上下文切换至所述第一虚拟机中第一任务的上下文。本发明可实现位于不同虚拟机中的多服务调用,避免了额外的系统调度,提高了系统的响应速度。
【IPC分类】G06F9/48, G06F9/455
【公开号】CN105068859
【申请号】CN201510456088
【发明人】利文浩, 张之收, 陈锴
【申请人】上海谐桐信息技术有限公司
【公开日】2015年11月18日
【申请日】2015年7月29日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1