本發(fā)明涉及一種用于在第一虛擬機和第二虛擬機之間在超級監(jiān)視器的情況下進行通訊的方法。除此之外,本發(fā)明涉及一種相應的裝置、一種相應的計算機程序以及一種相應的存儲介質。
背景技術:
長久以來,真實存在的或者假想的計算機系統(tǒng)的模擬在實踐的計算機科學中為人所知,并且在專業(yè)圈中被稱為虛擬機(virtual machine, VM)。所謂的超級監(jiān)視器(Hypervisor)允許在相應的軟件架構中使得多個虛擬機同時地運行于被稱為主機系統(tǒng)的物理機上。在這種情況下,所述超級監(jiān)視器管理所述主機系統(tǒng)的硬件資源,例如中央處理器(central processing unit, CPU)、共同使用的內(nèi)存(shared memory(分享的內(nèi)存))和可能的外圍設備,并且按照需要把它們分配給單個的虛擬機。
WO2008/095548A1公開了一種管理模塊、生產(chǎn)者及消費者計算機、它們的布置以及用于在計算機之間通過共同使用的存儲器進行通訊的方法,其中所述的模塊包括:用于存儲和管理三重緩沖器狀態(tài)的機構(其中,每個緩沖器具有讀-子緩沖器、寫-子緩沖器和空閑-子緩沖器)、利用至少一個生產(chǎn)者計算機和至少一個消費者計算機進行通訊的機構,并且其中形成所述的管理機構,以便在答復生產(chǎn)者或者消費者計算機的訪問時,在所述三重緩沖器的情況下確定一種有針對性的讀-子緩沖器或寫-子緩沖器)。
技術實現(xiàn)要素:
本發(fā)明提出了按照獨立權利要求的一種用于在第一虛擬機和第二虛擬機之間在一種管理程序或者說超級監(jiān)視器(Hypervisor)的情況下進行通訊的方法、一種相應的計算機程序以及一種相應的存儲介質。
這種解決方案的優(yōu)點在于在虛擬機之間的根據(jù)本發(fā)明的通訊的數(shù)據(jù)一致性,該一致性不依賴于在每個虛擬機中共同起作用的行為。
通過在從屬權利要求中列舉的措施,在獨立權利要求中給出的基本構思的優(yōu)選改型方案和改進方案成為可能。因此能夠規(guī)定的是:所述讀取器側的交換和所述寫入器側的交換分別構成一種原子的操作(atomare Operation)。相應的實施形式是完全不同步的,從而保留了在虛擬機之間的最重要的時間分隔。
根據(jù)其它的方面能夠規(guī)定的是:所述等待緩沖器是一種在所述存儲器中由所述超級監(jiān)視器所管理的多個相同大小的等待緩沖器中的一個等待緩沖器,而且上述多個緩沖器構成了一種根據(jù)它們寫入器側的交換在時間上有序的等待隊列。所述變型方案考慮到了無空隙的數(shù)據(jù)流的要求:在此期望的是,所述正在讀取的虛擬機包含了一種不間斷的數(shù)據(jù)流,甚至當所述正在讀取的虛擬機暫時慢于所述正在寫入的虛擬機的時候。
根據(jù)另一方面能夠規(guī)定的是:所述超級監(jiān)視器被認為特別是在存儲器管理單元上(memory management unit,MMU),操控一種與所述存儲器相連的存儲器保護單元(memory protection unit,MPU),該存儲器管理單元通過所述第一虛擬機或所述第二虛擬機來保護所述讀取區(qū)域免于寫入訪問,而且保護所述等待區(qū)域免于寫入訪問以及讀取訪問;其中所述讀取器側的交換和所述寫入器側的交換借助于所述存儲器保護單元來進行。這種實施形式確保了:在虛擬機之間的在時間上和空間上的分隔不能夠由于在虛擬機之間在通訊的路途中惡意的或錯誤的行為而被損壞。
根據(jù)另一方面能夠規(guī)定的是:在所述讀取器側的交換之后,所述超級監(jiān)視器把所述被交換的讀緩沖器的關于所述存儲器的存儲地址返回地交付給所述第一虛擬機,并且在所述寫入器側的交換之后,所述超級監(jiān)視器把所述被交換的寫緩沖器的關于所述存儲器的存儲地址返回地交付給所述第二虛擬機。因此,所述數(shù)據(jù)傳輸就導致了盡可能少的執(zhí)行時間-額外花費,如同是該數(shù)據(jù)傳輸在待進行數(shù)據(jù)交換的緩沖器之間通過復制數(shù)據(jù)所導致的那樣。
根據(jù)另一方面能夠規(guī)定的是:所述第一虛擬機借助于所述返回交付的存儲器地址,根據(jù)第一調用指令,在所述讀取區(qū)域上繼續(xù)進行一種讀訪問,并且所述第二虛擬機借助于所述返回交付的存儲器地址,根據(jù)第二調用指令,在所述寫入?yún)^(qū)域上繼續(xù)進行一種寫訪問。在這種情況下,每個虛擬機如此長久地占用一種緩沖器:按照該虛擬機需要該緩沖器的時間并且因此該虛擬機在時間上與其它的虛擬機不相關聯(lián)。
最后能夠規(guī)定的是:所述第一虛擬機和所述第二虛擬機重復地進行所述讀訪問和所述寫訪問。在這種情況下,所述讀取器一直接收到帶有最新的無缺陷地被寫入的數(shù)據(jù)的緩沖器。當所述正在讀取的虛擬機的讀取平均地快于所述正在寫入的虛擬機對于數(shù)據(jù)流的寫入之時,則該數(shù)據(jù)流沒有空隙。
附圖說明
本發(fā)明的實施例展示在了附圖中,并且會在接下來的說明中進一步地闡述。附圖示出:
圖1:在第一實施形式的框架中使用的存儲器的框圖。
圖2:在第二實施形式的框架中使用的存儲器的框圖。
圖3:根據(jù)所述實施形式中的一種實施形式的方法的簡化序列圖。
圖4:示意性的根據(jù)本發(fā)明的第三實施方式的控制裝置。
具體實施方式
圖1和圖2示意性地圖解說明了一種用于在第一虛擬機11和第二虛擬機12之間在超級監(jiān)視器13下進行通信的、根據(jù)本發(fā)明的方法10。對此需要以下步驟:
如同在圖1中所展示的那樣,具有任意的但是相同的大小的讀緩沖器14、寫緩沖器15和等待緩沖器16。如同在根據(jù)圖2的場景中,所述等待緩沖器完全能夠指的是多個等待緩沖器17、18、19中的一個等待緩沖器,上述緩沖器共同構成一種等待隊列29(行列)。緩沖器14、15、16、17、18、19能夠位于存儲器20的任何一種中。通常,上述緩沖器位于隨機存取存儲器(random access memory, RAM)中。
在圖3中說明的、在緩沖器14、15、16、17、18、19上的訪問31、32通過存儲器管理單元或者其它的存儲器保護單元進行保護。上述存儲器保護單元僅僅通過一種超級監(jiān)視器13受到控制。
超級監(jiān)視器13通過下述方式設置所述存儲器保護單元:讀緩沖器14能夠被第一虛擬機11讀取,以及寫緩沖器15能夠被第二虛擬機12寫入。所有的等待存儲器16、17、18、19既不對第一虛擬機11也不對第二虛擬機12允許訪問。
第一虛擬機11和第二虛擬機12能夠讀取所述讀緩沖器14或者寫入所述寫緩沖器15,只要上述虛擬機需要上述緩沖器。
當進行寫入的第二虛擬機12結束了所述寫入訪問32時,第二虛擬機通過有關的應用程序編程接口(application programming interface, API)的第一調用指令24告知所述超級監(jiān)視器13。超級監(jiān)視器13從第二虛擬機12處收回在當前的寫緩沖器15上的寫入訪問32。代替于此,超級監(jiān)視器提供給第二虛擬機在未被占用的等待緩沖器19中的一個等待緩沖器上的寫入訪問32,所述等待緩沖器的數(shù)據(jù)已經(jīng)被讀取過了。超級監(jiān)視器通過重新設置所述存儲器保護單元而實現(xiàn)上述功能。最終,超級監(jiān)視器13通過所述應用程序編程接口把在答復第一調用程序24中僅可訪問的寫緩沖器15的存儲器地址33返回給第二虛擬機12。超級監(jiān)視器13確保進行所有作為原子的操作(atomare Operation)28的這些操作。
現(xiàn)在,進行寫入的所述第二虛擬機12有了新的寫緩沖器15,第二虛擬機能夠寫入該新的寫緩沖器。
當讀取的第一虛擬機11結束了讀取訪問31時,第一虛擬機通過所述的應用程序編程接口的第二調用指令25告知所述超級監(jiān)視器13。超級監(jiān)視器13從第一虛擬機11處收回在當前的讀緩沖器14上的寫入訪問31。代替于此,超級監(jiān)視器提供給第一虛擬機在等待緩沖器17上的讀取訪問31,所述等待緩沖器包含有最新的被寫入的數(shù)據(jù)。超級監(jiān)視器通過重新設置存儲器保護單元來實現(xiàn)上述功能。最終,超級監(jiān)視器13通過應用程序編程接口把在答復第二調用指令25中僅可訪問的讀緩沖器14的存儲器地址33返回交付給第一虛擬機11。所述超級監(jiān)視器13確保進行所有作為原子的操作28的這些操作。
現(xiàn)在,進行讀取的第一虛擬機11有了新的讀緩沖器14,第一虛擬機能夠從該新的讀緩沖器中讀取。
所述讀取訪問和寫入訪問32能夠在不確定的時間重復。
上述方法10能夠例如在軟件或者硬件或者在軟件和硬件的混合形式中(例如在控制裝置30中)實現(xiàn),如同在圖4中的示意性的示圖說明的那樣。