提供用于虚拟运行环境的独立的时间源的方法和虚拟化软件的制作方法

文档序号:6377659阅读:206来源:国知局
专利名称:提供用于虚拟运行环境的独立的时间源的方法和虚拟化软件的制作方法
技术领域
本发明涉及一种用于为具有至少两个虚拟运行环境的数据处理设备的至少一个实时操作系统提供至少两个彼此独立的时间源的方法,其中通用操作系统运行在所述虚拟运行环境中的第一个中,并且所述实时操作系统运行在所述虚拟运行环境中的第二个中,通过虚拟化软件(超级监督者(hypervisor))管理所述虚拟运行环境,并且其中,第一处理器核心分配给所述第一虚拟运行环境,并且第二处理器核心分配给所述第二虚拟运行环境,本发明还涉及一种用于具有多个处理器核心、通用操作系统和至少一个实时操作系统的数据处理设备的虚拟化软件。
背景技术
对于提出提高的操作安全的要求的自动化任务使用所谓的故障安全的自动化系统,其中通过技术措施确保即使在各个部件失效时或者发生故障时也继续确保安全的运行或者将设备等置于安全的状态下。用于满足这样的要求的重要措施在于,重复地且彼此独立地设有重要的操作机构或者部件,以至于能够记录单独的部件中的至少一个故障。在高度可用的系统中,理想地也能够借助冗余的备用部件实现继续运行。下面,将所谓的时间源视作为故障安全的自动化系统的重要的资源,即提供时钟、时间或者类似的时间信息的部件,自动化程序或者底层操作系统需要所述部件,以便以正确的时钟、以正确的速度并且可靠地完成任务。当在现有技术中常常使用具有所谓的F-CPU的(“故障安全的中央处理单元”)或F-PLC的(“故障安全的可编程逻辑控制器”)特殊的、故障安全的控制装置,即特别地设有冗余的部件的可编程逻辑控制器时,越来越多地使用配备有实时操作系统并且用于控制任务和自动化任务的个人计算机或类似的标准化体系结构。即使在例如个人计算机的标准体系结构中原则上也可能的是,为具有相应的安全要求的实时操作系统提供两个彼此独立的时间源。重要的是,两个时间源彼此独立,即尤其关于他们的硬件得出不同的时钟源(大多数基于石英振荡器)。为此,在个人计算机方面常常一方面使用实时时钟模块(常常称作RTC= "RealTime Clock,实时时钟”),并且另一方面使用CPU的特殊计数器,即所谓的时间戳计数器(TSC)。当实时时钟模块从为此特别设置的石英(石英振荡器)中获得其时钟信号时,时间戳计数器来源于处理器时钟(CPU时钟),并且因此与RTC时钟无关。至今为止,以这种方式还已经可能的是,为在PC硬件等上实现的故障安全的自动化系统提供两个彼此独立的时间源。在控制技术的领域内,现在越来越多地使用虚拟化技术。这意味着,分别具有操作系统的多个虚拟机运行在一个相同的硬件平台上,其中,操作系统中的至少一个能够在所谓的“实时条件”下运行,并且能够形成实现为软件的“故障安全”的自动化部件、即所谓的故障安全的CPU。这提供:对于这样的应用领域使用具有多个处理器或者多个处理器核心的硬件平台、所谓的多核CPU的硬件平台,其中,具有故障安全的实时操作系统的虚拟机例如能够单独地配设有一个CPU或者一个处理器核心。当在这种态势下每个处理器或者每个处理器核心也具有来源于处理器时钟的时间戳计数器时,在这样的“虚拟化”设置中产生共同访问仅一次性存在的资源,特别是例如所谓的RTC模块的问题。尽管这样的仅一次性存在的资源的虚拟化原则上是可能的,以至于每个在虚拟机中运行的单元(“虚拟化操作系统”)获得访问并且例如能够读取RTC模块,然而与虚拟化软件、即所谓的“超级监督者(hypervisor)”的每次交互强制地导致所请求的虚拟机的执行的中断,这尤其由于由此引起的延迟时间而导致实时性能变差。这尤其涉及下述系统,其中多于一个“虚拟化自动化系统”在一个相同的硬件平台上运行,以至于所需要的资源、特别是所述时钟模块RTC不能够单独提供给单独存在的自动化系统。

发明内容
因此,本发明的目的是,为中央资源提供多个虚拟机,而在访问所述资源时不会导致在执行虚拟机时的损失。该目的的解决方案的核心思想是,将共同使用的资源的可用信息直接地、即在没有“跳出”到虚拟化软件的情况下以可读的方式提供给虚拟机,其中,通过虚拟化软件以中断控制的方式确保所述信息的更新。该目的的解决方案尤其提供了一种用于为具有至少两个虚拟运行环境的数据处理设备的至少一个实时操作系统提供至少两个彼此独立的时间源的方法和一种用于具有多个处理器核心、通用操作系统和至少一个实时操作系统的数据处理设备的虚拟化软件。在此,提出一种用于为具有至少两个虚拟运行环境的数据处理设备的至少一个实时操作系统提供至少两个彼此独立的时间源的方法,其中,通用操作系统运行在虚拟的运行环境中的第一个中,并且实时操作系统运行在虚拟运行环境中的第二个中,其中,通过虚拟化软件来管理虚拟运行环境,并且其中,第一虚拟运行环境分配有第一处理器核心,并且第二虚拟运行环境分配有第二处理器核心。在此,至少一个实时操作系统单独地分配有第一时间源,其中,数据处理设备具有独立于第一时间源的第二时间源,其中,第二时间源配置为用于周期性地产生——在中断控制器中有利地配置为IP1-初始化信号(处理器间中断一初始化)或者配置为另一要单独处理的事件的一中断。在此,具有带有通用操作系统的虚拟运行环境的第一处理器核心设置成,使得在每次通过第二时间源触发中断时,代替第一处理器核心的一例如在初始化信号后的通常的一重新初始化而跳入虚拟化软件中,其中,通过虚拟化软件更新至少一个能够通过实时操作系统读取的存储单元的内容,并且其中,实时操作系统将所述存储单元用作为独立于第一时间源的时间源,以控制第一时间源。通过所说明的方法可能的是,为实时操作系统复制第二时间源,使得为了更新所述第二时间源不需要中断具有实时操作系统的虚拟机。此外,该目的的解决方案提出一种用于具有多个处理器核心的数据处理设备的虚拟化软件,其中,数据处理设备配备有通用的操作系统和至少一个实时操作系统。在此,虚拟化软件设置成用于对用于运行上述方法的数据处理设备进行配置,其中,虚拟化软件设置成用于在由第二时间源初始化的中断后更新用作为独立的时间源的至少一个存储单元。通过这样的虚拟化软件能够实现参考上述方法所说明的优点。根据本发明的方法的有利的扩展方案在本发明中说明。在此说明的特征和优点在意义上也适用于根据本发明的虚拟化软件。所说明的有利的扩展方案能够单独的实现,但是或者也能够相互自由组合地实现。有利的是,使用如下处理器核心的时间戳计数器作为第一时间源,在所述处理器核心上运行有具有实时操作系统的第二虚拟运行环境。所述优点一方面在于,在没有跳出到虚拟化软件(hypervisor)的情况下读取时间戳计数器是可能的。另一方面,为每个处理器核心提供独有的时间戳计数器,因此在每个关键的运行环境能够单独地要求至少一个处理器核心的优选的体系结构中得出下述优点:单独地提供具有实时操作系统的虚拟运行环境的时间戳计数器,而不会受其他运行环境和其他操作系统影响。这特别是当存在具有多个虚拟环境的多个实时操作系统时才是有利的。数据处理设备的实时时钟模块有利地用作为第二时间源。这样的RTC模块配备有独立于处理器时钟的时钟发生器(石英振荡器)。在此,通过虚拟化软件有利地发生RTC模块相对于第一虚拟运行环境的所谓的“虚拟化”。这意味着,通用的操作系统对RTC模块或者所述RTC模块的寄存器的直接访问由虚拟化软件阻止或者至少进行控制。由此提高了 RTC模块的时间信息的可靠性和运行安全性。外围的中断控制器(IO-APIC)必须以类似的方式进行“虚拟化”。由此避免了访问者操作系统未经授权地重新配置所述模块。此外,不是所述模块的每个中断请求都会导致,具有通用的操作系统的处理器核心(核心O)变换为虚拟化软件的上下文(context),并且在那里决定是否处理中断,并且如果是的话,以何种方式处理中断。这对于性能具有下述优点:不是每个中断都导致具有实时操作系统的虚拟运行环境的中断。在另一优选的扩展方案中,也能够对处理器核心的本地中断控制器(LO-APIC)进行虚拟化。如已经提及的,在数据处理装置上能够有利地设立分别具有实时操作系统的多个第二虚拟运行环境或者分别具有带有提高的安全要求的操作系统(“F系统”;“故障安全的系统”)的多个第二虚拟运行环境,其中,所述第二虚拟运行环境中的每个各分配有一个独有的处理器核心。由于所述第二虚拟运行环境中的每个仅必须访问作为第二时间源的寄存器或者存储单元以补偿其独有的、“私用的”第一时间源,能够在没有跳出(“VM-Exit”虚拟机退出)到虚拟化软件(hypervisorJMM=虚拟机监视器)的情况下进行这种补偿。因为通过虚拟机仅只读地访问具有“第二时间信息”的寄存器或者存储单元,所以所有第二虚拟运行环境能够使用相同的存储单元或者寄存器作为第二时间源。然而,在一个有利的扩展方案中能够在没有显著的额外耗费的情况下为所述第二虚拟运行环境中的每个管理特有的、单独的存储单元、寄存器等,以至于例如可能的是,为每个虚拟运行环境选择另一“显示格式”、另一“零点”等。在最简单的情况下,存储单元通过所述存储单元的内容的简单的递增来进行更新;不言而喻的是,也能够选择其他的协定。


下面,借助于附图详细地阐述根据本发明的方法的一个实施例。所述实施例同时用于阐述根据本发明的虚拟化软件。在此,唯一的附图示出具有多个处理器核心、多个虚拟运行环境和一个共同使用的硬件的数据处理设备的体系结构的示意图。
具体实施例方式在图1中示意地示出硬件体系结构,在所述硬件体系结构中可使用四个处理器核
心Core0........C0re3。借助于在下面称作“超级监督者”的虚拟化软件(“虚拟机监视器”)
产生四个虚拟运行环境(虚拟机),其中,在第一虚拟运行环境中安装有通用的操作系统GP0S(通用操作系统,General Purpose Operating System)、例如 Microsoft Windows 或者Linux,所述通用操作系统运行在第一处理器核心CoreO上。分别具有实时操作系统RT0S1、RT0S2.RT0S3的虚拟运行环境被分别分配给剩余的处理器核心Corel、Core2、Core3。计算机体系结构具有共同的硬件SHW(“共享硬件”),其中,在此应示例地视作实时时钟模块RTC。
处理器或者处理器核心Core0........Core3分别具有时间戳计数器TSC0........TSC3,
其中,所述时间戳计数器在此为从处理器时钟馈送的计数器。相反,实时时钟模块RTC具有单独的时钟发生器(石英)。下面所说明的方法的目的是,一方面将已分配的处理器核心Corel、Core2、Core3的时间戳计数器TSC1、TSC2、TSC3分别分配给实时操作系统RT0S1、RT0S2、RT0S3,其中,时间戳计数器TSC1、TSC2、TSC3分别作为所谓的“第一时间源”由每个实时操作系统RT0S1、RT0S2.RT0S3单独地使用。此外,实时时钟模块RTC或者其时间信息应提供给实时操作系统RTOSU RT0S2、RT0S3作为共同使用的资源,而对时间信息的访问不会引起相应的实时操作系统RT0S1、RT0S2、RT0S3或者辅助所述实时操作系统的虚拟运行环境跳出到超级监督者。没有示出所谓的高精度事件定时器(HPET),其同样取决于处理器时钟,并且其在一些体系结构中能够利用实时时钟模块RTC的中断。关于此点需要指出的是,在这样的体系结构中同样应该对所述HPET进行“虚拟化”,以便通过所述HPET来阻止利用分配给RTC模块的中断。然而,出于清楚起见,这在图中没有示出,并且关于此点也不进一步进行说明。下面假定,通用操作系统GPOS需要实时时钟模块作为时间源,这例如在已知的操作系统Microsoft Windows中是这种情况。在此,如已述的,不进一步深入研究HPET的替选的应用。可从实时时钟模块RTC的寄存器中读取的时间信息对于在此考虑的实时操作系统RT0S1、RT0S2、RT0S3的需求而言不是足够“精细的”的,这意味着,简单地读取相应的寄存器内容不能够用于精确地控制来自时间戳计数器TSC1、TSC2、TSC3的时间信息。因此现在,实时时钟模块RTC应被编程为,使得所述实时时钟模块周期性地触发中断INT,其中,中断INT的触发的重复精度完全相应于已提及的精度要求。首先,实时时钟模块RTC相对于通用操作系统GPOS来进行“虚拟化”,以至于对实时时钟模块RTC的寄存器的在实时操作系统GPOS方面的所有访问Z-RTC通过超级监督者的相应的实体来拦截。从现在开始,对实时时钟模块RTC的实际的寄存器的访问和有利地还有对中断控制器IO-APIC的访问几乎仅通过超级监督者来进行。现在,实时时钟模块的已提及的中断机构在中断控制器IO-APIC中参数化为初始化信号INIT或者参数化为其他不可屏蔽的中断,例如参数化为IP1-启动信号。这允许,在超级监督者中,中断由实时时钟模块RTC生成的中断INT(VM Exit,SecutityExeption SX),而在此不必处理其他的中断源。因此,也能够由负责的操作系统本身处理任意其他的中断,并且尽管如此,仍然实现实时时钟模块RTC的中断导致具有通用操作系统GPOS的虚拟机跳出(上下文变更)到超级监督者中。在本文中需要注意的是,对于超级监督者的任意要求的最大处理时间(“滞留时间”)短于在实时时钟模块RTC中设置的中断间隔。因此防止了在将控制返还给具有通用操作系统GPOS的虚拟机之前,必须处理其他的中断INT。在此需要指出的是,在第一处理器核心CoreO上发生超级监督者的执行,以至于在没有影响到具有实时操作系统RTOSl、RT0S2、RT0S3的其他虚拟机的情况下实现到超级监督者(VM Exit、Secutity Exeption SX)的或者到那里的服务例程ISH (Init-Signal Handler,初始化信号处理器)的根据中断的跳出VME。通过超级监督者将存储单元AZ1、AZ2、AZ3 (“替选的时间源”)或者寄存器分别分配给实时操作系统RT0S1、RT0S2、RT0S3,所述存储单元或者寄存器用作为用于所述实时操作系统RT0S1、RT0S2、RT0S3的第二时间源。所述存储单元AZ1、AZ2、AZ3或者存储器的内容在每次通过实时时钟模块RTC生成或者触发中断INT时通过超级监督者或者那里的服务例程ISH和由此产生的INIT信号来更新,例如通过在所述存储单元AZl、AZ2、AZ3或者寄存器中的数值的递增来更新。通过对所述存储单元AZ1、AZ2、AZ3或者寄存器的读访问A12、A22、A32,能够随时使用因此产生的第二时间源。第一时间源TSC1、TSC2、TSC3的补偿例如通过即时读取Al 1、A21、A31所述寄存器并且与存储单元AZ1、AZ2、AZ3或者所使用的、递增的寄存器的数值比较来进行。在许多情况下,中断控制器的关于时钟模块中断INT的之前已说明的参数化以所述控制器相对于通用操作系统GPOS的虚拟化为条件。只要通用操作系统GPOS使用(从现在开始虚拟化的)实时时钟模块VRTC作为时间源,那么在处理依据所需要的时钟的INIT信号时就将由虚拟化时钟模块VRTC生成的RTC中断1-1NT “注入”通用操作系统GPOS中(例如通过中断注入或者通过处理器间中断通过本地中断模块L0-APIC)。为了提高处理性能而可能的是,对通用操作系统进行参数化,使得停止RCT中断1-1NT的其他必要的应答。在一些处理器中,不能在超级监督者的运行时间期间、即在“VMExit”期间提交INIT信号。这例如包括已经说明的最大“停留时间”,如已说明的,所述停留时间必须明显小于所选择的RCT时钟。在结束(“关闭”)通用操作系统GPOS时能够出现下述状态,其中,几乎不必须或者完全不再必须执行所分配的虚拟机,以至于所分配的处理器核心CoreO持续地执行超级监督者的上下文,并且从而不能够提交INIT信号。在这样的情况下,在相应的虚拟机中(虚拟运行环境)能够启动主体操作系统(Rumpf-Betriebssystem)或类似的软件,以至于能够或者必须相应地离开超级监督者。
权利要求
1.用于为具有至少两个虚拟运行环境的数据处理设备的至少一个实时操作系统(RT0S1、RT0S2、RT0S3)提供至少两个彼此独立的时间源的方法, 其中,通用操作系统(GPOS)运行在所述虚拟运行环境中的第一个中,并且所述实时操作系统(RTOSl、RT0S2、RT0S3)运行在所述虚拟运行环境中的第二个中, 其中,通过虚拟化软件(超级监督者)管理所述虚拟运行环境,并且其中,所述第一虚拟运行环境分配有第一处理器核心(C0RE0),并且所述第二虚拟运行环境分配有第二处理器核心(C0RE1、C0RE2、C0RE3), 其特征在于, 所述至少一个实时操作系统(RT0S1、RT0S2、RT0S3)单独地分配有第一时间源(TSC1、TSC2、TSC3), 所述数据处理设备具有独立于所述第一时间源(TSC1、TSC2、TSC3)的第二时间源(RTC),其中, 所述第二时间源(RTC)配置为用于周期性地产生中断(INT),其中, 具有带有所述通用操作系统(GPOS)的所述虚拟运行环境的所述第一处理器核心(COREO)设置成,使得在每次通过所述第二时间源(RTC)触发所述中断(INT)时跳入所述虚拟化软件(超级监督者)中,其中, 所述虚拟化软件(超级监督者)更新至少一个能够通过所述实时操作系统(RT0S1、RT0S2、RT0S3)读取的存储单元(AZ1、AZ2、AZ3)的内容,其中,所述实时操作系统(RT0S1、RT0S2.RT0S3)使用所述存储单元(AZ1、AZ2、AZ3)作为独立于所述第一时间源(TSC1、TSC2、TSC3)的时间源。
2.根据权利要求1所述的方法,其特征在于,所述第二时间源设置成用于周期性地产生配置为初始化信号(INIT)、启动信号或者不能被屏蔽的中断的中断(INT)。
3.根据上述权利要求之一所述的方法,其特征在于,使用如下处理器核心(C0RE1、C0RE2、C0RE3)的时间戳计数器(TSC1、TSC2、TSC3)作为所述第一时间源(TSC1、TSC2、TSC3),在所述处理器核心上运行有具有所述实时操作系统(RT0S1、RT0S2、RT0S3)的所述第二虚拟运行环境。
4.根据上述权利要求之一所述的方法,其特征在于,所述数据处理设备的实时时钟模块用作为所述第二时间源(RTC)。
5.根据权利要求4所述的方法,其特征在于,使用所述虚拟化软件(超级监督者)以相对于所述第一虚拟运行环境虚拟化所述实时时钟模块(RTC)。
6.根据上述权利要求之一所述的方法,其特征在于,使用所述虚拟化软件(超级监督者)以相对于所述通用操作系统(GPOS)虚拟化所述中断控制器(10-APIC)。
7.根据上述权利要求之一所述的方法,其特征在于,在数据处理装置上设置有分别具有实时操作系统(RT0S1、RT0S2、RT0S3)的多个第二虚拟运行环境,其中,所述第二虚拟运行环境中的每个分别分配有独有的处理器核心(C0RE1、C0RE2、C0RE3)。
8.根据权利要求7所述的方法,其特征在于,为每个第二虚拟运行环境分别更新至少一个单独的存储单元(八21322323)。
9.根据上述权利要求之一所述的方法,其特征在于,所述虚拟化软件(超级监督者)通过如下方式来更新能够通过所述实时操作系统(RT0S1、RT0S2、RT0S3)读取的存储单元(AZ1、AZ2、AZ3)的所述内容,即通过存储在所述存储单元(AZ1、AZ2、AZ3)中的数值的递增来更新。
10.用于具有多个处理器核心(COREO、COREU C0RE2、C0RE3)、通用操作系统(GPOS)和至少一个实时操作系统(RT0S1、RT0S2、RT0S3)的数据处理设备的虚拟化软件, 其特征在于, 所述虚拟化软件(超级监督者)设置成用于配置用于运行上述方法之一的所述数据处理设备,其中,所述虚拟化软件(超级监督者)设置成用于在由所述第二时间源(RTC)初始化的中断(INT)后更新用作为 独立的时间源的至少一个存储单元(421422323)。
全文摘要
本发明涉及一种用于为具有虚拟运行环境的数据处理设备的至少一个实时操作系统提供至少两个彼此独立的时间源的方法和虚拟化软件,通用操作系统运行在虚拟运行环境之一中,通过虚拟化软件管理虚拟运行环境。每个实时操作系统单独分配有第一时间源,数据处理设备具有独立于第一时间源的第二时间源,第二时间源配置成用于周期性产生中断,第一处理器核心在每次通过第二时间源触发中断时跳入虚拟化软件的例程中,更新至少一个能够通过实时操作系统读取的存储单元的内容且所述存储单元作为独立于第一时间源的时间源以控制第一时间源。通过所述方法可能的是,为实时操作系统复制第二时间源,使得对第二时间源的更新不需要中断具有实时操作系统的虚拟机。
文档编号G06F11/36GK103116515SQ20121035924
公开日2013年5月22日 申请日期2012年9月24日 优先权日2011年9月28日
发明者奥托·尼塞尔, 哈利勒·恰拉尔·于恩韦尔 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1