提供用於虛擬運行環境的獨立的時間源的方法和虛擬化軟體的製作方法
2023-06-12 06:33:46
專利名稱:提供用於虛擬運行環境的獨立的時間源的方法和虛擬化軟體的製作方法
技術領域:
本發明涉及一種用於為具有至少兩個虛擬運行環境的數據處理設備的至少一個實時作業系統提供至少兩個彼此獨立的時間源的方法,其中通用作業系統運行在所述虛擬運行環境中的第一個中,並且所述實時作業系統運行在所述虛擬運行環境中的第二個中,通過虛擬化軟體(超級監督者(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日
發明者奧託·尼塞爾, 哈利勒·恰拉爾·於恩韋爾 申請人:西門子公司