虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序转让专利

申请号 : CN200980000477.7

文献号 : CN101689127B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宫崎亮太齐藤雅彦加藤一臣

申请人 : 松下电器产业株式会社

摘要 :

第一虚拟计算机(10)的任务执行部(100)在根据操作系统的任务调度来执行模拟任务(110)时,对虚拟计算机控制部(30)通知由优先级获取部(122)获取的优先级和将当前动作中的第一虚拟计算机(10)切换为第二虚拟计算机(20)的切换指示,虚拟计算机控制部(30)接收由任务执行部(100)通知的优先级和切换指示,将当前动作中的第一虚拟计算机(10)切换为第二虚拟计算机(20)。根据此结构,可以削减虚拟计算机的切换所需要的开销。

权利要求 :

1.一种虚拟计算机控制装置,其特征在于包括:

多台虚拟计算机,分别具有进行基于任务的优先级执行的任务调度的操作系统;以及虚拟计算机控制部,控制所述多台虚拟计算机的切换,其中,所述多台虚拟计算机的每一台具备:

任务执行部,其生成切换任务,该切换任务执行向所述虚拟计算机控制部通知用于将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换指示的处理,并且所述任务执行部根据对各任务预先设定的优先级依次执行包含所述切换任务在内的1个以上的任务;

优先级获取部,从所述其他虚拟计算机的可执行的任务中获取优先级最高的任务的优先级;以及优先级设定部,将所述其他虚拟计算机的任务之中优先级最高的任务的优先级设定为由所述任务执行部生成的所述切换任务的优先级,其中所述任务执行部,在对所述切换任务设定的优先级变得比对包含该切换任务在内的虚拟计算机中的其他任务设定的优先级更高的情况下,通过执行所述切换任务,从而将所述切换指示通知给所述虚拟计算机控制部,所述虚拟计算机控制部,接收所通知到的所述切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机。

2.根据权利要求1所述的虚拟计算机控制装置,其特征在于:所述任务执行部在所述多台虚拟计算机启动时生成所述切换任务,并将所生成的所述切换任务的优先级设定为最高优先级。

3.根据权利要求1所述的虚拟计算机控制装置,其特征在于,所述虚拟计算机控制部包括:中断接收部,接收用于通知所述多台虚拟计算机中断的中断通知,利用包含在所述中断通知中的中断因素,从所述多台虚拟计算机中判断作为中断对象的虚拟计算机;以及中断优先级储存判断部,判断是否将与所述中断因素相对应的优先级作为所述中断对象的虚拟计算机的优先级而设定。

4.根据权利要求3所述的虚拟计算机控制装置,其特征在于:

所述中断优先级储存判断部,判断由所述中断接收部判断的中断对象的虚拟计算机是否与中断前动作的虚拟计算机相同,所述虚拟计算机控制部还具备虚拟计算机优先级设定部,在中断对象的虚拟计算机被判断为与中断前动作的虚拟计算机不同时,将与所述中断因素相对应的优先级作为所述中断对象的虚拟计算机的优先级而设定。

5.根据权利要求3所述的虚拟计算机控制装置,其特征在于还包括:存储由所述任务执行部通知的所述优先级的优先级存储部,其中,所述虚拟计算机控制部还具备虚拟计算机优先级设定部,在将与所述中断因素相对应的优先级和所述优先级存储部中存储的优先级进行比较,当与所述中断因素相对应的优先级高于所述优先级存储部中存储的优先级时,将与所述中断因素相对应的优先级作为所述中断对象的虚拟计算机的优先级而设定。

6.根据权利要求1所述的虚拟计算机控制装置,其特征在于还包括:存储各虚拟计算机的执行上下文的执行上下文存储部,其中,所述虚拟计算机控制部,使与切换前的虚拟计算机对应的执行上下文退避至所述执行上下文存储部,并使与切换后的虚拟计算机对应的执行上下文从所述执行上下文存储部恢复。

7.根据权利要求6所述的虚拟计算机控制装置,其特征在于还包括:存储由所述任务执行部通知的所述优先级的优先级存储部,其中,所述虚拟计算机控制部,在接收到由所述任务执行部通知的所述优先级和切换指示时,使与切换前的虚拟计算机对应的执行上下文退避至所述执行上下文存储部,将由所述任务执行部通知的所述优先级存储到所述优先级存储部,并使与切换后的虚拟计算机对应的执行上下文从所述执行上下文存储部恢复,切换后的虚拟计算机所包含的所述任务执行部,再次执行被暂停的切换任务,切换后的虚拟计算机所包含的所述优先级设定部,获取所述优先级存储部中存储的切换前的虚拟计算机的所述优先级,并将所获取的所述优先级作为切换任务的优先级而设定。

8.根据权利要求6所述的虚拟计算机控制装置,其特征在于:

所述执行上下文存储部,针对每台虚拟计算机存储被所述虚拟计算机控制部退避的执行上下文,所述任务执行部,在当前动作中的虚拟计算机发生故障时,对所述虚拟计算机控制部通知表示当前动作中的虚拟计算机已发生故障的故障优先级,所述虚拟计算机控制部,在接收到由所述任务执行部通知的所述故障优先级时,使存储在所述执行上下文存储部中的最旧的执行上下文恢复。

9.一种虚拟计算机控制方法,用于虚拟计算机控制装置中的虚拟计算机控制方法,该虚拟计算机控制装置包括多台虚拟计算机以及用于控制所述多台虚拟计算机的切换的虚拟计算机控制部,其中所述多台虚拟计算机分别具有进行基于任务的优先级执行的任务调度的操作系统,其特征在于包括以下步骤:任务执行步骤,生成切换任务,该切换任务执行向所述虚拟计算机控制部通知用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换指示的处理,并且在该任务执行步骤中,根据对各任务预先设定的优先级依次执行包含所述切换任务在内的1个以上的任务;

优先级获取步骤,从所述其他虚拟计算机的可执行的任务中获取优先级最高的任务的优先级;

优先级设定步骤,将所述其他虚拟计算机的任务之中优先级最高的任务的优先级设定为在所述任务执行步骤中生成的所述切换任务的优先级;

通知步骤,在对所述切换任务设定的优先级变得比对包含该切换任务在内的虚拟计算机中的其他任务设定的优先级更高的情况下,通过执行所述切换任务,从而向所述虚拟计算机控制部通知所述切换指示;以及切换步骤,接收在所述通知步骤通知到的所述切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机。

说明书 :

虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机

控制程序

技术领域

[0001] 本发明涉及在一台物理计算机中控制多台虚拟计算机的执行的虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序,尤其是涉及切换多台虚拟计算机的虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序。

背景技术

[0002] 随着微处理器的性能改善,作为高效利用硬件的技术,用1台物理计算机中实现多台虚拟计算机(通过软件实现的虚拟的计算机)的虚拟化技术被采用。以下,将该物理计算机记述为信息处理装置。
[0003] 在家电设备等嵌入式设备(embedded device)中,要求兼顾GUI(Graphical UserInterface,图形用户接口)或多媒体处理等多功能性和设备控制或同步通信等实时性。为此,通过让适合于多媒体处理等多功能性的虚拟计算机和适合于实时性的虚拟计算机在1台信息处理装置上切换并执行,以实现两种处理的兼顾。
[0004] 作为以往的切换虚拟计算机的方法,有一种方法是让具备重视实时性的OS(操作系统)的虚拟计算机优先执行,当该OS处于空闲状态(idle state)时,让当前动作中的虚拟计算机切换为其他虚拟计算机来执行。还有一种方法是给多台虚拟计算机分配固定的优先级,利用该优先级来进行虚拟计算机的调度(schedule)。
[0005] 在让具备重视实时性的OS的虚拟计算机始终优先的方法中,即使其他虚拟计算机中有重要处理发生,也无法立即执行该重要处理。另外,在利用固定的优先级来执行虚拟计算机的计划的方法中,难以由多台虚拟计算机共同执行重视实时性的处理。 [0006] 作为解决该课题的以往方法,有一种根据所要执行的处理来改变虚拟计算机的优先级的技术(例如,参照日本专利公开公报特开2000-242512号)。即,在以往技术中,将虚拟计算机的优先级设定为由该虚拟计算机执行的任务的优先级。所谓任务的优先级,是OS的任务调度中所使用的值。当某个虚拟计算机执行具有高优先级的任务时,由于该虚拟计算机的优先级也变高,因此须切换成高优先级的虚拟计算机,以执行高优先级的任务。 [0007] 然而,在所述以往的结构中,每当OS执行任务调度时,执行中的虚拟计算机(OS)都 要暂停(suspended),控制多台虚拟计算机的切换的OS切换程序运行,来确定接下来要执行的虚拟计算机。即,以往技术存在这样的问题:即使在处理返回暂停的相同虚拟计算机的情况下,也会发生虚拟计算机的暂停和恢复的处理。

发明内容

[0008] 本发明是为了解决上述的问题,其目的在于提供一种能够削减虚拟计算机的切换所需的开销(overhead)的虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序。
[0009] 本发明所涉及的虚拟计算机控制装置包括:分别具有进行基于任务的优先级执行的任务调度的操作系统的多台虚拟计算机;以及控制所述多台虚拟计算机的切换的虚拟计算机控制部,所述多台虚拟计算机的每一台具有:执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务的任务执行部;从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级的优先级获取部;以及将所述切换任务的优先级设定为由所述其他虚拟计算机的所述优先级获取部获取的所述优先级的优先级设定部,其中,所述任务执行部在根据所述操作系统的任务调度来执行所述切换任务时,对所述虚拟计算机控制部通知由所述优先级获取部获取的所述优先级和将当前动作中的虚拟计算机切换为所述其他虚拟计算机的切换指示,所述虚拟计算机控制部接收由所述任务执行部通知的所述优先级和切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机。
[0010] 根据该结构,多台虚拟计算机分别具有进行基于任务的优先级执行的任务调度的操作系统,虚拟计算机控制部控制多台虚拟计算机的切换。任务执行部执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务,优先级获取部从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级,优先级设定部将切换任务的优先级设定为由其他虚拟计算机的优先级获取部获取的优先级。任务执行部在根据操作系统的任务调度执行切换任务时,对虚拟计算机控制部通知由优先级获取部获取的优先级和将当前动作中的虚拟计算机切换为其他虚拟计算机的切换指示。虚拟计算机控制部接收由任务执行部所通知的优先级和切换指示,将当前动作中的虚拟计算机切换为其他虚拟计算机。
[0011] 根据本发明,切换任务的优先级被设定为其他虚拟计算机中的优先级最高的任务的优先级,切换任务仅在虚拟计算机被切换时才加以执行,因此可削减虚拟计算机的暂停和恢复的处理次数,从而可削减虚拟计算机的切换所需的开销。
[0012] 本发明的目的、特征及优点通过以下的详细说明和附图可以更加明确。 附图说明
[0013] 图1是表示本发明实施例1中的信息处理装置结构的框图。
[0014] 图2是表示本发明实施例1中的任务管理表的一例的图。
[0015] 图3是表示本发明实施例1中的虚拟计算机标识符表的一例的图。
[0016] 图4是表示本发明实施例1中的第一虚拟计算机的切换处理的一例的流程图。 [0017] 图5是表示本发明实施例1中的虚拟计算机控制部的切换处理的一例的流程图。 [0018] 图6是表示本发明实施例1中的第二虚拟计算机的切换处理的一例的图。 [0019] 图7是表示本发明实施例2中的信息处理装置结构的框图。
[0020] 图8是表示本发明实施例2中的中断表的一例的图。
[0021] 图9是表示本发明实施例2中的虚拟计算机控制部的中断处理的一例的流程图。 [0022] 图10是表示本发明实施例2中的优先级表的一例的图。
[0023] 图11是表示本发明实施例3中的执行上下文存储部的结构的图。
[0024] 图12是表示本发明实施例4中的信息处理装置结构的框图。

具体实施方式

[0025] 以下,参照附图来说明本发明的实施例。另外,以下的实施例只是将本发明具体化的一例,并不限定本发明的技术范围。
[0026] (实施例1)
[0027] 图1是表示本发明的实施例1中的信息处理装置结构的框图。
[0028] 图1所示的信息处理装置包括CPU(中央运算装置)1、中断控制器(interruptioncontroller)2、外部设备3及存储器4。
[0029] 对于CPU1,只要处理能力充分,则可任意使用。中断控制器2将外部设备3输出的中断要求通知给CPU1。
[0030] 外部设备3为各种输入输出装置,使用与信息处理装置的使用目的相适应的装置。例如,外部设备3为键设备、通信设备、显示设备、解码器、编码器、DSP(数字信号处理(DigitalSignal Processor))或DMA(直接存储器访问(Direct Memory Access))控制器等。
[0031] 存储器4包括第一虚拟计算机10、第二虚拟计算机20、虚拟计算机控制部30、虚拟计算机优先级存储部40及执行上下文(execution context)存储部50。存储器4可使用任 意类型,例如只读存储器(ROM)、随机存取存储器(RAM)或快闪存储器等。而且,存储器4没有必要由单一的存储装置构成,可以是同种的多个存储器的组合或者不同种类的多个存储器的组合。进一步,除了存储器4以外,也可以设置例如硬盘之类的外部存储装置,在信息处理装置的动作不会出现问题的范围内可以将存储器4的内容移至外部存储装置。 [0032] 而且,当第一虚拟计算机10、第二虚拟计算机20、虚拟计算机控制部30、虚拟计算机优先级存储部40及执行上下文存储部50存在于存储器4中时,它们是作为虚拟计算机控制程序而存在,通过CPU1执行该虚拟计算机控制程序,作为第一虚拟计算机10、第二虚拟计算机20、虚拟计算机控制部30、虚拟计算机优先级存储部40及执行上下文存储部50而发挥作用。
[0033] 第一虚拟计算机10包括执行包含模拟任务(dummy task)110在内的1个以上任务(task)的任务执行部100以及第一OS120。包含模拟任务110在内的所有的任务分别设定有优先级。第一OS120进行基于任务的优先级执行的任务的调度(scheduling of tasks)。 [0034] 任务执行部100根据预先对各任务设定的优先级来依序执行任务。而且,任务执行部100还执行模拟任务110,该模拟任务110用于执行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理。
[0035] 模拟任务110是反映第二虚拟计算机20的优先级的任务,包括虚拟计算机切换通知部111及优先级设定请求部112。
[0036] 虚拟计算机切换通知部111向第一OS120输出最优先任务优先级获取要求,第一OS120从任务中获取最优先执行的最优先任务的优先级。然后,虚拟计算机切换通知部111向虚拟计算机控制部30输出虚拟计算机切换通知,让第一虚拟计算机10暂停,将处理移至虚拟计算机控制部30。另外,虚拟计算机切换通知包含有所获取的最优先任务的优先级、切换源(switching source)的虚拟计算机(此处是第一虚拟计算机10)的标识符和切换目标(switching destination)的虚拟计算机(此处是第二虚拟计算机20)的标识符。 [0037] 由此,通过第一OS120的任务调度,在轮到执行模拟任务110的时刻,进行从第一虚拟计算机10向第二虚拟计算机20的切换处理。另外,所谓最优先任务,是以除了执行状态的任务以外的接下来有可能调度的任务为对象。即,执行状态的模拟任务不会成为最优先任务。
[0038] 优先级设定请求部112在模拟任务110(第一虚拟计算机10)从暂停被恢复时,向第一0S120发送用于设定模拟任务110的优先级的优先级设定请求。接着,优先级设定请求部112在模拟任务110的优先级设定完成时,从第一OS120接收优先级设定完成通知,结 束模拟任务110的处理。随后,根据第一OS120的任务调度,开始接下来要执行的任务处理。在从第二虚拟计算机20向第一虚拟计算机10的切换发生时刻的第二虚拟计算机20的最优先任务的优先级,被设定为结束时的模拟任务110的优先级。
[0039] 第一OS120包括任务调度器(task scheduler)121、优先级获取部122以及优先级设定部123。
[0040] 任务调度器121调度第一OS120下属的任务的执行顺序。在调度对象的任务中包含有模拟任务110。而且,任务调度器121保持用于管理任务的任务管理表。 [0041] 图2是表示本发明的实施例1中的任务管理表的一例的图。图2所示的任务管理表是包含作为各任务的管理信息的任务ID、任务状态及任务优先级的例子。任务ID是可识别各任务的标识符,只要能够唯一确定任务即可。任务状态表示当前的任务的状态,有“执行状态”、“可执行状态”和“待机状态”这3种状态。“执行状态”表示任务正在执行中,多个任务不会同时为“执行状态”。“可执行状态”表示当其他任务的执行结束时任务可由任务调度器121执行。所谓“待机状态”,是指任务在满足任务量(semaphore)、事件或待机一定时间等条件之前自身停止的状态。
[0042] 任务优先级表示任务的优先级。另外,图2中是以数值表示任务优先级,数值越小,优先级越高。另外,任务优先级也可用数值以外的信息来表现。而且,任务优先级还可利用OS的服务,例如UNIX(注册商标)OS中的ps命令而从任务结构体中获取,并储存到任务管理表中。
[0043] 优先级获取部122从模拟任务110接收最优先任务优先级获取要求,参照上述的任务管理表,从自身所属的第一虚拟计算机10的可执行任务中获取优先级最高的最优先任务的优先级,并将获取的优先级返回模拟任务110。另外,最优先任务是从除了任务状态为“执行状态”的任务以外的任务中选择。因此,模拟任务110始终被排除在最优先任务之外。
[0044] 优先级设定部123从模拟任务110接收优先级设定请求,设定模拟任务110的优先级。优先级设定部123将模拟任务110的优先级设定为由第二虚拟计算机20的优先级获取部222获取的优先级。具体而言,优先级设定部123获取储存在虚拟计算机优先级存储部40中的第二虚拟计算机20的最优先任务的优先级,将上述任务管理表的模拟任务110的优先级更新为所获取的优先级。而且,优先级设定部123在模拟任务110的优先级设定完成时,向模拟任务110发送优先级设定完成通知。
[0045] 虚拟计算机切换通知部111在根据操作系统的任务调度执行了模拟任务110后,对虚拟计算机控制部30通知由优先级获取部122获取的优先级和将当前动作中的第一虚拟计 算机10切换为第二虚拟计算机20的切换指示。
[0046] 第二虚拟计算机20包括执行包含模拟任务210在内的1个以上任务的任务执行部200和第二OS220。包含模拟任务210在内的所有的任务分别被设定有优先级。第二OS220进行基于任务的优先级执行的任务的调度。
[0047] 任务执行部200根据预先对各任务设定的优先级来依序执行任务。而且,任务执行部200还执行模拟任务210,该模拟任务110用于执行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理。
[0048] 模拟任务210是反映第一虚拟计算机10的优先级的任务,包括虚拟计算机切换通知部211及优先级设定请求部212。虚拟计算机切换通知部211具有与上述虚拟计算机切换通知部111相同的功能。而且,优先级设定请求部212具有与上述优先级设定请求部112相同的功能。
[0049] 第二OS220包括任务调度器221、优先级获取部222以及优先级设定部223。任务调度器221具有与上述任务调度器121相同的功能。而且,优先级获取部222具有与上述优先级获取部122相同的功能。而且,优先级设定部223具有与上述优先级设定部123相同的功能。
[0050] 由此,通过第二OS220的任务调度,在轮到执行模拟任务210的时刻,进行从第二虚拟计算机20向第一虚拟计算机10的切换处理。而且,从第一虚拟计算机10向第二虚拟计算机20的切换发生时刻的第一虚拟计算机10的最优先任务的优先级被设定为结束时的模拟任务210的优先级。
[0051] 另外,模拟任务110、210是在第一及第二虚拟计算机10、20启动时生成。而且,生成时的模拟任务110、210的优先级被设定为最高的优先级。任务执行部100在第一及第二虚拟计算机10、20启动时生成模拟任务110、210,并将所生成的模拟任务110、210的优先级设定为最高优先级。由此,让虚拟计算机内的模拟任务110、210比其他任务更优先运行,从而可将切换目标的虚拟计算机的最优先任务的优先级设定为模拟任务的优先级。 [0052] 而且,优先级获取部122、222及优先级设定部123、223并非作为第一及第二OS110、210的内部功能,而作为模块形式的设备驱动器(device driver)或程序库(library)可以在以后追加。
[0053] 而且,在本实施例1中,虚拟计算机切换通知包含有任务的优先级、切换源的虚拟计算机的标识符以及切换目标的虚拟计算机的标识符,但在控制两台虚拟计算机的切换时并 不限于此。在控制两台虚拟计算机的切换时,虚拟计算机切换通知只包含切换源的虚拟计算机的标识符或切换目标的虚拟计算机的标识符中的任一个即可。
[0054] 虚拟计算机控制部30包括虚拟计算机切换部301及虚拟计算机优先级设定部302,用来控制多台虚拟计算机的切换。虚拟计算机控制部30接收由任务执行部100通知的优先级和切换指示,将当前动作中的第一虚拟计算机10切换为第二虚拟计算机20。而且,虚拟计算机控制部30还接收由任务执行部200通知的优先级和切换指示,将当前动作中的第二虚拟计算机20切换为第一虚拟计算机10。
[0055] 虚拟计算机切换部301从第一及第二虚拟计算机10、20接收虚拟计算机切换通知,通过进行虚拟计算机的执行上下文的退避和恢复,来切换虚拟计算机。虚拟计算机切换部301可以利用虚拟计算机切换通知来指定切换源的虚拟计算机和切换目标的虚拟计算机。虚拟计算机切换部301使切换源的虚拟计算机的执行上下文从CPU寄存器退避至执行上下文存储部50,并使切换目标的虚拟计算机的执行上下文从执行上下文存储部50恢复至CPU寄存器。进一步,虚拟计算机切换部301指示虚拟计算机优先级设定部302进行切换源的虚拟计算机的优先级的设定。另外,虚拟计算机切换部301保持有将虚拟计算机的标识符和与标识符对应的对象虚拟计算机编成组的虚拟计算机标识符表。
[0056] 图3是表示本发明的实施例1中的虚拟计算机标识符表的一例的图。在图3所示的虚拟计算机标识符表中,将标识符与虚拟计算机对应起来加以存储。如图3所示,第一虚拟计算机10与标识符“A”对应,第二虚拟计算机20与标识符“B”对应。
[0057] 虚拟计算机优先级设定部302接收来自虚拟计算机切换部301的指示,并将包含在虚拟计算机切换通知中的优先级作为切换源的虚拟计算机的优先级而储存至虚拟计算机优先级存储部40。
[0058] 虚拟计算机优先级存储部40存储在虚拟计算机的切换发生时刻的切换源的虚拟计算机的优先级。虚拟计算机优先级存储部40中存储的虚拟计算机的优先级是切换源的虚拟计算机的任务中最优先执行的最优先任务的优先级。另外,所谓最优先任务,是以除了执行状态的任务以外的接下来有可能被调度的任务为对象。即,模拟任务不会成为最优先任务。
[0059] 执行上下文存储部50存储切换源的虚拟计算机的执行上下文。虚拟计算机切换部301通过将切换源的虚拟计算机的执行上下文从CPU寄存器存储至执行上下文存储部50,而使切换源的虚拟计算机的执行上下文退避。而且,虚拟计算机切换部301通过将切换目标的虚拟计算机的执行上下文从执行上下文存储部50读取至CPU寄存器,而使切换目标的虚拟计算机的执行上下文恢复。另外,执行上下文存储部50为每台虚拟计算机存储执行上下文。
[0060] 虚拟计算机切换部301在接收到由任务执行部100通知的优先级和切换指示时,使与切换前的第一虚拟计算机10对应的执行上下文退避至执行上下文存储部50,将由任务执行部100通知的优先级存储于虚拟计算机优先级存储部40中,并使与切换后的第二虚拟计算机20对应的执行上下文从执行上下文存储部50恢复。
[0061] 切换后的第二虚拟计算机20中所具备的任务执行部200再次执行被暂停的模拟任务210。切换后的第二虚拟计算机20中所具备的优先级设定部223获取存储在虚拟计算机优先级存储部40中的切换前的第一虚拟计算机10的优先级,并将所获取的优先级设定为模拟任务210的优先级。
[0062] 根据以上结构,本实施例1中的信息处理装置在其他的虚拟计算机的优先级高于执行中的虚拟计算机的时刻,使虚拟计算机控制部30运行,进行虚拟计算机的切换处理。即,没有必要在OS每次执行任务调度时,都要暂停执行中的虚拟计算机来判断是否进行切换。在使执行中的虚拟计算机暂停时,始终会发生向其他虚拟计算机的切换,从而可减少立即恢复为暂停之前动作的相同虚拟计算机的处理。由此,可削减因不需要的执行上下文的暂停和恢复造成的开销。
[0063] 而且,虽然在不仅为退避和恢复执行上下文,还为进一步提高安全性而进行存储器空间的切换时,因虚拟计算机的切换造成的开销会增大,但在本实施例1中,也可减少因该存储器空间的切换造成的开销。
[0064] 而且,本实施例1在信息处理装置安装重视实时性的虚拟计算机和不重视实时性的虚拟计算机的情况下特别有效。例如,要求实时性的处理作为第一虚拟计算机10的任务而安装,作为第一OS120使用实时性优异的RTOS(实时OS)。同时,与不要求实时性的用户接口相关的处理作为第二虚拟计算机20的任务而安装,作为第二OS220使用丰富地提供各种图形处理功能的OS。
[0065] 在以往的方法中,判断是否暂停重视实时性的虚拟计算机来进行切换的结果,使处理再次返回重视实时性的虚拟计算机的情况较多,从而发生多余的执行上下文的退避和恢复。然而,本实施例1的信息处理装置可削减因多余的执行上下文的暂停和恢复造成的开销,可同时实现实时性能和使用丰富的图形处理功能的优异的用户接口。 [0066] 另外,第一OS120与第二OS220未必必须是不同性能的OS,第一OS120与第二OS220也可使用相同性能的OS。
[0067] 另外,例如从第一虚拟计算机10切换为第二虚拟计算机20时,虚拟计算机控制部30通过将动作的第一虚拟计算机10的IP(指令指针(instruction Pointer))、栈指针(stackpointer)、通用寄存器、基址指针(base pointer)或旗标(flag)等执行上下文保存为供第一虚拟计算机10所用,让执行上下文从CPU寄存器退避。而且,虚拟计算机控制部30将第二虚拟计算机20所用而加以保存的执行上下文恢复至CPU寄存器。由此,虚拟计算机控制部30实现第一及第二虚拟计算机10、20的切换。
[0068] 在本实施例1中,信息处理装置相当于虚拟计算机控制装置的一例,第一虚拟计算机10及第二虚拟计算机20相当于多台虚拟计算机的一例,虚拟计算机控制部30相当于虚拟计算机控制部的一例,任务执行部100、200相当于任务执行部的一例,优先级获取部122相当于优先级获取部的一例,优先级设定部123相当于优先级设定部的一例,执行上下文存储部50相当于执行上下文存储部的一例,虚拟计算机优先级存储部40相当于优先级存储部的一例,模拟任务110、210相当于切换任务的一例。
[0069] 图4至图6是表示本发明的实施例1中的信息处理装置的处理流程的流程图。此处表示图1中的从第一虚拟计算机10切换为第二虚拟计算机20的切换动作的一例。而且,图4是表示本发明的实施例1中的第一虚拟计算机10的切换处理的一例的流程图,图5是表示本发明的实施例1中的虚拟计算机控制部30的切换处理的一例的流程图,图6是表示本发明的实施例1中的第二虚拟计算机20的切换处理的一例的流程图。
[0070] 首先,在图4中,CPU1执行第一虚拟计算机10。在第一虚拟计算机10的执行中,第一OS120的任务调度器121基于任务管理表中的任务优先级进行任务调度。接着,任务调度器121选择模拟任务110作为接下来要执行的任务,使任务管理表中的模拟任务的任务状态成为执行状态。任务调度器121指示任务执行部100执行模拟任务110。任务执行部100根据来自任务调度器121的指示执行模拟任务110。由此开始模拟任务110的处理(步骤S1)。
[0071] 接着,模拟任务110的虚拟计算机切换通知部111向第一OS120发送最优先任务优先级获取要求(步骤S2)。
[0072] 接着,第一OS120的优先级获取部122接收由模拟任务110的虚拟计算机切换通知部111发送的最优先任务优先级获取要求(步骤S3)。然后,优先级获取部122参照任务管理表,获取优先级最高的任务的优先级,即,获取任务执行部100在模拟任务110之后接着要执行的任务的优先级(最优先任务优先级)(步骤S4)。
[0073] 接着,优先级获取部122将所获取的最优先任务优先级通知给模拟任务110(步骤S5)。 例如,在任务调度器121具有图2所示的任务管理表时,优先级获取部122将任务状态为可执行状态的任务中优先级最高的第三任务的优先级发送给模拟任务110。 [0074] 接着,模拟任务110的虚拟计算机切换通知部111接收由第一OS120的优先级获取部122发送的最优先任务优先级(步骤S6)。然后,虚拟计算机切换通知部111用接收到的最优先任务优先级作成虚拟计算机切换通知,并将作成的虚拟计算机切换通知发送给虚拟计算机控制部30(步骤S7)。至此,处理从模拟任务110移至虚拟计算机控制部30。例如,虚拟计算机切换通知部111使用软件中断。CPU1在从中断控制器2接收到切换中断的发生通知后检测到软件中断时,跳(移)至例外矢量(exception vector)。作为该跳跃目的地的例外矢量,被设定在虚拟计算机控制部30中。由此,在虚拟计算机切换通知发生时,可使虚拟计算机控制部30动作。
[0075] 接着,在图5中,虚拟计算机控制部30的虚拟计算机切换部301接收由虚拟计算机切换通知部111发送的虚拟计算机切换通知(步骤S11)。然后,虚拟计算机切换部301使切换源的第一虚拟计算机10的执行上下文从CPU寄存器退避至执行上下文存储部50(步骤S12)。
[0076] 接着,虚拟计算机切换部301指示虚拟计算机优先级设定部302设定切换源的第一虚拟计算机10的优先级(步骤S13)。
[0077] 接着,虚拟计算机优先级设定部302接收来自虚拟计算机切换部301的指示,将包含在虚拟计算机切换通知中的优先级(最优先任务优先级)作为切换源的虚拟计算机(第一虚拟计算机10)的优先级而存储至虚拟计算机优先级存储部40中(步骤S14)。另外,要设定的优先级被包含在虚拟计算机切换通知中,但本发明并不特别限定于此,也可获取软件中断的自变量或共有存储器上预先决定的区域的数据作为优先级。
[0078] 接着,虚拟计算机切换部301使切换目标的第二虚拟计算机20的执行上下文从执行上下文存储部50恢复至CPU寄存器(步骤S15)。
[0079] 通过虚拟计算机控制部30,第二虚拟计算机20的执行上下文被恢复,从而暂停的第二虚拟计算机20恢复。由于第二虚拟计算机20是在模拟任务210的处理中途暂停,所以从模拟任务210的暂停部位再次开始处理。
[0080] 接着,在图6中,模拟任务210的优先级设定请求部212向第二OS220发送优先级设定请求(步骤S21)。
[0081] 接着,第二OS220的优先级设定部223接收由模拟任务210的优先级设定请求部212发送的优先级设定请求(步骤S22)。优先级设定部223获取虚拟计算机优先级存储部40 中储存的第一虚拟计算机10的最优先任务优先级(步骤S23)。然后,优先级设定部
223将任务管理表的模拟任务210的任务优先级更新(设定)为所获取的最优先任务优先级(步骤S24)。然后,优先级设定部223向模拟任务210发送优先级设定完成通知(步骤S25)。
[0082] 接着,模拟任务210的优先级设定请求部212接收由第二OS220的优先级设定部223发送的优先级设定完成通知(步骤S26)。然后,优先级设定请求部212结束模拟任务
210的执行(步骤S27)。由此,第二OS220的任务调度器221进行第二虚拟计算机20中的任务调度,确定在执行结束的模拟任务210之后接下来要执行的任务。
[0083] 根据以上所述,本实施例1中的信息处理装置生成模拟表示作为切换对象的其他虚拟计算机的模拟任务,并将该模拟任务的优先级设定为作为切换对象的其他虚拟计算机的优先级最高的任务的优先级。OS的任务调度器在其他虚拟计算机的优先级高于执行中的虚拟计算机的时刻,使模拟任务成为执行状态,任务执行部执行模拟任务。由此,虚拟计算机控制部30运行以进行切换处理。即,没有必要在OS每次执行任务调度时,都要暂停执行中的虚拟计算机来判断是否进行切换。在使执行中的虚拟计算机暂停时,始终会发生向其他虚拟计算机的切换,从而可减少立即恢复为暂停之前动作的相同虚拟计算机的处理。即,可削减因不需要的执行上下文的暂停和恢复造成的开销。
[0084] 本实施例1中,在从第一虚拟计算机10切换为第二虚拟计算机20时,将第一虚拟计算机10中的最优先任务优先级设定为第二虚拟计算机20的模拟任务的优先级,但也可在中途变更第二虚拟计算机20的模拟任务的优先级。
[0085] 例如,在将第一虚拟计算机10所具有的第一OS120设为RTOS,将第二虚拟计算机20所具有的第二OS220设为LinuxOS时,在通过RTOS下载了数据后,由LinuxOS对该数据进行编码及再生处理。这样,在将第一虚拟计算机10中已处理的数据在适合于该数据处理的第二虚拟计算机20进行处理时,必须在第一虚拟计算机10中进行处理之后,将第一虚拟计算机10切换为第二虚拟计算机20。
[0086] 此时,在图5的步骤S13中,当指示虚拟计算机优先级设定部302进行切换源的第一虚拟计算机10的优先级的设定时,虚拟计算机切换部301变更通知给虚拟计算机优先级设定部302的优先级,使其低于第一虚拟计算机10的任务管理表中储存的模拟任务的优先级。接着,虚拟计算机优先级设定部302接收来自虚拟计算机切换部301的指示,并将变更后的优先级作为切换源的虚拟计算机(第一虚拟计算机10)的优先级而储存到虚拟计算机优先级存储部40中。
[0087] 变更后的优先级作为第二虚拟计算机20的模拟任务的优先级而被设定。由于该变更 后的优先级低于第一虚拟计算机10的模拟任务的优先级,所以可使作为切换目标的第二虚拟计算机20优先动作。
[0088] (实施例2)
[0089] 图7是表示本发明的实施例2中的信息处理装置结构的框图。另外,在图7所示的实施例2所涉及的信息处理装置中,对与图1所示的实施例1的信息处理装置相同的结构标注了相同的符号,并省略详细说明。
[0090] 图7所示的信息处理装置与实施例1同样,包括CPU(中央运算装置)1、中断控制器2、外部设备3及存储器4。
[0091] 存储器4包括第一虚拟计算机11、第二虚拟计算机21、虚拟计算机控制部300、虚拟计算机优先级存储部400及执行上下文存储部50。
[0092] 第一虚拟计算机11包括执行包含模拟任务110在内的1个以上任务的任务执行部100和第一OS150。包含模拟任务110在内的所有的任务分别设定有优先级。第一OS150进行基于任务的优先级来执行的任务的调度。而且,模拟任务110是反映第二虚拟计算机21的优先级的任务,包括虚拟计算机切换通知部111及优先级设定请求部112。该模拟任务110与实施例1中说明的结构相同。
[0093] 第一OS150包括任务调度器121、优先级获取部122、优先级设定部123以及中断处理部130。除了中断处理部130以外,与实施例1中说明的结构相同。此处,只对不同的构成要素即中断处理部130进行详细说明。
[0094] 中断处理部130包括1个以上的中断处理程序(interruption handler)140。中断处理程序140表示中断后要执行的处理,并分别设定有优先级。而且,当中断发生时,第一OS150的中断处理部130接收中断控制器2所通知的中断通知,执行与中断因素相应的中断处理程序140。
[0095] 另外,实施例2中的任务调度器121存储用于管理任务及中断处理程序的任务管理表。任务管理表具有各任务的管理信息和各中断处理程序的管理信息。具体而言,任务管理表除了有任务ID、任务状态及任务优先级以外,还有用于识别中断处理程序的中断处理程序ID、表示中断处理程序的状态的中断处理程序状态以及表示中断处理程序的优先级的中断处理程序优先级。
[0096] 第二虚拟计算机21包括执行包含模拟任务210在内的1个以上任务的任务执行部200和第二OS250。包含模拟任务210在内的所有的任务分别设定有优先级。第二OS250进 行基于任务的优先级执行的任务的调度。而且,模拟任务210是反映第一虚拟计算机11的优先级的任务,包括虚拟计算机切换通知部211及优先级设定请求部212。该模拟任务210与实施例1中说明的结构相同。
[0097] 第二OS250包括任务调度器221、优先级获取部222、优先级设定部223以及中断处理部230。除了中断处理部230以外,与实施例1中说明的结构相同。而且,中断处理部230具有与上述的中断处理部130相同的功能。
[0098] 虚拟计算机控制部300包括虚拟计算机切换部301、虚拟计算机优先级设定部302、中断接收部303以及中断优先级储存判断部304。虚拟计算机控制部300除了控制基于任务调度的虚拟计算机的切换以外,还控制基于中断发生的虚拟计算机的切换。 [0099] 中断接收部303接收用于通知对多台虚拟计算机的中断的中断通知,利用包含在中断通知中的中断因素,从多台虚拟计算机中判断中断对象的虚拟计算机。中断接收部303通过CPU1从中断控制器2接收通知中断发生的中断通知。中断接收部303基于包含在接收到的中断通知中的中断因素,判断中断对象的虚拟计算机(第一虚拟计算机11或第二虚拟计算机21),并进行对中断对象的虚拟计算机(第一虚拟计算机11或第二虚拟计算机21)的中断通知设定。另外,中断接收部303保持有将中断因素与中断对象的虚拟计算机编成组的中断表。中断接收部303参照该中断表判断中断对象的虚拟计算机。
[0100] 图8是表示本发明的实施例2中的中断表的一例的图。在图8所示的中断表中,第一虚拟计算机11作为中断对象的虚拟计算机而与中断因素“A”、“B”及“C”相对应,第二虚拟计算机21作为中断对象的虚拟计算机而与中断因素“D”相对应。另外,如图8所示,在本实施例2中,是将中断因素与中断对象的虚拟计算机以表格格式对应起来进行存储,但本发明并不特别限定于此,中断因素与中断对象的虚拟计算机也可以以虚拟计算机控制部能够唯一地确定中断对象的虚拟计算机的数据格式、例如函数或链接格式等加以存储。 [0101] 中断优先级储存判断部304判断是否将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级。中断优先级储存判断部304在中断发生的时候,判断动作中的虚拟计算机(第一虚拟计算机11或第二虚拟计算机21)与中断对象的虚拟计算机(第一虚拟计算机11或第二虚拟计算机21)是否一致。如果当前动作中的虚拟计算机与中断对象的虚拟计算机并不一致,则中断优先级储存判断部304指示虚拟计算机优先级设定部302将与发生的中断对应的优先级储存至虚拟计算机优先级存储部400中。
[0102] 并且,中断优先级储存判断部304判断由中断接收部303判断的中断对象的虚拟计算机是否与中断前动作的虚拟计算机相同。如果被判断为中断对象的虚拟计算机与中断之前 动作的虚拟计算机并不相同,则虚拟计算机优先级设定部302将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级。
[0103] 虚拟计算机优先级存储部400除了存储在虚拟计算机的切换发生时刻存储的切换源的虚拟计算机的优先级以外,还储存中断发生的时刻所发生的中断的优先级。虚拟计算机的优先级是该虚拟计算机的任务中最优先执行的最优先任务的优先级。另外,所谓最优先任务,是以除了执行状态的任务以外的接下来有可能被调度的任务为对象。即,模拟任务不会成为最优先任务。
[0104] 根据以上的结构,在本实施例2中的信息处理装置中,在其他虚拟计算机的优先级高于执行中的虚拟计算机的时刻,虚拟计算机控制部30运行,进行虚拟计算机的切换处理。而且,在中断发生时,虚拟计算机控制部30动作,当此中断为并非执行中的其他虚拟计算机的中断时,将中断的优先级作为虚拟计算机优先级而储存至虚拟计算机优先级存储部400中。由此,能够实现与中断和任务的优先级相符的虚拟计算机的切换。即,没有必要在OS每次执行任务调度时,都要暂停执行中的虚拟计算机来判断是否进行切换处理。在使执行中的虚拟计算机暂停时,始终会发生向其他虚拟计算机的切换,从而可减少立即恢复为暂停之前动作的相同虚拟计算机的处理。由此,可削减因不需要的执行上下文的暂停和恢复造成的开销。
[0105] 在本实施例2中,信息处理装置相当于虚拟计算机控制装置的一例,第一虚拟计算机11及第二虚拟计算机21相当于多台虚拟计算机的一例,虚拟计算机控制部300相当于虚拟计算机控制部的一例,虚拟计算机优先级设定部302相当于虚拟计算机优先级设定部的一例,中断接收部303相当于中断接收部的一例,中断优先级储存判断部304相当于中断优先级储存判断部的一例,虚拟计算机优先级存储部400相当于优先级存储部的一例。 [0106] 图9是表示本发明的实施例2中的虚拟计算机控制部的中断处理的一例的流程图。图9中表示了中断发生时的虚拟计算机控制部300的动作的一例。
[0107] 当发生基于外部设备3的中断时,中断控制器2对CPU1输出通知中断发生的中断通知。由此开始中断处理。例如,CPU1在从中断控制器2接收到中断发生通知后检测到中断时,跳(移)至中断矢量。作为该跳跃目标的中断矢量被设定在虚拟计算机控制部300中。由此,在中断发生时,可使虚拟计算机控制部300动作。
[0108] 首先,虚拟计算机控制部300的中断接收部303从中断控制器2接收中断通知(步骤S31)。当接收到中断通知时,中断接收部303向虚拟计算机切换部301指示执行上下文的退避。
[0109] 接着,虚拟计算机切换部301使动作中的虚拟计算机的执行上下文从CPU寄存器退避至执行上下文存储部50,并向中断接收部303通知执行上下文的退避完成(步骤S32)。
[0110] 接着,中断接收部303使用包含在接收到的中断通知中的中断因素,判断中断对象的虚拟计算机(第一虚拟计算机11或第二虚拟计算机21),进行对中断对象的虚拟计算机的中断通知设定,并向中断优先级储存判断部304通知中断对象的虚拟计算机的标识符(步骤S33)。
[0111] 接着,中断优先级储存判断部304使用从中断接收部303通知的中断对象的虚拟计算机的标识符,判断中断对象的虚拟计算机是否与中断发生前动作的虚拟计算机相同(步骤S34)。
[0112] 如果被判断为中断对象的虚拟计算机与中断发生之前动作的虚拟计算机不同(在步骤S34中为“否”),则中断优先级储存判断部304指示虚拟计算机优先级设定部302将与所发生的中断对应的优先级储存至虚拟计算机优先级存储部400中(步骤S35)。接着,虚拟计算机优先级设定部302接收来自中断优先级储存判断部304的指示,将与所发生的中断对应的优先级储存到虚拟计算机优先级存储部400中(步骤S36)。
[0113] 另外,中断优先级储存判断部304为每台虚拟计算机保持各中断处理程序的优先级作为优先级表。中断优先级储存判断部304参照优先级表,向虚拟计算机优先级设定部302指示设定的优先级的值。
[0114] 图10是表示本发明的实施例2中的优先级表的一例的图。中断优先级储存判断部304具有第一虚拟计算机用优先级表T1和第二虚拟计算机用优先级表T2。第一虚拟计算机用优先级表T1将第一虚拟计算机11的中断处理部130所执行的第一至第三中断处理程序与预先为第一至第三中断处理程序设定的优先级相对应。第二虚拟计算机用优先级表T2将第二虚拟计算机21的中断处理部230所执行的第四至第六中断处理程序与预先为第四至第六中断处理程序设定的优先级相对应。
[0115] 如果被判断为中断对象的虚拟计算机与中断发生前动作的虚拟计算机相同(在步骤S34为“是”),或者在被判断为中断对象的虚拟计算机与中断发生之前动作的虚拟计算机不同之后,将与中断对应的优先级储存至虚拟计算机优先级存储部400中,则中断接收部303指示虚拟计算机切换部301恢复在步骤S32中退避的执行上下文。虚拟计算机切换部301使暂停执行的虚拟计算机的执行上下文从执行上下文存储部50恢复至CPU寄存器,完成中断处理(步骤S37)。
[0116] 另外,在步骤S36中,虚拟计算机优先级设定部302也可以将与所发生的中断对应的优先级和已被存储在虚拟计算机优先级存储部400中的最优先任务的优先级进行比较,仅在与所发生的中断对应的优先级高于所存储的最优先任务的优先级时才更新虚拟计算机优先级存储部400。
[0117] 即,虚拟计算机优先级设定部302将与中断因素相对应的优先级和存储在虚拟计算机优先级存储部400中的优先级进行比较,当与中断因素相对应的优先级高于存储在虚拟计算机优先级存储部400中的优先级高时,将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级。
[0118] 而且,在步骤S36中,虚拟计算机优先级设定部302也可以将与所发生的中断对应的优先级和规定的阈值进行比较,仅在与所发生的中断对应的优先级高于规定的阈值时才更新虚拟计算机优先级存储部400。
[0119] 接下来,对本实施例2中的中断处理后的动作进行说明。另外,对在第一虚拟计算机11的动作中发生中断处理的情况进行说明。
[0120] 如果中断对象的虚拟计算机为第一虚拟计算机11,在步骤S37恢复了执行上下文后,中断处理部130执行与中断对应的中断处理程序。并且,当中断处理程序的执行结束时,任务调度器121根据优先级来确定应执行的第一虚拟计算机11的任务。
[0121] 另一方面,如果中断对象的虚拟计算机为第二虚拟计算机21,在步骤S37恢复了执行上下文后,任务执行部100根据优先级依序执行第一虚拟计算机11的任务。并且,在执行模拟任务110的时刻,开始图4至图6所示的切换处理。在切换处理中,执行图4至图6所示的步骤S1至S22的处理。另外,在步骤S14中,虚拟计算机优先级存储部400将包含在虚拟计算机切换通知中的优先级与已储存的与中断对应的优先级一起进行储存。 [0122] 在步骤S23中,优先级设定部223获取储存在虚拟计算机优先级存储部400中的第一虚拟计算机11的最优先任务优先级和与中断对应的优先级。接下来,在步骤S24中,优先级设定部223将任务管理表的模拟任务210的任务优先级更新为所获取的最优先任务优先级,并将任务管理表的中断处理程序的任务优先级更新为所获取的与中断对应的优先级。随后,执行步骤S25至S27的处理,结束模拟任务210的执行。
[0123] 当模拟任务210的执行结束时,任务调度器221根据优先级来确定应执行的第二虚拟计算机21的任务。并且,在任务管理表中设定的中断处理程序的执行时刻,中断处理部230执行与中断对应的中断处理程序。当中断处理程序的执行结束时,任务调度器221根据优先级来确定应执行的第二虚拟计算机21的任务。
[0124] 根据以上所述,本实施例2中的信息处理装置生成模拟表示作为切换对象的其他虚拟计算机的模拟任务,并将该模拟任务的优先级设定为作为切换对象的其他虚拟计算机的优先级最高的任务的优先级。OS的任务调度器在其他虚拟计算机的优先级高于执行中的虚拟计算机的时刻,使模拟任务成为执行状态,任务执行部执行模拟任务。由此,虚拟计算机控制部300运行,以进行切换处理。即,没有必要在OS每次执行任务调度时,都要暂停执行中的虚拟计算机来判断是否进行切换处理。在使执行中的虚拟计算机暂停时,始终会发生向其他虚拟计算机的切换,从而可减少立即恢复为暂停之前动作的相同虚拟计算机的处理。即,可削减因不需要的执行上下文的暂停和恢复造成的开销。
[0125] 进一步,在中断发生时,如果是执行中的虚拟计算机的中断,则对执行中的虚拟计算机的OS进行中断通知,而如果是对并非执行中的其他虚拟计算机的中断,则将中断的优先级设定为虚拟计算机的优先级,使中断前的虚拟计算机动作。由此,能够实现与中断的优先级和任务的优先级相符的虚拟计算机的切换。即,没有必要在OS每次执行任务调度时,都要暂停执行中的虚拟计算机来判断是否进行切换。在使执行中的虚拟计算机暂停时,始终会发生向其他虚拟计算机的切换,从而可减少立即恢复为暂停之前动作的相同虚拟计算机的处理。由此,可削减因不需要的执行上下文的暂停和恢复造成的开销。 [0126] 另外,在实施例1及2中对虚拟计算机为两台的情况进行了说明,但本发明并不特别限定于此,也可设置3台以上的虚拟计算机。
[0127] (实施例3)
[0128] 接下来,对本发明的实施例3所涉及的信息处理装置进行说明。本实施例3中,在发生病毒故障或OS故障时,虚拟计算机通过将规定的优先级通知给虚拟计算机控制部,恢复到正常动作的状态。
[0129] 另外,由于实施例3所涉及的信息处理装置的结构与图1所示的实施例1的信息处理装置大致相同,所以只对不同结构进行说明。实施例3与实施例1,执行上下文存储部50的结构不同。
[0130] 图11是表示本发明的实施例3中的执行上下文存储部的结构的图。
[0131] 执行上下文存储部50为每台虚拟计算机存储由虚拟计算机控制部30退避的执行上下文。执行上下文存储部50对应虚拟计算机的台数而具备第一执行上下文存储部50-1至第N执行上下文存储部50-N。另外,图11所示的是信息处理装置包括三台以上虚拟计算机的情况,但本发明并不特别限定于此,信息处理装置也可像图1所示那样包括两台虚拟计算机。
[0132] 第一执行上下文存储部50-1存储第一虚拟计算机的执行上下文,第二执行上下文存储部50-2存储第二虚拟计算机的执行上下文,第N执行上下文存储部50-N存储第N虚拟计算机的执行上下文。
[0133] 在实施例1中,执行上下文存储部50为每台虚拟计算机只存储1个执行上下文,每当执行上下文被退避时执行上下文就被重写(overwrite)存储。而实施例3中,执行上下文存储部50每当执行上下文被退避时就将该执行上下文储存到不同的区域中,为每台虚拟计算机存储多个执行上下文。
[0134] 即,第一执行上下文存储部50-1存储第一执行上下文数据51-1至第M执行上下文数据51-M,第二执行上下文存储部50-2存储第-执行上下文数据52-1至第M执行上下文数据52-M,第N执行上下文存储部50-N存储第一执行上下文数据53-1至第M执行上下文数据53-M。
[0135] 另外,第一执行上下文存储部50-1至第N执行上下文存储部50-N所存储的执行上下文的个数M是根据存储器的容量等预先设定的。
[0136] 虚拟计算机切换部301使切换源的虚拟计算机的执行上下文从CPU寄存器退避执行上下文存储部50。此时,虚拟计算机切换部301将切换源的虚拟计算机的执行上下文存储至执行上下文存储部50的与切换源的虚拟计算机对应的区域(第一执行上下文存储部50-1至第N执行上下文存储部50-N中的任意之一)中。另外,首次将执行上下文作为第一执行上下文数据保存,下次将执行上下文作为第二执行上下文数据保存。并且,当保存的数据个数超过用于确保一台虚拟计算机的退避的个数M时,再次作为第一执行上下文数据保存。
[0137] 当检测到系统异常或系统故障时,无论优先级如何,都使模拟任务运行。另外,前提是当检测到系统异常或系统故障时模拟任务可运行。
[0138] 虚拟计算机切换部通知部111在当前动作中的虚拟计算机发生故障时,并非是向虚拟计算机优先级设定部302通知切换源的第一虚拟计算机10的最优先任务优先级,而是通知表示当前动作中的虚拟计算机发生故障的故障优先级。
[0139] 接着,虚拟计算机优先级设定部302接收来自虚拟计算机切换通知部111的指示,如果该指示中包含有表示发生系统异常或系统故障的故障优先级,则并不将故障优先级储存至虚拟计算机优先级存储部40中,而是将处理移至虚拟计算机切换部301。 [0140] 接着,虚拟计算机切换部301使进行了虚拟计算机切换通知的虚拟计算机的执行上下文从执行上下文存储部50恢复至CPU寄存器。在此,虚拟计算机切换部301从执行上下 文存储部50中存储的执行上下文中使最旧的执行上下文恢复至CPU寄存器。 [0141] 另外,在本实施例3中,是从执行上下文存储部50中存储的执行上下文中使最旧的执行上下文恢复至CPU寄存器,但本发明并不特别限定于此,可以使最新的执行上下文恢复至CPU寄存器,也可以使任意的执行上下文恢复至CPU寄存器。
[0142] 而且,在模拟任务无法执行的状态的情况下,虚拟计算机控制部30也可以通过看门狗定时器等检测出异常状态,并强制地使正常时的执行上下文恢复至CPU寄存器。 [0143] 通过以上结构,即使虚拟计算机发生病毒故障或OS故障,也可恢复到正常动作的状态。
[0144] (实施例4)
[0145] 在上述的实施例1中,是使一个CPU1作为第一虚拟计算机10及第二虚拟计算机20而发挥作用,但本发明并不特别限定于此,也可以使多个CPU作为各不相同的虚拟计算机发挥作用。
[0146] 图12是表示本发明的实施例4所涉及的信息处理装置结构的框图。另外,在图12所示的实施例4的信息处理装置中,对与图1所示的实施例1的信息处理装置相同的结构标注了相同的符号,并省略详细说明。
[0147] 图12所示的信息处理装置包括第一CPU5、第二CPU6、中断控制器2、外部设备3以及存储器4。在通常状态下,第一CPU5作为第一虚拟计算机10而工作,第二CPU6作为第二虚拟计算机20工作。然而,当第一CPU5及第二CPU6的其中之一的CPU的负载量增大,或变成空闲状态时,另一CPU将作为第一虚拟计算机10及第二虚拟计算机20而工作。此时,另一CPU执行实施例1中说明的切换处理。另外,通过第一CPU5和第二CPU6的其中之一而使虚拟计算机控制部30、虚拟计算机优先级存储部40以及执行上下文存储部50动作。 [0148] 根据以上的结构,即使在通过多个CPU使多台虚拟计算机动作的情况下,也可以切换多台虚拟计算机,从而能够削减因不需要的执行上下文的暂停和恢复造成的开销。 [0149] 另外,本实施例1至4中的信息处理装置的各构成要素典型的是作为软件而加以实现,但也可以用集成电路LSI来实现。各构成要素可以分别被集成为一个芯片(one chip),也可以将一部分或全部集成为一个芯片。在此,虽然为LSI,但根据集成度的不同有时也被称为IC、系统LSI、大规模(super)LSI、超大规模(ultra)LSI。而且,集成电路化的技术不仅限于LSI,也可以通过专用电路或通用处理器来实现。也可以利用在LSI制造后可编 程的FPGA(现场可编程门阵列(Field Programmable Gate Array))、或者可重新构成LSI内部的电路单元的连接或设定的可重构处理器(reconfigurable processor)。此外,如果随着半导体技术的进步或派生的其他技术而出现可替换LSI的集成电路化的技术,毋庸置疑也可以使用该技术来进行功能块的集成化。
[0150] 另外,上述的具体实施方式中主要包含了具有以下结构的发明。
[0151] 本发明所涉及的虚拟计算机控制装置包括:分别具有进行基于任务的优先级执行的任务调度的操作系统的多台虚拟计算机;以及控制所述多台虚拟计算机的切换的虚拟计算机控制部,所述多台虚拟计算机的每一台具有:执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务的任务执行部;从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级的优先级获取部;以及将所述切换任务的优先级设定为由所述其他虚拟计算机的所述优先级获取部获取的所述优先级的优先级设定部,其中,所述任务执行部在根据所述操作系统的任务调度来执行所述切换任务时,对所述虚拟计算机控制部通知由所述优先级获取部获取的所述优先级和将当前动作中的虚拟计算机切换为所述其他虚拟计算机的切换指示,所述虚拟计算机控制部接收由所述任务执行部通知的所述优先级和切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机。
[0152] 根据该结构,多台虚拟计算机分别具有进行基于任务的优先级执行的任务调度的操作系统,虚拟计算机控制部控制多台虚拟计算机的切换。任务执行部执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务,优先级获取部从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级,优先级设定部将切换任务的优先级设定为由其他虚拟计算机的优先级获取部获取的优先级。任务执行部在根据操作系统的任务调度执行切换任务时,对虚拟计算机控制部通知由优先级获取部获取的优先级和将当前动作中的虚拟计算机切换为其他虚拟计算机的切换指示。虚拟计算机控制部接收由任务执行部所通知的优先级和切换指示,将当前动作中的虚拟计算机切换为其他虚拟计算机。
[0153] 因此,由于切换任务的优先级被设定为其他虚拟计算机中的优先级最高的任务的优先级,切换任务仅在虚拟计算机被切换时才加以执行,因此可削减虚拟计算机的暂停和恢复的处理次数,从而可削减虚拟计算机的切换所需的开销。
[0154] 而且,在上述虚拟计算机控制装置中,优选的是,所述任务执行部在所述多台虚拟计算机的启动时生成所述切换任务,将所生成的所述切换任务的优先级设定为最高优先级。
[0155] 根据此结构,由于切换任务在多台虚拟计算机的启动时被生成,所生成的切换任务的优先级被设定为最高优先级,因此可在多台虚拟计算机的启动时首先执行切换任务,设定该切换任务的优先级。
[0156] 而且,在上述虚拟计算机控制装置中,优选的是,所述虚拟计算机控制部具备:接收用于通知对所述多台虚拟计算机的中断的中断通知,使用包含在所述中断通知中的中断因素,从所述多台虚拟计算机中判断中断对象的虚拟计算机的中断接收部;以及判断是否将与所述中断因素相对应的优先级设定为所述中断对象的虚拟计算机的优先级的中断优先级储存判断部。
[0157] 根据此结构,中断接收部接收用于通知对多台虚拟计算机的中断的中断通知,使用包含在中断通知中的中断因素,从多台虚拟计算机中判断中断对象的虚拟计算机。而且,中断优先级储存判断部判断是否将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级。
[0158] 因此,由于在发生中断时,可判断是否将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级,因此可以优先执行中断对象的虚拟计算机。
[0159] 而且,在上述虚拟计算机控制装置中,优选的是,所述中断优先级储存判断部判断由所述中断接收部判断的中断对象的虚拟计算机是否与中断前动作的虚拟计算机相同,所述虚拟计算机控制部还具备虚拟计算机优先级设定部,在判断出中断对象的虚拟计算机与中断前动作的虚拟计算机不同时,将与所述中断因素相对应的优先级设定为所述中断对象的虚拟计算机的优先级。
[0160] 根据此结构,由中断接收部判断的中断对象的虚拟计算机是否与中断前动作的虚拟计算机相同得以判断。并且,当判断出中断对象的虚拟计算机与中断前动作的虚拟计算机不同时,与中断因素相对应的优先级被设定为中断对象的虚拟计算机的优先级。 [0161] 因此,当中断对象的虚拟计算机与中断前动作的虚拟计算机不同时,可以优先执行与中断前动作的虚拟计算机不同的中断对象的其他虚拟计算机。
[0162] 而且,在上述虚拟计算机控制装置中,优选的是还包括存储由所述任务执行部通知的所述优先级的优先级存储部,其中所述虚拟计算机控制部还具备虚拟计算机优先级设定部,用来将与所述中断因素相对应的优先级和所述优先级存储部中存储的优先级进行比较,当与所述中断因素相对应的优先级高于所述优先级存储部中存储的优先级时,将与所述中断因素相对应的优先级设定为所述中断对象的虚拟计算机的优先级。
[0163] 根据此结构,在优先级存储部中存储有由任务执行部所通知的优先级。并且,与中断 因素相对应的优先级和优先级存储部中存储的优先级被加以比较,当与中断因素相对应的优先级高于优先级存储部中存储的优先级时,与中断因素相对应的优先级被设定为中断对象的虚拟计算机的优先级。
[0164] 因此,当与中断因素相对应的优先级高于存储在优先级存储部中的优先级时,将与中断因素相对应的优先级设定为中断对象的虚拟计算机的优先级,因此在发生中断时,未必需要执行中断,可优先执行优先级更高的任务。
[0165] 而且,在上述虚拟计算机控制装置中,优选的是还包括存储各虚拟计算机的执行上下文的执行上下文存储部,其中,所述虚拟计算机控制部使与切换前的虚拟计算机对应的执行上下文退避至所述执行上下文存储部,并使与切换后的虚拟计算机对应的执行上下文从所述执行上下文存储部恢复。
[0166] 根据此结构,执行上下文存储部中存储有各虚拟计算机的执行上下文。并且,与切换前的虚拟计算机对应的执行上下文被退避至执行上下文存储部,与切换后的虚拟计算机对应的执行上下文从执行上下文存储部予以恢复。
[0167] 因此,由于在虚拟计算机切换之前,与切换前的虚拟计算机对应的执行上下文被退避,所以可以从暂停时的状态开始执行切换任务。
[0168] 而且,在上述虚拟计算机控制装置中,优选的是还包括存储由所述任务执行部所通知的所述优先级的优先级存储部,其中,所述虚拟计算机控制部在接收到由所述任务执行部通知的所述优先级和切换指示时,使与切换前的虚拟计算机对应的执行上下文退避至所述执行上下文存储部,将由所述任务执行部通知的所述优先级存储至所述优先级存储部,并使与切换后的虚拟计算机对应的执行上下文从所述执行上下文存储部恢复,切换后的虚拟计算机中所具有的所述任务执行部再次执行被暂停的切换任务,切换后的虚拟计算机中所具有的所述优先级设定部获取所述优先级存储部中存储的切换前的虚拟计算机的所述优先级,并将所获取的所述优先级设定为切换任务的优先级。
[0169] 根据此结构,在优先级存储部中存储有由任务执行部所通知的优先级。并且,虚拟计算机控制部在接收到由任务执行部通知的优先级和切换指示时,使与切换前的虚拟计算机对应的执行上下文退避至执行上下文存储部,将由任务执行部通知的优先级存储至优先级存储部。随后,虚拟计算机控制部使与切换后的虚拟计算机对应的执行上下文从执行上下文存储部恢复。切换后的虚拟计算机中所具有的任务执行部再次执行被暂停的切换任务,切换后的虚拟计算机中所具有的优先级设定部获取优先级存储部中存储的切换前的虚拟计算机的优先级,并将所获取的优先级设定为切换任务的优先级。
[0170] 因此,由于在与切换后的虚拟计算机对应的执行上下文从执行上下文存储部恢复之后,切换后的虚拟计算机的被暂停的切换任务被再次执行,并且切换前的虚拟计算机的优先级被设定为切换任务的优先级,因此可以将切换后的虚拟计算机的切换任务的优先级设定为切换前的虚拟计算机的优先级最高的任务的优先级。
[0171] 而且,在上述虚拟计算机控制装置中,优选的是,所述执行上下文存储部为每台虚拟计算机存储被所述虚拟计算机控制部退避的执行上下文,所述任务执行部在当前动作中的虚拟计算机发生故障时,对所述虚拟计算机控制部通知表示当前动作中的虚拟计算机已发生故障的故障优先级,所述虚拟计算机控制部在接收到由所述任务执行部通知的所述故障优先级时,使所述执行上下文存储部中存储的最旧的执行上下文恢复。
[0172] 根据此结构,在执行上下文存储部中,为每台虚拟计算机存储有被虚拟计算机控制部退避的执行上下文。并且,任务执行部在当前动作中的虚拟计算机发生故障时,对虚拟计算机控制部通知表示当前动作中的虚拟计算机已发生故障的故障优先级。虚拟计算机控制部在接收到由任务执行部通知的故障优先级时,使执行上下文存储部中存储的最旧的执行上下文恢复。
[0173] 因此,由于即使在当前动作中的虚拟计算机发生故障的情况下,执行上下文存储部中存储的最旧的执行上下文恢复也能被恢复,所以可以使虚拟计算机返回故障发生前的状态。
[0174] 本发明所涉及的虚拟计算机控制方法,用于控制分别具有进行基于任务的优先级执行的任务调度的操作系统的多台虚拟计算机的切换,其包括:执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务的任务执行步骤;从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级的优先级获取步骤;将所述切换任务的优先级设定为在所述其他虚拟计算机的所述优先级获取步骤中获取的所述优先级的优先级设定步骤;当根据所述操作系统的任务调度来执行所述切换任务时,通知在所述优先级获取步骤中获取的所述优先级和将当前动作中的虚拟计算机切换为所述其他虚拟计算机的切换指示的通知步骤;以及接收在所述通知步骤通知的所述优先级和切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机的切换步骤。
[0175] 根据此结构,在任务执行步骤执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务。在优先级获取步骤从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级。在优先级设定步骤将切换任务的优先级设定为在其他虚拟计算机的优先级获取步骤中获取的优先级。在通知步骤中当根据操作系统的任务调度来执行切换任务时,通知在优先级获取步骤中获取的优先级和将当前动作中的虚拟计算机切换为其他虚拟计算机的切换指示。在切换步骤接收在任务执行步骤中通知的优先级和切换指示,将当前动作中的虚拟计算机切换为其他虚拟计算机。
[0176] 因此,由于切换任务的优先级被设定为其他虚拟计算机的优先级最高的任务的优先级,切换任务仅在虚拟计算机被切换时才得以执行,因此可削减虚拟计算机的暂停和恢复的处理次数,从而可削减虚拟计算机的切换所需的开销。
[0177] 本发明所涉及的虚拟计算机控制程序,使电脑作为分别具有进行基于任务的优先级执行的任务调度的操作系统的多台虚拟计算机和控制所述多台虚拟计算机的切换的虚拟计算机控制部而发挥作用,所述多台虚拟计算机的每一台具有:执行用进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务的任务执行部;从当前动作中的虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级的优先级获取部;以及将所述切换任务的优先级设定为由所述其他虚拟计算机的所述优先级获取部获取的所述优先级的优先级设定部,其中,所述任务执行部在根据所述操作系统的任务调度来执行所述切换任务时,对所述虚拟计算机控制部通知由所述优先级获取部获取的所述优先级和将当前动作中的虚拟计算机切换为所述其他虚拟计算机的切换指示,所述虚拟计算机控制部接收由所述任务执行部通知的所述优先级和切换指示,将当前动作中的虚拟计算机切换为所述其他虚拟计算机。
[0178] 根据该结构,多台虚拟计算机分别具有进行基于任务的优先级执行的任务调度的操作系统,虚拟计算机控制部控制多台虚拟计算机的切换。任务执行部执行用于进行将当前动作中的虚拟计算机切换为作为切换对象的其他虚拟计算机的切换处理的切换任务,优先级获取部从本虚拟计算机自身的可执行的任务中获取优先级最高的任务的优先级,优先级设定部将切换任务的优先级设定为由其他虚拟计算机的优先级获取部获取的优先级。任务执行部在根据操作系统的任务调度来执行切换任务时,对虚拟计算机控制部通知由优先级获取部获取的优先级和将当前动作中的虚拟计算机切换为其他虚拟计算机的切换指示。虚拟计算机控制部接收由任务执行部所通知的优先级和切换指示,将当前动作中的虚拟计算机切换为其他虚拟计算机。
[0179] 因此,由于切换任务的优先级被设定为其他虚拟计算机中的优先级最高的任务的优先级,切换任务仅在虚拟计算机被切换时才得以执行,因此可削减虚拟计算机的暂停和恢复的处理次数,从而可削减虚拟计算机的切换所需的开销。
[0180] 另外,发明的实施方式的各项中的具体实施方式或实施例到底使本发明的技术内容明确,不应只被具体例限定而被狭义地解释,在本发明的精神和权利要求书的范围内可进行各种变更而加以实施。
[0181] 产业上的利用可能性
[0182] 本发明所涉及的虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序对于具有多台虚拟计算机的大型计算机及个人电脑等是有用的。而且,本发明所涉及的虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序在AV设备等家电设备、手机之类的通信设备、产业设备及乘用设备等用途中也极为有用。