具体实施方式
(至获得本发明的一实施方式的经过)
一般,在操作***和设备驱动器中设置有控制向处理器、设备等设备提供的电力的结构。操作***和设备驱动器根据设备的状况控制向设备的供电,实现***的省电化。作为一般的省电功能的一例,可列举如下功能:当设备在一定期间内未被使用或未动作时,停止向设备的供电或降低向设备提供的时钟信号的频率来降低向设备提供的电量。一般,操作***具备这种省电功能。操作***具备如下功能作为省电功能的一部分,即,在某处理器中不存在由***处理的任务的闲置(idle)状态以一定比例发生时,使该处理器的动作停止,并停止向该处理器提供电力。
另一方面,在使多个由操作***和在该操作***上动作的软件构成的虚拟计算机动作的虚拟计算机***中,某虚拟计算机的操作***无法直接获知其它虚拟计算机的设备的使用状况。也就是说,某虚拟计算机无法直接掌握其它虚拟计算机以何种程度使用哪个处理器。因而,在以往的虚拟计算机***中,存在无法使用操作***所具备的省电功能在适当的时机将处理器设为省电状态的问题。
为了避免这种问题,作为以往的有关虚拟计算机控制的技术,已知在背景技术中说明的专利文献1,但是在专利文献1的结构中,除了操作***所具有的省电功能外,还需要在虚拟计算机控制装置中设置省电功能。
在此,操作***所具备的省电功能根据各种条件进行复杂的省电控制。例如进行如下省电控制:在一定的期间统计采样在处理器中没有处理的情况,根据其结果停止向处理器的供电、或者降低向处理器提供的时钟信号的频率。
将这种复杂的操作***的省电功能移植到虚拟计算机控制装置的内部会导致开发成本增大,引起开发后的维修成本增大。
另外,一般,虚拟计算机***的省电功能作为操作***的功能而由操作***的开发厂商等在开源上(open-source)开发并发展。然而,在专利文献1的结构中,存在需要追随操 作***的省电功能的更新来保持虚拟计算机控制装置的省电功能的问题。
因此,本实施方式的虚拟计算机控制装置的目的在于在虚拟计算机控制装置的内部不保持复杂的省电功能,能够利用操作***的省电功能来实现虚拟计算机***整体的省电功能。下面,参照附图来详细说明本实施方式的虚拟计算机控制装置。
(本实施方式的虚拟计算机控制装置的说明)
图1是表示具备本发明的实施方式的虚拟计算机控制装置的虚拟计算机***的结构的图。该虚拟计算机***1000自身能够供用户使用,但也可以安装于各种设备。作为虚拟计算机***1000,代表性地列举PC(Personal Computer;个人计算机)等的通用计算机作为一例。但是,并不限定于此,作为虚拟计算机***1000,也可以采用PDA(Personal DigitalAssistance:个人数字助理)、便携电话、智能手机等便携通信终端。除此之外,作为虚拟计算机***1000,可以采用电视机,也可以采用硬盘记录器、DVD、蓝光盘等各种盘记录器以及各种盘播放器,还可以采用汽车导航***。
虚拟计算机***1000具备处理器1、存储装置2、通信装置34、输入装置40、显示装置45、计时电路51以及中断控制器55。这些装置通过总线50相互连接。另外,根据需要,可以将硬盘装置25和读取装置32连接于总线50。硬盘装置25、读取装置32、输入装置40以及显示装置45分别通过接口26、35、41、46连接于总线50。
作为处理器1,代表性地采用CPU(Central Processing Unit;中央运算处理装置)、媒体处理用或图形处理用的处理器以及DSP(Digital Signal Processor:数字信号处理器)等的运算处理装置。
处理器1可以由单一的处理器构成,也可以由多个处理器构成。作为一例,设虚拟计算机***1000具有多个处理器11、12、13、14。此外,在图1的例子中记载了四个处理器,但是处理器1的数目当然并不限于此。存储装置2具备ROM(Read Only Memory:只读存储器)21和RAM(Random Access Memory:随机访问存储器)22。ROM21存储规定处理器1的动作的计算机程序以及数据。计算机程序以及数据也能够存储在硬盘装置25中。处理器1根据需要将ROM21或硬盘装置25所保存的计算机程序以及数据写入RAM22,执行计算机程序所规定的处理。RAM22还作为临时存储伴随处理器1执行处理而产生的数据的介质而发挥作用。ROM21包括像闪存(Flash)ROM那样能够写入且即使切断电源也能够保持存储内容的非易失性存储器和存储介质。RAM22包括当切断电源时不保持存储内容的易失性存储器和存储介质。
硬盘装置25是向内置的未图示的硬盘写入及从该硬盘读出计算机程序或数据的装置。 读取装置32是读取记录在记录介质31(例如CD、DVD、存储卡等)中的计算机程序或数据的装置。通信装置34是通过电话线路、网络线、无线、Bluetooth(蓝牙:注册商标)、红外线通信等的通信线路33在外部与自身之间交换计算机程序或数据的装置。输入装置40是通过用户的操作输入数据、输入事件等的装置,例如是排列在PDA上的键盘、排列在便携电话上的输入按钮、触摸面板、可装卸的鼠标或键盘。显示装置45是将数据、图像等显示在画面上或通过声音将数据等输出的装置,例如是LCD(Liquid Crystal Display;液晶显示器)、有机EL(有机场致发光)、布劳恩管、扬声器。
计时电路51以一定的周期输出计时中断信号的装置。中断控制器55是将从计时电路51、输入装置40、处理器1、作为网络设备的通信装置34、硬盘装置25以及读取装置32等发送的中断请求信号中转给处理器1的装置。来自各装置的中断请求中附加有优先级。中断控制器55具有在从多个装置同时发生了中断的情况下根据优先级对这些请求进行调解的功能。
如上所述,虚拟计算机***1000构成为计算机。上述计算机程序既能够通过ROM21、硬盘装置25、未图示的软盘、CD-ROM等计算机可读取的记录介质31提供,也能够通过通信线路33等传输介质提供。例如,通过将读取装置32连接到虚拟计算机***1000能够读取记录在记录介质31(CD-ROM)中的计算机程序。另外,能够将读出的计算机程序保存在RAM22或硬盘装置25中。
在从作为程序记录介质的ROM21提供计算机程序的情况下,通过将该ROM21搭载于虚拟计算机***1000,处理器1能够执行按照上述计算机程序的处理。通过通信线路33等传输介质提供的计算机程序通过通信装置34来接收,并保存在例如RAM22或硬盘装置25中。传输介质不限于有线传输介质,也可以是无线传输介质。而且,传输介质不仅包括通信线路,还包括中继通信线路的中继装置、例如路由器。
通常,虚拟计算机控制装置的实体保存在存储装置2或硬盘装置25中,通过与处理器1相协作地执行来实现虚拟计算机控制装置整体。
在如上所述的结构中,虚拟计算机控制装置能够作为例如在虚拟计算机***1000上动作的程序来实现。例如在图1中,构成虚拟计算机控制装置的程序以及数据保存在存储装置2中,通过由处理器1进行处理而动作。此外,虚拟计算机控制装置还被称为虚拟计算机监视器、虚拟管理平台(hypervisor)。
图2是表示本发明的实施方式的虚拟计算机控制装置100的功能结构的一例的框图。在图2的例子中,虚拟计算机控制装置100控制两个虚拟计算机。其中一个是第一虚拟计算机110,另一个是第二虚拟计算机120。在图2所示的例子中,设第一OS(操作***)115在第一虚拟计算机110上运行,第二OS125在第二虚拟计算机120上运行。在此,第一OS115和第二OS125可以分别是不同种类的OS、种类相同而版本不同的OS、种类相同且版本也相同的OS的其中之一。在图2中,采用CPU0至CPU3作为图1所示的处理器11至14的一例。
另外,在图2所示的例子中,设第二虚拟计算机120的第二OS125具备省电控制部271。一般在OS中具备控制向设备提供的电力使耗电降低的结构。在一般的虚拟计算机***中,由于多个OS动作,因此有可能多个OS的省电功能工作。省电功能控制对CPU等的处理器以及各种设备的供电,因此在多个OS的省电功能工作的情况下,多个电力控制的请求会发生竞争。为了避免该情况,采用使一个虚拟计算机的OS进行省电控制的方法。
在本实施方式中,采用第一OS115不具备省电功能而让第二OS125进行省电控制的方式。作为使第二OS125进行省电控制的例子,除此之外,还可以采用使第一OS115所具备的省电功能无效的方法。
此外,在图2所示的虚拟计算机控制装置100中,中断保留信息221至虚拟计算机执行状态管理信息224包含在虚拟计算机控制程序中,加载在RAM等的存储装置中来保存。而且,在虚拟计算机控制装置100中,虚构任务生成请求部200至虚构任务结束请求部206包含在虚拟计算机程序中,由CPU执行来实现。
首先,说明第一虚拟计算机110的结构。
第一虚拟计算机110具备第一OS115、例示为任务262的作为某些处理单位的0个以上的任务以及闲置任务263。第一OS115具备任务调度器(task scheduler)251。闲置任务263具备闲置转变通知部264。
在此,任务一般是指由操作***分配给CPU来执行的程序的单位,还被称为进程(process)或线程(thread)。以下,将闲置任务和虚构任务以外的任务只记述为任务。
在图2的例子中,在第一虚拟计算机110中仅记载了任务262,但是也有可能存在多个任务,也有可能除了闲置任务263以外一个任务都不存在。
闲置任务263被任务调度器251视为与任务262相比优先级最低的任务。并且,闲置任务263是在某CPU中不存在第一虚拟计算机110应该处理的任务的情况下被调度给该CPU的任务。也就是说,闲置任务263是在某CPU中不存在第一虚拟计算机110应该处理的任务时、即第一虚拟计算机在该CPU处于闲置(idle)状态时执行的任务。在闲置任务 263正在执行的情况下,可视为闲置任务263正在动作的CPU在该时间不存在在第一虚拟计算机110内应该专门进行的处理。
闲置任务263在通过任务调度器251被分配执行权时,通过闲置转变通知部264向虚拟计算机控制装置100通知第一虚拟计算机110处于闲置状态。除此之外,闲置任务263可以不进行特殊的处理。一般,作为闲置任务263,考虑可以用发出等待对CPU的中断的命令的程序、或在忙碌循环中等待对CPU的中断的程序等安装。
任务调度器251根据任务中被决定的优先级调度第一虚拟计算机110内的任务,并分配给CPU来执行。
任务调度器251可以将第一虚拟计算机110内的任务262分配给CPU0至CPU3的其中之一。或者,任务调度器251可以将第一虚拟计算机110的任务262分配给多CPU环境中的其中之一CPU。
若用图2的例子所示,例如,如果第一虚拟计算机110能够对CPU0和CPU1分配任务262,则任务调度器251将任务262分配给CPU0和CPU1的其中之一来执行。或者,如果第一虚拟计算机110只能对CPU0分配任务262,则任务调度器251一定将任务262分配给CPU0来执行。
接着,说明第二虚拟计算机120的结构。
第二虚拟计算机120具备第二OS125、例示为任务281和任务282的作为某些处理单位的0个以上的任务、闲置任务284以及根据状况而生成的虚构任务283。第二OS125具备省电控制部271、虚构任务生成部272、虚构任务结束部273、虚拟中断处理部274以及任务调度器275。虚构任务283具备虚构任务转变通知部285。闲置任务284具备闲置转变通知部286。
任务调度器275根据任务中决定的优先级调度第二虚拟计算机120内的任务,并分配给CPU来执行。
任务调度器275将第二虚拟计算机120的任务分配给CPU0至CPU3中的至少两个CPU。即,假设第二OS125能够分配的CPU存在多个。而且,假设第一OS115能够分配的CPU中的至少一个CPU也能够由第二OS125分配。
若用图2的例子所示,例如,如果第一OS115只能将任务分配给CPU0,则第二OS125能够对CPU0分配任务。并且,假设第二OS125除了CPU0以外还能够对一个以上的CPU、例如CPU1分配某些任务。
一般,由于各虚拟计算机彼此独立地动作,因此在各虚拟计算机上执行的OS、任务也彼此不能掌握其它的OS、任务的执行状况。即,第二虚拟计算机120无法掌握第二OS125正在使用的CPU在第一虚拟计算机110中以何种程度使用。
在图2的例子中,在第二虚拟计算机120中仅记载了任务281和任务282,但是也有可能存在多个任务,也有可能除了闲置任务284以外一个任务都不存在。
闲置任务284被任务调度器275视为与其它任务相比优先级最低的任务。而且,闲置任务284是在某CPU中不存在第二虚拟计算机120应该处理的任务的情况下被调度给该CPU的任务。也就是说,闲置任务284是在某CPU中不存在第二虚拟计算机120应该处理的任务时、即第二虚拟计算机120在该CPU处于闲置(idle)状态时执行的任务。在闲置任务284正在执行的情况下,可视为闲置任务284正在动作的CPU在该时间不存在在第二虚拟计算机120内应该专门进行的处理。
通过任务调度器275被分配了对某CPU的执行权的闲置任务284的闲置转变通知部286向虚拟计算机控制装置100通知在该CPU中第二虚拟计算机120处于闲置状态。除此之外,闲置任务284可以不进行特殊的处理。一般,作为闲置任务284,考虑可以用发出等待对CPU的中断的命令的程序、或在忙碌循环中等待对CPU的中断的程序等安装。
虚构任务283是在由第一虚拟计算机110处理的任务被分配给未被分配由第二虚拟计算机120处理的任务的CPU的情况下表示该CPU处于使用状态的任务。也就是说,虚构任务283是用于在第一虚拟计算机110内闲置任务263以外的任务在某CPU中动作的情况下使第二虚拟计算机120识别出在该CPU中第一虚拟计算机110的任务正在动作的任务。由此,第二虚拟计算机120判断在该CPU中第一虚拟计算机110的任务正在动作,从而能够防止省电控制部271将该CPU设为省电状态。
通过任务调度器275被分配了CPU的执行权的虚构任务283的虚构任务转变通知部285向虚拟计算机控制装置100通知在该CPU中虚构任务283已被执行。虚构任务283除此之外可以不进行特殊的处理。一般,作为虚构任务283,考虑用发出等待对CPU的中断的命令的程序、或在忙碌循环中等待对CPU的中断的程序等加以安装。
第二OS125除了任务调度器275以外还具备省电控制部271、虚构任务生成部272、虚构任务结束部273以及虚拟中断处理部274。
省电控制部271控制对CPU0至CPU3等处理器、各种设备的供电。省电控制部271在控制供电时,一般需要掌握所要控制的CPU等处理器、设备的使用状况。例如,如果控制对象为CPU,则省电控制部271可以通过监视以何种程度对该CPU分配任务,来掌握CPU的使用状况。
具体而言,省电控制部271在指定的动作时机动作,确认在该动作时机CPU是否处于闲置状态,由此可以掌握CPU的使用状况。或者,省电控制部271也可以通过计算表示在何种程度的期间该CPU为闲置状态的闲置率、或与其相反表示该CPU以何种程度被使用的CPU使用率,来掌握CPU的使用状况。或者,省电控制部271也可以对第二OS125能够分配的各CPU的CPU使用率进行综合来计算第二虚拟计算机120的CPU使用率以掌握CPU的使用状况。但是,这些掌握CPU的使用状况的方法只不过是一例,省电控制部271也可以使用其它方法来掌握CPU的使用状况。
如上所述,一方虚拟计算机无法掌握另一方虚拟计算机的CPU的使用状况。因此,在以往的虚拟计算机***中,即使通过一方虚拟计算机的OS的省电功能判断某CPU处于闲置状态,也有可能另一方虚拟计算机正在使该CPU动作。因而,在以往的虚拟计算机***中,OS所具备的省电功能无法正确地掌握各虚拟计算机的CPU或设备的使用状况。因此,本实施方式如上所述那样设置虚构任务283,从而解决了该问题。
虚拟中断处理部274接收从虚拟计算机控制装置100发送的中断种类以及处理中断所需的信息,并进行指定的处理。例如,虚拟中断处理部274判定中断是否为虚构任务283的生成请求的中断、或虚构任务283的结束请求的中断、或除此以外的中断。然后,如果是虚构任务283的生成请求和结束请求的中断,则虚拟中断处理部274从虚拟计算机控制装置100接收确定应该被分配虚构任务283的CPU的CPU识别信息。然后,虚拟中断处理部274将表示发生了中断的信息和CPU识别信息通知给虚构任务生成部272或虚构任务结束部273。
当通过虚拟计算机控制装置100的虚拟计算机切换部204对第二虚拟计算机120分配了执行权时,虚拟中断处理部274开始动作。具体而言,虚拟计算机切换部204在将某CPU的执行权从第一虚拟计算机110切换到第二虚拟计算机120时,将处理转移到虚拟中断处理部274以便虚拟中断处理部274能够参照中断处理所需的信息。例如,虚拟计算机切换部204将确定中断的中断号、想要交给虚拟中断处理部274的值保存在CPU的寄存器中。然后,虚拟计算机切换部204可以采用如下方法,即参照中断向量,将CPU的执行地址切换为虚拟中断处理部274所具备的中断处理程序的地址。
或者,作为其它方法,也可以采用如下方法:虚拟中断处理部274当通过虚拟计算机切换部204被赋予执行权时,向虚拟计算机切换部204询问有关虚拟计算机控制装置100所保留的中断的信息。然后,如果存在应该处理的中断,则虚拟中断处理部274获取有关该中断的信息,根据该信息来处理中断。
虚构任务生成部272从虚拟中断处理部274接收虚构任务283的生成请求的通知和确定应该被分配该虚构任务283的CPU的CPU识别信息,生成虚构任务283。具体而言,虚构任务生成部272基于接收到的CPU识别信息生成分配给相应的CPU的虚构任务283。在此,虚构任务生成部272将虚构任务283的优先级设定成比闲置任务284的优先级高。
另外,虚构任务生成部272将虚构任务283的优先级设定成比任务281、282的优先级低。在此,闲置任务284的优先级低于虚构任务283的优先级。因此,虚构任务283的优先级低于任务281、282、且高于闲置任务284的优先级。
虚构任务283具备虚构任务转变通知部285。通过任务调度器275被分配了执行权的虚构任务283的虚构任务转变通知部285向虚拟计算机控制装置100通知虚构任务283正在动作。
虚构任务生成部272例如可以采用如下方法:有效地利用第二OS125所具备的任务生成处理的功能来生成虚构任务283,使任务调度器275将所生成的虚构任务283作为调度对象进行处理。或者,虚构任务生成部272也可以采用如下方法:预先制作多个虚构任务283,在从虚拟中断处理部274接收到虚构任务283的生成请求的通知的情况下,基于CPU识别信息选择相应的虚构任务283,并将所选择的虚构任务283登记在任务调度器275管理调度对象所用的队列(例如运行队列(run queue))中。
虚构任务结束部273从虚拟中断处理部274接收虚构任务结束请求的通知和确定被分配有该虚构任务283的CPU的CPU识别信息,开始动作。虚构任务结束部273基于接收到的CPU识别信息,使分配给相应的CPU的虚构任务283结束。
虚构任务结束部273例如可以采用如下方法:有效地利用第二OS125所具备的任务结束处理的功能,让任务调度器275从调度对象中排除虚构任务283,从而使虚构任务283结束。或者,虚构任务结束部273也可以采用如下方法:基于从虚拟中断处理部274通知的CPU识别信息选择虚构任务283,让任务调度器275从调度对象中排除所选择的虚构任务283从而使虚构任务283结束。
接着,说明虚拟计算机控制装置100的结构。
虚拟计算机控制装置100具备虚构任务生成请求部200、动作CPU判定部201、虚拟计算机切换部204、中断判定部205以及虚构任务结束请求部206。而且,虚拟计算机控制装置100保持中断保留信息221、调度策略(schedule policy)管理信息222、可分配CPU信息223以及虚拟计算机执行状态管理信息224并进行管理。另外,虚构任务生成请求部 200包括生成判定部202和生成请求通知部203。
虚构任务生成请求部200在由第一虚拟计算机110处理的任务被分配给未被分配由第二虚拟计算机120处理的任务的CPU的情况下,生成表示该CPU处于使用状态的虚构任务283的生成请求并通知给第二OS125。
动作CPU判定部201从多个CPU中确定虚拟计算机切换部204接着应该分配执行权的一个CPU。而且,动作CPU判定部201判定切换执行权之前的虚拟计算机在哪一个CPU中进行了动作。后面将说明动作CPU判定部201的动作的一例。
生成判定部202判定是否在第二虚拟计算机120中生成虚构任务283。而且,生成判定部202当判定需要生成虚构任务283时,将虚构任务283的生成委托通知给生成请求通知部203。后面将说明生成判定部202的动作的一例。
生成请求通知部203当从生成判定部202受理了虚构任务283的生成委托时,对第二OS125通知虚构任务283的生成请求。后面将说明生成请求通知部203的动作的一例。
虚拟计算机切换部204当接收到虚拟计算机的执行权的切换请求时,基于中断保留信息221、调度策略管理信息222、可分配CPU信息223以及虚拟计算机执行状态管理信息224的其中之一,判定将执行权切换到哪一个虚拟计算机,对判定出的虚拟计算机分配执行权。后面将说明虚拟计算机切换部204的动作的一例。
中断判定部205当从例如图1所示的中断控制器55获取到中断时,基于调度策略管理信息222和虚拟计算机执行状态管理信息224向虚拟计算机切换部204发出通知,使获取到的中断由虚拟计算机来处理,或者保留获取到的中断并登记到中断保留信息221中。
虚构任务结束请求部206当从虚拟计算机切换部204接收到虚构任务283的结束委托时,对第二OS125通知虚构任务283的结束请求。后面将说明虚构任务结束请求部206的动作的一例。
接着,说明动作CPU判定部201的动作的一例。
在分配给虚拟计算机的某CPU变为闲置状态,并且该CPU放弃执行权而使控制转移到虚拟计算机控制装置100的情况下,动作CPU判定部201确定变为闲置状态的CPU,并将所确定的CPU的CPU识别信息通知给虚拟计算机切换部204、生成判定部202、生成请求通知部203以及虚构任务结束请求部206。
例如,动作CPU判定部201判定第一虚拟计算机110在哪一个CPU变为闲置状态,将变为闲置状态的CPU的CPU识别信息通知给虚构任务结束请求部206。
而且,在第二虚拟计算机120中,虚构任务283动作,当通过第二虚拟计算机120 放弃某一个CPU的执行权时,控制转移到虚拟计算机控制装置100。在这种情况下,动作CPU判定部201确定虚构任务283已经动作的CPU,将所确定的CPU的CPU识别信息通知给虚拟计算机切换部204。
在此,动作CPU判定部201例如可以向各CPU询问当前的执行状态,基于来自各CPU的回答来判定各CPU的执行状态,从而确定虚构任务283已经动作的CPU。或者,动作CPU判定部201例如可以通过参照由虚拟计算机控制装置100管理的有关各CPU的执行状态的信息来确定各CPU的执行状态,从而确定虚构任务283已经动作的CPU。此外,动作CPU判定部201也可以在自己的处理程序中通过上述手段确认自己被分配给哪一个CPU。
接着,说明动作CPU判定部201的动作的其它例子。
在对虚拟计算机发生了中断的情况下,动作CPU判定部201被中断判定部205通知是对哪一个CPU的中断,并将相应的CPU的CPU识别信息通知给生成请求通知部203。或者,在发生了对虚拟计算机的中断的情况下,动作CPU判定部201参照中断保留信息221,判定中断是否被保留,如果中断被保留,则判定所保留的中断是对哪一个CPU的中断,并将相应的CPU的CPU识别信息通知给生成请求通知部203。
接着,说明生成判定部202的动作的一例。生成判定部202在虚拟计算机切换部204将执行权从第二虚拟计算机120切换到第一虚拟计算机110的流程图(后述的图7、图10、图11、图12)中动作。生成判定部202当从动作CPU判定部201获取到CPU识别信息时,参照虚拟计算机执行状态管理信息224,确认相应的CPU中第一虚拟计算机110的执行状态。
如果第一虚拟计算机110的执行状态为闲置状态,则意味着第一虚拟计算机110从闲置状态向产生应该处理的任务的忙碌状态转变。因此,生成判定部202在某CPU的执行权被切换到第一虚拟计算机110时,如果该CPU中第一虚拟计算机110的执行状态为闲置状态,则将虚构任务283的生成委托通知给生成请求通知部203。此时,生成判定部202将从闲置状态转变为有任务状态的CPU的CPU识别信息也一起通知给生成请求通知部203。
图3是表示虚拟计算机执行状态管理信息224的数据结构的一例的图。下面利用图3具体说明生成判定部202的动作。在图3的例子中,示出虚拟计算机***1000具备四个CPU时的虚拟计算机执行状态管理信息224。
在图3的例子中,虚拟计算机执行状态管理信息224针对各CPU管理当前被分配有执行权的虚拟计算机、第一虚拟计算机110的执行状态以及第二虚拟计算机120的执行状态。第一虚拟计算机的执行状态和第二虚拟计算机的执行状态包括表示正在执行某些任务的忙碌状态的“有任务”、表示不存在执行的任务的状态的“闲置状态”、表示正在执行虚构任务283的状态的“有虚构任务”以及表示是不能分配给第一虚拟计算机的CPU的“不能分配”。
在图3的例子中,当生成判定部202从动作CPU判定部201接收到“CPU3”作为CPU识别信息的通知时,由于第一虚拟计算机的执行状态为闲置状态,因此生成判定部202判定需要生成虚构任务283,将虚构任务283的生成委托通知给生成请求通知部203。
接着,说明生成请求通知部203的动作的一例。
生成请求通知部203在虚拟计算机切换部204将执行权从第二虚拟计算机120切换到第一虚拟计算机110时执行的流程(后述的图7、图10、图11、图12)中动作。生成请求通知部203当从生成判定部202接收到虚构任务283的生成委托和执行虚构任务283的CPU的CPU识别信息的通知时,将虚构任务283的生成请求通知给第二OS125。或者,生成请求通知部203当从虚拟计算机切换部204接收到虚构任务283的生成委托和执行虚构任务283的CPU的CPU识别信息的通知时,将虚构任务283的生成请求通知给第二虚拟计算机120的第二OS125。
生成请求通知部203将从生成判定部202或虚拟计算机切换部204通知的生成委托和CPU识别信息变换为第二OS125能够识别的形式后通知虚构任务283的生成请求。
在此,作为通知生成请求的方法,例如考虑将用于生成虚构任务283的虚拟中断发送给第二OS125的方法。例如,预先决定意味着虚构任务283的生成请求的虚拟中断的中断号,生成请求通知部203可以将该中断号和执行虚构任务283的CPU的CPU识别信息登记到图4所示的中断保留信息221中。
也就是说,采用如下方式:生成请求通知部203当被通知虚构任务283的生成委托时,不是将虚构任务283的生成请求立即通知给第二OS125,而是将虚拟中断登记到中断保留信息221中。然后,在执行权从第一虚拟计算机110被切换到第二虚拟计算机120的时机到来时,生成请求通知部203将登记在虚拟中断保留信息221中的虚拟中断通知给第二OS125,向第二OS125通知虚构任务283的生成请求。
在这种情况下,虚构任务结束请求部206当生成了虚构任务283的结束请求时将该结束请求作为虚拟中断登记到中断保留信息221中,在执行权从第一虚拟计算机110被切换到第二虚拟计算机120时,将虚构任务283的结束请求作为虚拟中断通知给第二OS125。
然后,生成请求通知部203在通知虚构任务283的生成请求时,如果在中断保留信息221中登记有虚构任务283的结束请求的虚拟中断,则删除该虚拟中断,可以将该生成请求和该结束请求相抵消。由此,防止在生成了虚构任务283之后立即结束虚构任务283的情况,从而能够削减处理的开销(overhead)。
但是,并不限定于此,生成请求通知部203也可以采用当生成虚构任务283时立即向第二OS125通知虚构任务283的生成请求的方式。
图4是表示中断保留信息221的数据结构的一例的图。下面利用图4说明生成请求通知部203的动作。在图4的中断保留信息221中,记录有作为唯一确定所发生的中断的中断识别信息的“发生的中断号”、表示是向哪一个虚拟计算机发送的中断的“发送目的地的虚拟计算机”、以及表示向哪一个CPU发送中断的“发送目的地的CPU”。另外,中断保留信息221也可以记录决定了应该优先发送哪一个中断的“中断的优先级”。
例如,假设意味着虚构任务283的生成请求的虚拟中断的中断号是IRQ6,则生成请求通知部203所获取到的CPU识别信息为CPU3。在这种情况下,如图4的记录401所示,在中断保留信息221中,作为“发生的中断号”登记有“IRQ6”,作为“发送目的地的虚拟计算机”登记有“第二虚拟计算机”,作为“发送目的地的CPU”登记有“CPU3”。
此外,在上述说明中,生成请求通知部203仅通知虚构任务283的生成请求,而不进行虚构任务283的生成。但是,并不限定于此,生成请求通知部203也可以在第二虚拟计算机120中直接生成虚构任务283。在这种情况下,生成请求通知部203执行第二虚拟计算机120所具备的虚构任务生成部272和虚拟中断处理部274的功能即可。
一般,第二虚拟计算机120的任务调度器275用称为运行队列的队列来管理任务的执行状态。任务调度器275将处于可执行状态的任务连接到运行队列,对所连接的任务中的一个任务分配执行权。
作为生成请求通知部203在第二虚拟计算机120中直接生成虚构任务283的具体方法,例如可以采用将预先在第二OS125内生成的虚构任务283连接到由任务调度器275管理的运行队列的方法。更具体而言,虚拟计算机控制装置100能够访问第二虚拟计算机120的存储空间。因此,设置在虚拟计算机控制装置100中的生成请求通知部203可以改写运行队列的存储内容,使预先生成的虚构任务283连接到第二虚拟计算机120的运行队列。
存储空间的运行队列的存储地址可以采用预先静态地决定的存储地址,也可以通过在***的初始化时或启动时从第二虚拟计算机120向虚拟计算机控制装置100通知指定的存 储地址,来采用该存储地址。在此,作为***的初始化时,除了第二虚拟计算机120的初始化时以外,也可以是虚拟计算机***1000的初始化时、第二OS125的初始化时等。另外,作为运行队列的存储地址的确定方法,在CPU的寄存器中登记有分配给该CPU的任务的存储地址的情况下,可以将登记在该寄存器中的存储地址确定为第二虚拟计算机120的运行队列的存储地址。
接着,说明虚拟计算机切换部204的动作的一例。
当产生了虚拟计算机的切换请求时,虚拟计算机切换部204基于中断保留信息221、调度策略管理信息222、可分配CPU信息223以及虚拟计算机执行状态管理信息224的至少其中之一,对多个虚拟计算机的其中之一的虚拟计算机分配执行权。
图5是表示可分配CPU信息223的数据结构的一例的图。可分配CPU信息223登记哪个CPU能够分配给哪个虚拟计算机。虚拟计算机切换部204当在某CPU中产生了虚拟计算机的切换请求时,参照可分配CPU信息223,识别能够在该CPU分配执行权的虚拟计算机。
可分配CPU信息223典型的是在***的初始化时或在***的启动时被设定。可分配CPU信息223只要是能够管理各虚拟计算机与能够分配的CPU之间的对应关系的信息,可以采用任何数据形式。
从图5的例子可知,对第一虚拟计算机110能够分配CPU3,但是对第一虚拟计算机110不能分配CPU3以外的CPU。在图5的例子中,当在CPU3产生了虚拟计算机的切换请求时,虚拟计算机切换部204将第一虚拟计算机110和第二虚拟计算机120设为执行权的分配对象。或者,在图5的例子中,当在CPU3以外的CPU产生了虚拟计算机的切换请求时,虚拟计算机切换部204仅将第二虚拟计算机120设为执行权的分配对象。
图6是表示调度策略管理信息222的数据结构的一例的图。调度策略管理信息222是虚拟计算机的执行权的切换方式已被规定的信息。具体而言,调度策略管理信息222包含:对第一、第二虚拟计算机110、120分配执行权时的优先级被固定的固定优先级策略601;以分时方式分配第一、第二虚拟计算机110、120的执行权的分时策略602。除此之外,调度策略管理信息222也可以在分时策略602中采用切换执行权时动态地变更优先级的分时策略。
虚拟计算机切换部204按照在固定优先级策略601或分时策略602中规定的优先级,决定对哪个虚拟计算机分配执行权。例如,在采用固定优先级策略601作为执行权的切换方式的情况下,若假定优先级的值大的一方的优先级高,则虚拟计算机切换部204优先于第二虚拟计算机120而对第一虚拟计算机110分配执行权。
另一方面,在采用分时策略602作为执行权的切换方式的情况下,在分时策略602中,第一、第二虚拟计算机110、120的优先级被设定为相同。因此,虚拟计算机切换部204与优先级无关地将时间片(time slice)(或者有时被称为“时间量子(time quantum)”。)交替地分配给第一、第二虚拟计算机110、120,当一方虚拟计算机用尽时间片时,将执行权切换到另一方虚拟计算机。
对虚拟计算机切换部204的执行权的切换请求通过各种契机而产生。作为各种契机,可列举例如,第一虚拟计算机110执行闲置任务263而变为闲置状态,闲置转变通知部264将该情况通知给虚拟计算机切换部204。
另外,作为各种契机,还可列举例如第二虚拟计算机120在某CPU执行闲置任务284而在该CPU处于闲置状态,闲置转变通知部286将该情况通知给虚拟计算机切换部204。而且,作为各种契机,还可列举例如在采用分时策略602作为执行权的切换方式的情况下,某虚拟计算机用尽时间片。另外,作为各种契机,还可列举例如在采用固定优先级策略601作为执行权的切换方式的情况下,对优先级比当前正在执行处理的虚拟计算机高的虚拟计算机的中断发生。
当上述的契机发生时,虚拟计算机切换部204将执行权切换到优先级高的虚拟计算机、或没有用尽时间片的虚拟计算机、或不处于闲置状态的虚拟计算机。
虚拟计算机切换部204通过动作CPU判定部201或中断判定部205被通知应该切换执行权的CPU的CPU识别信息。虚拟计算机切换部204在对某CPU切换虚拟计算机的执行权的情况下,将虚拟计算机执行状态管理信息224中的有关该CPU的信息更新为切换后的信息,然后切换该CPU的执行权。
中断判定部205例如在通过中断控制器55被通知中断时,判定该中断的内容。在此,作为中断的内容,可列举有关作为中断对象的虚拟计算机、或作为中断对象的CPU的信息。在此,各虚拟计算机预先向虚拟计算机控制装置100通知需要哪个中断。或者,虚拟计算机控制装置100预先决定各虚拟计算机所需的中断。然后,中断判定部205将中断号与中断的内容对应起来进行管理。因而,中断判定部205在通过中断控制器55指定中断号而被通知了中断时,能够根据所通知的中断号判定作为中断对象的虚拟计算机和CPU。
例如,假设在采用分时策略602作为执行权的切换方式的情况下,某虚拟计算机用尽某CPU的时间片而超时。在这种情况下,中断判定部205通过中断控制器55被通知计时中断。然后,中断判定部205将在分时调度时登记的计时中断的中断号通知给虚拟计算机 切换部204,并且利用预先登记的计时处理用的中断处理程序向虚拟计算机切换部204通知在该CPU中发生了计时中断。
而且,在发生了中断的情况下,中断判定部205将中断号、中断的发送目的地的虚拟计算机、中断的发送目的地的CPU以及其它的处理该中断所需的信息通知给虚拟计算机切换部204。在此,当虚拟计算机切换部204判定不应该立即发送中断时,中断判定部205将所发生的中断的中断号、发送目的地的虚拟计算机以及发送目的地的CPU登记到中断保留信息221中。
接着,说明虚构任务结束请求部206的动作的一例。
虚构任务结束请求部206在执行第一虚拟计算机110变为闲置状态、虚拟计算机切换部204将执行权从第一虚拟计算机110切换到第二虚拟计算机120的流程图(后述的图8)时动作。虚构任务结束请求部206当从虚拟计算机切换部204接收到虚构任务283的结束委托并从动作CPU判定部201接收到CPU识别信息时,生成虚构任务283的结束请求,并将虚构任务283的结束请求通知给第二OS125。
虚构任务结束请求部206将从动作CPU判定部201和虚拟计算机切换部204通知的结束委托和CPU识别信息变换为第二OS125能够识别的形式后通知虚构任务283的结束请求。
在此,作为通知结束请求的方法,例如考虑将用于结束虚构任务283的虚拟中断发送给第二OS125的方法。例如,预先决定意味着虚构任务283的结束请求的虚拟中断用的中断号,虚构任务结束请求部206可以将该中断号和要结束虚构任务283的CPU的CPU识别信息登记到图4所示的中断保留信息221中。
接着,利用图4所示的中断保留信息221具体说明虚构任务结束请求部206的动作。
例如,假设意味着虚构任务283的结束请求的虚拟中断的中断号是IRQ7,虚构任务结束请求部206所获取到的CPU识别信息是CPU3。在这种情况下,如图4的记录402所示,在中断保留信息221中,作为“发生的中断号”登记有“IRQ7”,作为“发送目的地的虚拟计算机”登记有“第二虚拟计算机”,作为“发送目的地的CPU”登记有CPU3的CPU识别信息的“CPU3”。
此外,在上述说明中,虚构任务结束请求部206仅通知虚构任务283的结束请求,不直接使虚构任务283结束。但是,并不限定于此,虚构任务结束请求部206也可以直接结束第二虚拟计算机120的虚构任务283。在这种情况下,虚构任务结束请求部206执行第二虚拟计算机120所具备的虚构任务结束部273和虚拟中断处理部274的功能即可。
虚构任务结束请求部206可以采用例如从任务调度器275所管理的运行队列中搜索作为对象的虚构任务283并从运行队列中取消搜索到的虚构任务283的方法作为在第二虚拟计算机120直接结束虚构任务283的具体方法。更具体而言,虚拟计算机控制装置100能够访问第二虚拟计算机120的存储空间。因此,设置在虚拟计算机控制装置100中的虚构任务结束请求部206可以改写运行队列的存储内容,以便从第二虚拟计算机120的运行队列取消被搜索到的虚构任务283。
存储空间中的运行队列的存储地址可以采用预先静态地决定的存储器地址,也可以在***的初始化时或启动时从第二虚拟计算机120向虚拟计算机控制装置100通知指定的存储器地址,来采用该存储地址。在此,作为***的初始化时,除了第二虚拟计算机120的初始化时以外,还可以是虚拟计算机***1000的初始化时、第二OS125的初始化时等。另外,作为运行队列的存储地址的确定方法,在CPU的寄存器中登记有分配给该CPU的任务的存储地址的情况下,也可以将登记在该寄存器中的存储地址确定为第二虚拟计算机120的运行队列的存储地址。
另外,虚构任务结束请求部206也可以采用在执行权被切换到第二虚拟计算机120的时机到来时将虚构任务283的结束请求通知给第二OS125的方式。在这种情况下,虚构任务结束请求部206在虚构任务283的结束请求被生成时,将该结束请求作为虚拟中断登记到中断保留信息221即可。
在这种情况下,可以采用如下方式,即,生成请求通知部203在生成了虚构任务283的生成请求时将该生成请求作为虚拟中断登记到中断保留信息221中,在执行权从第一虚拟计算机110被切换到第二虚拟计算机120时,将虚构任务283的结束请求作为虚拟中断通知给第二OS125。
然后,虚构任务结束请求部206在通知虚构任务283的结束请求时,如果在中断保留信息221中登记有虚构任务283的生成请求的虚拟中断,则删除该虚拟中断,使该生成请求和该结束请求相抵消即可。
由此,防止在虚构任务283结束之后立即生成虚构任务283的情况,从而能够削减处理的开销。
但是,并不限定于此,虚构任务结束请求部206也可以采用当生成虚构任务283时立即向第二OS125通知虚构任务283的结束请求的方式。
图7是表示基于本实施方式的虚拟计算机控制装置100生成虚构任务283的生成请求时的动作的流程图。首先,通过上述的某种契机,执行权从第二虚拟计算机120向第一虚拟计算机110的切换请求被通知给虚拟计算机切换部204(S701)。这表示有可能在第一虚拟计算机110中产生了应该新处理的任务。
接着,动作CPU判定部201从多个CPU中确定执行权被分配给第一虚拟计算机110的CPU(S702)。然后,动作CPU判定部201将确定的CPU的CPU识别信息通知给虚拟计算机切换部204、生成判定部202、生成请求通知部203以及虚构任务结束请求部206。由此,虚拟计算机切换部204、生成判定部202、生成请求通知部203以及虚构任务结束请求部206能够确定执行权被切换的CPU。
接着,生成判定部202参照图3所示的虚拟计算机执行状态管理信息224,确认在相应的CPU中第一虚拟计算机110是否处于闲置状态(S703)。在图3的例子中,假设CPU3被确定为通过动作CPU判定部201执行权被切换的CPU。在这种情况下,生成判定部202判定在CPU3中第一虚拟计算机110处于闲置状态。
在此,如果在执行权被切换的CPU中第一虚拟计算机110处于闲置状态,则生成判定部202能够判定在该CPU中第一虚拟计算机110从不进行任何处理的状态向产生了新处理的状态转变。因而,如果在该CPU中第一虚拟计算机110处于闲置状态(在S704中为“是”),则生成判定部202判定需要生成虚构任务283,并将虚构任务283的生成委托通知给生成请求通知部203。然后,生成请求通知部203在第二虚拟计算机120中生成分配给该CPU的虚构任务283的生成请求(S705)。
在此,在采用等待执行权从第一虚拟计算机110切换到第二虚拟计算机120后将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以不将所生成的虚构任务283的生成请求通知给第二OS125而登记到虚拟中断保留信息221中。
另一方面,在采用不等待执行权从第一虚拟计算机110切断到第二虚拟计算机120而将生成请求通知给第二OS125的方式的情况下,生成请求通知部203可以立即将生成请求通知给第二OS125。
如果在执行权被切换的CPU中第一虚拟计算机110不处于闲置状态(在S704中为“否”),则生成判定部202判定不需要生成虚构任务283,使处理进入S706。也就是说,在执行权被切换的CPU中第一虚拟计算机110不处于闲置状态被认为是第一虚拟计算机110从以前开始利用该CPU执行某些任务,已经生成了对应的虚构任务283。因而,在这种情况下,生成判定部202判定不需要生成虚构任务283。
接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关执行权被切换的CPU的信息(S706)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态 管理信息224中,针对执行权被切换的CPU,将“分配有执行权的虚拟计算机”变更为“第一虚拟计算机”,将“第一虚拟计算机的执行状态”变更为“有任务”,并根据需要将“第二虚拟计算机的执行状态”变更为“有虚构任务”。
接着,虚拟计算机切换部204将相应的CPU的执行权从第二虚拟计算机120切换到第一虚拟计算机110(S707)。
这样,在执行权从第二虚拟计算机120切换到第一虚拟计算机110时,如果执行权被切换的CPU中第一虚拟计算机110的执行状态为闲置状态,则生成判定部202判定生成虚构任务283。然后,生成请求通知部203向第二OS125通知生成请求。
图8是表示本实施方式的虚拟计算机控制装置100生成虚构任务283的结束请求时的动作的流程图。首先,第一虚拟计算机110在CPU3中执行闲置任务,转变为闲置状态(S801)。这表示到此为止在第一虚拟计算机110中执行的任务没有了,第一虚拟计算机110应该处理的任务消失。
接着,闲置转变通知部264向虚拟计算机切换部204通知第一虚拟计算机110从忙碌状态转变为闲置状态(S802)。接着,动作CPU判定部201确定由第一虚拟计算机110执行了闲置任务的CPU(S803)。然后,动作CPU判定部201将确定的CPU的CPU识别信息通知给虚拟计算机切换部204和生成请求通知部203。由此,虚拟计算机切换部204和生成请求通知部203能够确定执行权被切换的CPU。
接着,虚构任务结束请求部206生成虚构任务283的结束请求。(S804)。在此,在采用等待执行权从第一虚拟计算机110切换到第二虚拟计算机120后将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以不将所生成的虚构任务283的结束请求通知给第二OS125而登记到中断保留信息221中。
另一方面,在采用不等待执行权从第一虚拟计算机110切换到第二虚拟计算机120而将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以立即将生成请求通知给第二OS125。
接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关执行权被切换的CPU的信息(S805)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中,针对执行权被切换的CPU,将“分配有执行权的虚拟计算机”变更为“第二虚拟计算机”,将“第一虚拟计算机的执行状态”变更为“闲置状态”,并根据需要将“第二虚拟计算机的执行状态”变更为“闲置状态”或“有任务”。
接着,虚拟计算机切换部204对第二虚拟计算机120分配相应的CPU的执行权(S806)。
图9是表示本实施方式的虚拟计算机控制装置100向第二OS125通知虚构任务283的生成请求和结束请求时的动作的流程图。此外,图9的流程图是在采用了等待执行权从第一虚拟计算机110切换到第二虚拟计算机120后将生成请求和结束请求通知给第二OS125的方式时的流程图。
首先,通过某种契机,执行权从第一虚拟计算机110向第二虚拟计算机120的切换请求被通知到虚拟计算机切换部204。然后,虚拟计算机切换部204将某CPU的执行权从第一虚拟计算机110切换到第二虚拟计算机120(S901)。
在此,虚拟计算机切换部204在切换虚拟计算机时,可以基于从中断判定部205获取的有关中断的信息、或记录在中断保留信息221中的有关中断的信息,判定切换目的地的虚拟计算机是第二虚拟计算机120。
接着,第二OS125的虚拟中断处理部274接收从生成请求通知部203通知的虚构任务283的生成请求的虚拟中断、或从虚构任务结束请求部206通知的虚构任务283的结束请求的虚拟中断(S902)。
接着,虚拟中断处理部274判定接收到的虚拟中断是虚构任务283的生成请求的虚拟中断、还是虚构任务283的结束请求的虚拟中断(S903)。
然后,如果接收到的虚拟中断是虚构任务283的生成请求的虚拟中断(在S903中为“生成请求”),则虚拟中断处理部274从生成请求通知部203接收被分配虚构任务283的CPU的CPU识别信息,并将发生了虚构任务283的生成请求的虚拟中断的事实和CPU识别信息通知给虚构任务生成部272。接着,虚构任务生成部272生成分配给根据CPU识别信息指定的CPU的虚构任务283(S904)。
另一方面,如果接收到的虚拟中断是虚构任务283的结束请求的虚拟中断(在S903中为“结束请求”),则虚拟中断处理部274从虚构任务结束请求部206接收被分配虚构任务283的CPU的CPU识别信息。然后,虚拟中断处理部274将发生了虚拟中断的事实和CPU识别信息通知给虚构任务结束部273。接着,虚构任务结束部273使分配给根据CPU识别信息指定的CPU的虚构任务283结束(S905)。
图10是表示以第二虚拟计算机120从忙碌状态转变为闲置状态为契机来生成虚构任务283的生成请求时的动作的流程图。
首先,第二虚拟计算机120在某CPU中执行闲置任务284,在该CPU中从忙碌状态转变为闲置状态(S1001)。这表示到此为止第二虚拟计算机120在该CPU中执行的任务没 有了,第二虚拟计算机120应该处理的任务消失。
接着,闲置转变通知部286向虚拟计算机切换部204通知第二虚拟计算机120从忙碌状态转变为闲置状态(S1002)。接着,动作CPU判定部201确定通过第二虚拟计算机110执行了闲置任务的CPU(S1003)。然后,动作CPU判定部201将确定的CPU的CPU识别信息通知给虚拟计算机切换部204和生成请求通知部203。由此,虚拟计算机切换部204和生成请求通知部203能够确定执行权被切换的CPU。
在本实施方式所涉及的虚拟计算机控制装置100中,如果第一虚拟计算机110在某CPU中正在执行闲置任务263以外的任务,第二虚拟计算机120在该CPU中优先于闲置任务284执行虚构任务283。因而,当第二虚拟计算机120在某CPU中正在执行闲置任务284时,第一虚拟计算机110在该CPU中执行闲置任务。
因此,在以第二虚拟计算机120在某CPU中从忙碌状态转变为闲置状态为契机而产生了虚拟计算机的切换请求的情况下,生成判定部202由于清楚第一虚拟计算机110在该CPU中处于闲置状态,因此不需要确认第一虚拟计算机110在该CPU中是否处于闲置状态。
接着,生成判定部202参照中断保留信息221,确认是否登记有作为对第一虚拟计算机110的虚拟中断的、对相应的CPU的虚拟中断(S1004)。然后,如果在执行权被切换的CPU中登记有对第一虚拟计算机110的虚拟中断,则生成判定部202判定第一虚拟计算机110在该CPU中从不进行任何处理的状态向产生了新处理的状态转变。
接着,在该CPU中对第一虚拟计算机110的虚拟中断被登记在中断保留信息221中的情况下(在S1005中为“是”),生成判定部202判定需要生成虚构任务283,并将虚构任务283的生成委托通知给生成请求通知部203。然后,生成请求通知部203生成虚构任务283的生成请求(S1006)。
在此,在采用等待执行权从第一虚拟计算机110切换到第二虚拟计算机120后将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以将所生成的虚构任务283的结束请求登记到中断保留信息221中。
另一方面,在采用不等待执行权从第一虚拟计算机110切换到第二虚拟计算机120而将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以立即将生成请求通知给第二OS125。
接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关相应的CPU的信息(S1007)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中,针对执行权被切换的CPU,将“分配有执行权的虚拟计算机”变更为“第一虚拟计算机”,将“第一虚拟计算机的执行状态”变更为“有任务”,将“第二虚拟计算机的执行状态”变更为“有虚构任务”。接着,虚拟计算机切换部204将相应的CPU的执行权切换到第一虚拟计算机110(S1007)。
另一方面,在相应的CPU中对第一虚拟计算机110的虚拟中断未被登记在中断保留信息221中的情况下(在S1005中为“否”),虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关该CPU的信息(S1008)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中,针对该CPU,将“分配有执行权的虚拟计算机”变更为“第二虚拟计算机”,将“第二虚拟计算机120的执行状态”变更为“闲置状态”。然后,虚拟计算机切换部204将该CPU的执行权切换到第二虚拟计算机120(S1008)。
此外,在S1008中,虚拟计算机切换部204将执行权切换到第二虚拟计算机120,但是将执行权切换到第一虚拟计算机110也没问题。
这样,在某处理器中第二虚拟计算机120从任务的执行状态转变为闲置状态时,如果在该处理器中存在第一虚拟计算机110应该处理的待机处理的任务,则生成判定部202判定生成虚构任务283。然后,生成请求通知部203生成虚构任务283的生成请求。
图11是表示在采用了以分时方式分配第一、第二虚拟计算机110、120的执行权的分时策略602的情况下第二虚拟计算机120用尽时间片时的处理的流程图。
首先,中断判定部205从中断控制器55受理计时中断(S1101)。接着,中断判定部205判定在哪个CPU中虚拟计算机用尽时间片而发生了计时中断(S1102)。
接着,虚拟计算机切换部204参照虚拟计算机执行状态管理信息224,确认在相应的CPU中被分配执行权的虚拟计算机是第二虚拟计算机120(S1103)。
接着,生成判定部202参照虚拟计算机执行状态管理信息224,确认在相应的CPU中第一虚拟计算机110是否处于闲置状态(S1104)。
如果在相应的CPU中第一虚拟计算机不处于闲置状态(在S1105中为“否”),则认为由于从以前开始在相应的CPU中执行了某些任务,因此已经生成了对应的虚构任务283。因而,在S1105中为“否”的情况下,生成判定部202不进行虚构任务283的生成请求而使处理进入S1110。接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关相应的CPU的信息,并将相应的CPU的执行权切换到第一虚拟计算机110(S1110)。
另一方面,如果在相应的CPU中第一虚拟计算机110处于闲置状态(在S1105中为“是”),则生成判定部202参照中断保留信息221,确认是否发生了作为对第一虚拟计算机110的虚拟中断的、对相应的CPU的虚拟中断(S1106)。
然后,在存在作为对第一虚拟计算机110的虚拟中断的、对相应的CPU的虚拟中断的情况下(在S1107中为“是”),生成判定部202判定生成虚构任务283,并将虚构任务283的生成委托通知给生成请求通知部203。然后,生成请求通知部203生成虚构任务283的生成请求(S1108)。接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关相应的CPU的信息,并将相应的CPU的执行权切换到第一虚拟计算机110(S1109)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中,针对执行权被切换的CPU,将“分配有执行权的虚拟计算机”变更为“第一虚拟计算机”,将“第一虚拟计算机的执行状态”变更为“有任务”,并根据需要将“第二虚拟计算机的执行状态”变更为“有任务”或“闲置状态”。
另一方面,在不存在作为对第一虚拟计算机110的虚拟中断的、对相应的CPU的虚拟中断的情况下(在S1007中为“否”),虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关相应的CPU的信息,并将相应的CPU的执行权切换到第二虚拟计算机120(S1111)。此外,在S1111中,虚拟计算机切换部204将相应的CPU的执行权切换到第二虚拟计算机12,但也可以将执行权切换到第一虚拟计算机110。
这样,在以分时方式对第一、第二虚拟计算机110、120分配某CPU的执行权的情况下,当第二虚拟计算机120用尽时间片时,如果在该CPU中第一虚拟计算机110的执行状态为闲置状态、且存在第一虚拟计算机110应该处理的待机处理的任务,则生成判定部202判定生成虚构任务283。
图12是表示在采用了利用固定优先级策略601决定第一、第二虚拟计算机110、120的执行权的结构的情况下,在第二虚拟计算机120的任务的执行过程中发生了对第一虚拟计算机110的中断时的处理的流程图。此外,在以下说明中,假设第一虚拟计算机110的优先级高于第二虚拟计算机120的优先级。
首先,中断判定部205从中断控制器55受理中断(S1201)。接着,中断判定部205确认所受理的中断是对第一虚拟计算机110的中断。而且,中断判定部205判定所受理的中断是对哪一个CPU的中断(S1202)。
接着,虚拟计算机切换部204为了判定是否切换虚拟计算机的执行权,参照固定优先级策略601(S1203)。在此,虚拟计算机切换部204判定第一虚拟计算机110的优先级高于第二虚拟计算机120的优先级。因此,虚拟计算机切换部204对第一虚拟计算机110 发送发生的中断,并判定将执行权切换到第一虚拟计算机110。
在第一虚拟计算机110的优先级高于第二虚拟计算机120的情况下,如果第二虚拟计算机120的执行状态为有任务,则第一虚拟计算机110在相应的CPU中处于闲置状态。因而,在使第一虚拟计算机110中断的情况下,虚拟计算机切换部204能够判定在第一虚拟计算机110中产生了应该新处理的任务。
接着,生成请求通知部203判定需要对相应的CPU生成虚构任务283,将虚构任务283的生成委托通知给生成请求通知部203。然后,生成请求通知部203生成虚构任务283的生成请求(S1204)。
在此,在采用等待执行权从第一虚拟计算机110切换到第二虚拟计算机120后将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以不将所生成的虚构任务283的结束请求通知给第二OS125而登记到中断保留信息221中。
另一方面,在采用不等待执行权从第一虚拟计算机110切换到第二虚拟计算机120而将生成请求和结束请求通知给第二OS125的方式的情况下,生成请求通知部203可以立即将生成请求通知给第二OS125。
接着,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中更新有关相应的CPU的信息,并将相应的CPU的执行权切换到第一虚拟计算机110(S1205)。具体而言,虚拟计算机切换部204在虚拟计算机执行状态管理信息224中,针对执行权被切换的CPU,将“分配有执行权的虚拟计算机”变更为“第一虚拟计算机”,将“第一虚拟计算机的执行状态”变更为“有任务”,将“第二虚拟计算机的执行状态”变更为“有虚构任务”。
这样,在第一虚拟计算机110的执行权被设定成比第二虚拟计算机120高的情况下,当某CPU中第二虚拟计算机120正在执行任务时,如果在该CPU中发生了对第一虚拟计算机110的中断,生成判定部202判定生成虚构任务283。
通过以上的结构,即使不在本发明的虚拟计算机控制装置100中设置省电功能,虚拟计算机控制装置100也能够有效利用OS的省电功能在适当的时机将CPU设为省电状态,从而能够实现虚拟计算机***1000整体的省电。
下面说明通过本发明的虚拟计算机控制装置如何实现***整体的省电控制。
图13是表示本实施方式的比较例的虚拟计算机***的虚拟计算机内的任务的执行状况的一例的图。在第二虚拟计算机中,分别在CPU0、CPU1、CPU2执行任务A、任务B、任务C,而在CPU3执行闲置任务。另一方面,在第一虚拟计算机中,对CPU3分配任务X,并且正在执行。
第二OS的省电控制部调查CPU的运行状况,在一定的期间统计采样CPU处于闲置状态的情形,根据其结果,停止对CPU的供电、或降低向CPU提供的时钟频率。例如,假设在第二虚拟计算机中,第二OS的省电控制部在CPU3以外的CPU上动作,并调查了所有CPU的运行状况。在这种情况下,由于省电控制部只能掌握由第二OS管理的范围,因此判断CPU3处于闲置状态。然而,实际上,第一虚拟计算机在CPU3中正在执行任务X。因而,尽管第一虚拟计算机在CPU3中使任务X动作,但第二OS的省电控制部也判定CPU3处于闲置状态,从而错误地判定虚拟计算机***整体的CPU的使用状况。
图14和图15是表示本实施方式的虚拟计算机控制装置100的虚拟计算机内的任务的执行状况的一例的图。在图14的例子中,在第一虚拟计算机110中,对CPU3分配有任务X,与此对应地在第二虚拟计算机120中对CPU3分配有虚构任务。
在第一虚拟计算机110中,例如CPU3的执行状态变为有任务而处于执行过程中的情况下,在第二虚拟计算机120中,CPU3的执行状态变为闲置状态之前一定执行虚构任务。
省电控制部271在调查了所有CPU的运行状况的情况下,判定CPU3并不是闲置状态而是正在执行虚构任务。因此,省电控制部271判定CPU3的执行状态为有任务。因而,CPU3不会被省电控制部271设为省电状态。
在图15的例子中,第二虚拟计算机120在CPU3中执行闲置任务,CPU3变为闲置状态。因此,在第二虚拟计算机120被分配给CPU3的虚构任务结束。
在该状况下,如果在第二虚拟计算机120中不存在分配给CPU3的任务,则在第二虚拟计算机120中CPU3也变为闲置状态。因而,省电控制部271判定在第二虚拟计算机120中CPU3处于闲置状态。该判定等同于判定在第一虚拟计算机110也包括在内的虚拟计算机***1000整体中CPU3处于闲置状态。因而,省电控制部271将CPU3设为省电状态也没问题。
此外,在本发明的实施方式中,为了便于说明,列举第一虚拟计算机110和第二虚拟计算机120这两个虚拟计算机来进行了说明,但是相当于第一虚拟计算机110的虚拟计算机也可以是多个。另外,如果除了第一、第二虚拟计算机110、120以外还存在第三虚拟计算机,则虚拟计算机控制装置100以与第一虚拟计算机110同样的方式在第二虚拟计算机120中生成与第三虚拟计算机对应的虚构任务。由此,第二虚拟计算机120的省电控制部271能够将相应的CPU适当地设为省电状态。
此外,表示本发明的实施方式的图2的各功能模块典型地作为通过处理器与外部存储器的协作而被处理的程序加以实现,但也可以设为集成电路的LSI。对它们既可以独立地进行单芯片化,也可以以包括一部分或全部的方式进行单芯片化。在此,虽然设为LSI,但是根据集成度的差异有时还被称为IC、***LSI、super LSI、ultra LSI。
另外,集成电路化的方法不限于LSI,也可以用专用电路或通用处理器实现。也可以利用在制造LSI之后能够编程的FPGA(Field Programmable Gate Array:现场可编程门阵列)、能够重新构成LSI内部的电路单元的连接、设定的可重构处理器。
并且,如果通过半导体技术的进步或派生的其它技术而出现取代LSI的集成电路化的技术,则当然也可以使用该技术来进行功能模块的集成化。
只要是具备处理器和存储装置的信息处理***,本发明就能够适用于所有电子设备、信息设备、AV设备、通信设备、家电设备,例如还能够应用于PC(个人计算机)、便携电话、智能手机、PDA等便携信息终端、电视机、硬盘录像机、DVD、蓝光等的各种盘录像机、各种盘播放器、汽车导航***等,这是不言而喻的。
此外,前述的说明在所有方面上都只不过是本发明的例子,并不是想要限定其范围。在不脱离本发明的范围而能够进行各种改进、变形,这是不言而喻的。
(本实施方式的虚拟计算机控制装置的总结)
(1)本实施方式的虚拟计算机控制装置控制第一虚拟计算机和第二虚拟计算机,该第一虚拟计算机被分配一个以上的处理器,第一操作***动作,该第二虚拟计算机被分配一个以上的处理器,第二操作***动作,所述第二操作***具备基于所述处理器的使用状况控制向所述处理器的供电的省电控制部,该虚拟计算机控制装置包括虚构任务生成请求部,该虚构任务生成请求部在由所述第一虚拟计算机处理的任务被分配给未被分配由所述第二虚拟计算机处理的任务的处理器的情况下,将表示该处理器处于使用状态的虚构任务的生成请求通知给所述第二操作***。
根据此结构,在由第一虚拟计算机处理的任务被分配给未被分配由第二虚拟计算机处理的任务的处理器的情况下,将表示该处理器处于使用状态的虚构任务的生成请求通知给第二操作***。由此,在第二虚拟计算机生成虚构任务,并分配给对应的CPU。其结果,第二操作***判定在该CPU执行虚构任务。其结果,能够避免发生尽管在该CPU执行第一虚拟计算机的任务,第二操作***所具备的省电控制部也将该CPU设成省电状态的事态。因此,可以不在虚拟计算机控制装置的内部设置复杂的省电控制部,利用操作***所具有的省电控制部,能够适当地进行虚拟计算机***整体的省电控制。
(2)所述虚构任务生成请求部,可以具备生成判定部和生成请求通知部,所述生成判定部,在所述处理器的执行权从所述第二虚拟计算机切换到所述第一虚拟计算机时,基于所述第一虚拟计算机的状态判定是否生成所述虚构任务;所述生成请求通知部,在所述生成判定部判定生成虚构任务的情况下,将所述虚构任务的生成请求通知给所述第二操作***。
根据此结构,当对某处理器的执行权从第二虚拟计算机切换到第一虚拟计算机时判定是否生成虚构任务,在判定生成虚构任务的情况下,虚构任务的生成请求被通知给第二操作***。为此,能够在合适的时机进行有无虚构任务的生成的判定。
(3)所述生成判定部,在所述执行权从所述第二虚拟计算机切换到所述第一虚拟计算机时,如果所述执行权被切换的处理器中的所述第一虚拟计算机的执行状态为闲置状态,可以判定生成所述虚构任务。
由于某种契机,某处理器的执行权从第二虚拟计算机切换到第一虚拟计算机时,如果第一虚拟计算机为闲置状态,则该处理器处于处理第一虚拟计算机的任务之前的状态。因此,在该状态下,在第二虚拟计算机该处理器的虚构任务还没有生成。于是,在本结构中,在此状态下判定生成虚构任务。
另一方面,由于某种契机,某处理器的执行权从第二虚拟计算机切换到第一虚拟计算机时,如果在该处理器第一虚拟计算机不为闲置状态而为任务被分配的状态,则在第二虚拟计算机该处理器的虚构任务应该已经生成,没有必要生成虚构任务。因此,在本结构中,在该状态下判定不生成虚构任务。由此,能够避免没有必要地生成虚构任务的情况。
(4)所述生成判定部,在某处理器中所述第二虚拟计算机从任务的执行状态转变为闲置状态时,如果在该处理器中存在所述第一虚拟计算机应该处理的待机处理的任务,可以判定生成所述虚构任务。
在某处理器中第二虚拟计算机从任务的执行状态转变为闲置状态时,如果在第一虚拟计算机存在在该处理器待机处理的任务,则该处理器的执行权从第一虚拟计算机切换到第二虚拟计算机,该待机处理的任务被处理。此时,在该处理器,虽然第二虚拟计算机为闲置状态,但第一虚拟计算机为任务的执行状态。因此,在本结构中,在该状态下判定生成虚构任务。由此,能够防止发生尽管在某处理器,第一虚拟计算机的任务被分配,也由省电控制部将该处理器置于省电状态。
(5)所述第一、第二虚拟计算机以分时方式被分配对某处理器的执行权,所述生成判定部,在所述第二虚拟计算机用尽时间片时,如果在该处理器中所述第一虚拟计算机的执行 状态为闲置状态、且存在所述第一虚拟计算机应该处理的待机处理的任务,可以判定生成所述虚构任务。
在某处理器当第二虚拟计算机用尽时间片时,如果在该处理器中第一虚拟计算机的执行状态为闲置状态、且存在第一虚拟计算机应该处理的待机处理的任务,则执行权被切换到第一虚拟计算机,通过该处理器任务被处理。此时,在该处理器中,虽然第二虚拟计算机为闲置状态,但第一虚拟计算机为任务的执行状态。在此,在本结构中,在该状态下判定生成虚构任务。由此,能够防止发生尽管在某处理器第一虚拟计算机的任务被分配,也由省电控制部将该处理器置于省电状态。
(6)所述第一虚拟计算机的所述执行权被设定成比所述第二虚拟计算机高,所述生成判定部,在某处理器中所述第二虚拟计算机正在执行任务时,在该处理器中发生了对所述第一虚拟计算机的中断的情况下,可以判定生成所述虚构任务。
第一虚拟计算机的执行权被设定成比第二虚拟计算机的高,当在某处理器中第二虚拟计算机正在执行任务时,在该处理器中发生了对第一虚拟计算机的中断的情况下,执行权被切换到第一虚拟计算机,通过该处理器任务被处理。此时,在该处理器,虽然第二虚拟计算机为闲置状态,但第一虚拟计算机为任务的执行状态。此时,在本结构中,在该状态下判定生成虚构任务。由此,能够防止发生尽管在某处理器第一虚拟计算机的任务被分配,也由省电控制部将该处理器置于省电状态。
(7)虚拟计算机控制装置还可以具备虚构任务结束请求部,该虚构任务结束请求部在被分配有虚构任务的处理器中所述第一虚拟计算机的任务结束的情况下,将所述虚构任务的结束请求通知给所述第二操作***。
根据此结构,在某处理器由第一虚拟计算机处理的任务结束时,与此连动虚构任务也结束。为此,在该处理器第一、第二虚拟计算机均为闲置状态时,省电控制部可以将该处理器置于省电状态。
(8)所述第一操作***,在某处理器中不存在所述第一虚拟计算机应该处理的任务的情况下,让所述第一虚拟计算机执行表示在该处理器中所述第一虚拟计算机处于闲置状态的第一闲置任务,所述虚构任务结束请求部在所述第一闲置任务被执行时,可以将所述虚构任务的结束请求通知给所述第二操作***。
根据此结构,在某处理器第一虚拟计算机的任务结束时,在该处理器第一闲置任务被执行,因此,虚构任务结束请求部通过第一闲置任务能够正确地识别第一虚拟计算机的任务结束。然后,虚构任务结束请求部将虚构任务的结束请求通知给第二操作***。因此, 能够使虚构任务和所对应的第一虚拟计算机的任务正确地连动起来。
(9)所述第二操作***,可以在某处理器中不存在所述第二虚拟计算机应该处理的任务的情况下,让所述第二虚拟计算机执行表示在该处理器中所述第二虚拟计算机处于闲置状态的第二闲置任务,并将所述虚构任务的优先级设定成比所述第二闲置任务高、且比所述虚构任务和所述第二闲置任务以外的其它任务低。
根据此结构,第二虚拟计算机在某处理器中不存在应该处理的任务的情况下,在该处理器中执行第二闲置任务。在此,第二闲置任务的优先级被设定成比虚构任务的优先级低。因此,当第二虚拟计算机在某处理器中执行第二闲置任务时,省电控制部判定第一虚拟计算机也在某处理器中为闲置状态,能够正确地将该处理器置于省电状态。
(10)所述虚构任务生成请求部和所述虚构任务结束请求部,可以在所述执行权从所述第一虚拟计算机切换到所述第二虚拟计算机时,通知所述生成请求和所述结束请求。
根据此结构,即使虚构任务生成请求部判断有必要生成虚构任务也不必马上通知虚构任务的生成请求,可以将虚构任务的生成请求保留到执行权从第一虚拟计算机切换到第二虚拟计算机为止。而且,虚构任务结束请求部也和虚构任务生成请求部一样,可以将虚构任务的结束请求保留到执行权从第一虚拟计算机切换到第二虚拟计算机为止。
(11)所述虚构任务结束请求部,在通知所述虚构任务的结束请求时,如果存在未通知的所述虚构任务的生成请求,可以将该生成请求和该结束请求相抵消。
根据此结构,在虚构任务的结束请求被生成后,在通知该结束请求之前便生成了虚构任务的生成请求时,两者互相抵消。因此,能够避免发生在虚构任务的结束请求被生成后马上就结束虚构任务的情况,能防止不必要地生成虚构任务,从而可以削减处理的开销。
(12)所述虚构任务生成请求部,在通知所述虚构任务的生成请求时,如果存在未通知的所述虚构任务的结束请求,可以将该结束请求和该生成请求相抵消。
根据此结构,在虚构任务的生成请求被生成后,在通知该生成请求之前便生成了虚构任务的结束请求时,两者互相抵消。因此,能够避免发生虚构任务结束后马上就生成虚构任务的情况,能防止不必要地结束虚构任务,从而可以削减处理的开销。
产业上的可利用性
本发明所涉及的虚拟计算机控制装置、虚拟计算机控制方法、虚拟计算机控制程序以及集成电路能够有效使用操作***的省电功能来降低耗电。因而,作为需要省电控制的电气产品的省电技术而有用。另外,在信息设备、AV设备、通信设备、家电设备、电气产品等搭载计算机的设备中也有用。