專利名稱:虛擬機(jī)監(jiān)視器、虛擬機(jī)系統(tǒng)及其時(shí)鐘分配使用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)虛擬化技術(shù),特別是一種虛擬機(jī)監(jiān)視器、虛擬機(jī)系 統(tǒng)及其時(shí)鐘分配^f吏用方法。
背景技術(shù):
使用虛擬化技術(shù)可以在同 一硬件平臺(tái)上同時(shí)運(yùn)行多個(gè)客戶操作系統(tǒng)
(Guest Operation System, GOS )和多個(gè)虛擬的CPU。
目前的計(jì)算機(jī)中的時(shí)間是由六種時(shí)鐘硬件提供的,而這些時(shí)鐘硬件又都基 于固定頻率的晶體振蕩器來(lái)提供時(shí)鐘方波信號(hào)輸入。不同的操作系統(tǒng)可以根據(jù) 自己的需要選擇合適的時(shí)鐘硬件作為自己的計(jì)時(shí)器。 現(xiàn)有的六種時(shí)鐘^_件如下所示,包括
高精度事件計(jì)時(shí)器(High Precision Event Timer, HPET),其是高精度的 時(shí)鐘,可以提供最多32個(gè)計(jì)時(shí)器,并且精度和效率都比其它時(shí)鐘高;
實(shí)時(shí)時(shí)鐘(Real Time Clock, RTC),通過(guò)主板上的電池來(lái)供電的,以便在 PC機(jī)斷電后仍然能夠繼續(xù)保持時(shí)間,其也稱作CMOS計(jì)時(shí)器;
可編程時(shí)間間隔計(jì)時(shí)器(Programmable Interval Timer, PIT),通過(guò)O號(hào)中 斷請(qǐng)求(Interrupt R叫uest, IRQ)產(chǎn)生周期性的時(shí)鐘中斷信號(hào);
電源管理時(shí)鐘(Power Manager Time, PMT);
局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器(Local apic Vector Table Timer, LVTT);和
時(shí)間戳計(jì)數(shù)器(Time Stamp Counter, TSC ),其為不斷增加的計(jì)數(shù)器,在 CPU的每個(gè)時(shí)鐘信號(hào)到來(lái)時(shí)加1,可通過(guò)匯編指令讀取TSC的值,利用CPU 的TSC,操作系統(tǒng)通常可以得到更為精準(zhǔn)的時(shí)間度量。
在現(xiàn)有的虛擬機(jī)系統(tǒng)中,虛擬機(jī)監(jiān)視器(Vitual Machine Monitor, VMM) 虛擬上述的所有的時(shí)鐘硬件后,所有的GOS共享這些虛擬的時(shí)鐘。
5由于VMM中這些時(shí)鐘是虛擬的,所以存在著計(jì)時(shí)不準(zhǔn),時(shí)間延遲的缺點(diǎn), 所以在虛擬機(jī)系統(tǒng)中給GOS提供精確的時(shí)鐘成為了虛擬機(jī)系統(tǒng)一個(gè)急待解決 的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的是提供一種虛擬機(jī)監(jiān)視器、虛擬機(jī)系統(tǒng)及其時(shí)鐘分配 使用方法,給虛擬機(jī)系統(tǒng)的GOS提供精確的時(shí)鐘。
為了實(shí)現(xiàn)上述目的,本發(fā)明的一個(gè)實(shí)施例提供一種虛擬機(jī)系統(tǒng)的時(shí)鐘分配 使用方法,包括如下步驟
分配真實(shí)時(shí)鐘資源給客戶操作系統(tǒng),并保存所述客戶才喿作系統(tǒng)與所述真實(shí) 時(shí)鐘資源的對(duì)應(yīng)關(guān)系;
攔截所述客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪問(wèn)操作;
根據(jù)所述對(duì)應(yīng)關(guān)系,將所述訪問(wèn)操作發(fā)送給對(duì)應(yīng)的真實(shí)時(shí)鐘資源,進(jìn)行寫(xiě) 操作,或?qū)⑺稣鎸?shí)時(shí)鐘資源的中斷注射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作 系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
本發(fā)明的另外一個(gè)實(shí)施例還提供一種虛擬機(jī)監(jiān)視器,包括
截獲模塊,用于截獲客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪問(wèn)操作;
對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給所述客戶操作系統(tǒng)分配不同的真實(shí)時(shí)鐘 資源,并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;
轉(zhuǎn)發(fā)模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系,將截獲的所述客戶4喿作系統(tǒng)對(duì)所述虛 擬時(shí)鐘資源的訪問(wèn)操作發(fā)送給所述真實(shí)時(shí)鐘資源中對(duì)應(yīng)的真實(shí)時(shí)鐘資源;
第 一 中斷注射模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系將所述真實(shí)時(shí)鐘資源的中斷注 射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中 斷控制器。
本發(fā)明的另一實(shí)施例還提供一種虛擬機(jī)系統(tǒng),包括客戶操作系統(tǒng)、虛擬機(jī) 監(jiān)視器和真實(shí)時(shí)鐘資源,其中,所述虛擬機(jī)監(jiān)視器包括
對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給所述客戶操作系統(tǒng)分配不同的真實(shí)時(shí)鐘 資源,并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;
轉(zhuǎn)發(fā)模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系,將截獲的所述客戶操作系統(tǒng)對(duì)所述虛第 一 中斷注射模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系將所述真實(shí)時(shí)鐘資源的中斷注 射到所述客戶搡作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中 斷控制器。
本發(fā)明的 一個(gè)或多個(gè)實(shí)施例至少具有以下有益效果
由于虛擬機(jī)監(jiān)視器為客戶操作系統(tǒng)分配不同的真實(shí)時(shí)鐘資源,并保存客戶
操作系統(tǒng)與真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系,所以客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪
問(wèn)操作會(huì)被虛擬機(jī)監(jiān)視器轉(zhuǎn)發(fā)給真實(shí)時(shí)鐘資源,進(jìn)而由真實(shí)時(shí)鐘資源為客戶操
作系統(tǒng)提供精確的時(shí)鐘服務(wù),進(jìn)而解決了現(xiàn)有技術(shù)中由虛擬時(shí)鐘導(dǎo)致的計(jì)時(shí)不 準(zhǔn)確的問(wèn)題。
圖1為本發(fā)明第一實(shí)施例的方法的流程示意圖2為本發(fā)明第一實(shí)施例的虛擬機(jī)系統(tǒng)的結(jié)構(gòu)示意圖3為本發(fā)明第二實(shí)施例的方法的流程示意圖4為本發(fā)明第三實(shí)施例的方法的流程示意圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例的虛擬機(jī)監(jiān)視器、虛擬機(jī)系統(tǒng)及其時(shí)鐘分配使用方法,預(yù)先 給虛擬機(jī)系統(tǒng)中的GOS分配真實(shí)硬件時(shí)鐘資源,進(jìn)而在GOS進(jìn)行時(shí)鐘讀寫(xiě)操 作時(shí),VMM對(duì)對(duì)應(yīng)的真實(shí)硬件時(shí)鐘資源進(jìn)行相應(yīng)處理。
下面結(jié)合附圖對(duì)本發(fā)明不同的實(shí)施例進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。
<第一實(shí)施例>
在背景技術(shù)中已經(jīng)提到,HPET是高精度的時(shí)鐘,其可以提供最多32個(gè) 計(jì)時(shí)器,并且精度和效率都比其它時(shí)鐘高,因此,在本發(fā)明的第一實(shí)施例中使 用HPET中的計(jì)時(shí)器作為GOS的時(shí)鐘。
如圖1所示,本發(fā)明的第一實(shí)施例的虛擬機(jī)系統(tǒng)的時(shí)鐘分配使用方法包括 如下步驟
時(shí)鐘分配步驟ll,虛擬機(jī)監(jiān)視器給GOS分配不同的真實(shí)HPET的計(jì)時(shí)器,并保存GOS與HPET計(jì)時(shí)器的對(duì)應(yīng)關(guān)系;
時(shí)鐘使用步驟12, GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的內(nèi)存映射輸 入輸出(Memory Map Input and Output, MMIO)訪問(wèn)才喿作凈皮VMM攔截后, 根據(jù)GOS與HPET計(jì)時(shí)器的對(duì)應(yīng)關(guān)系,將MMIO訪問(wèn)操作發(fā)送給對(duì)應(yīng)的HPET 計(jì)時(shí)器,對(duì)HPET計(jì)時(shí)器進(jìn)行寫(xiě)操作或?qū)⒄鎸?shí)HPET計(jì)時(shí)器的中斷注射到對(duì)應(yīng) GOS的虛擬CPU的局部先進(jìn)可編程中斷控制器。
利用CPU的TSC,操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度量,因此, 本發(fā)明第 一 實(shí)施例的方法還包括
步驟13, GOS對(duì)虛擬的TSC的訪問(wèn)操作被VMM攔截后,VMM通過(guò)rdtscll 指令讀取真實(shí)CPU的TSC后,將其注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn) 可編程中斷控制器。
其中步驟11中保存的GOS與HPET計(jì)時(shí)器的對(duì)應(yīng)關(guān)系可通過(guò)內(nèi)存的偏移 地址或是其它參數(shù)來(lái)表現(xiàn)。
本發(fā)明第 一實(shí)施例的虛擬機(jī)系統(tǒng)包括一個(gè)或多個(gè)GOS, VMM和真實(shí)時(shí)鐘 資源,其中,如圖2所示,該VMM中包括
對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給GOS分配不同的真實(shí)HPET的計(jì)時(shí)器, 并保存對(duì)應(yīng)的GOS與HPET計(jì)時(shí)器的對(duì)應(yīng)關(guān)系;
截獲模塊,用于截獲GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的MMIO 訪問(wèn)操作;
轉(zhuǎn)發(fā)模塊,用于根據(jù)GOS與HPET計(jì)時(shí)器的對(duì)應(yīng)關(guān)系,將截獲的MMIO 訪問(wèn)操作發(fā)送給對(duì)應(yīng)的HPET計(jì)時(shí)器;
第一中斷注射模塊,用于將真實(shí)HPET計(jì)時(shí)器的中斷注射到對(duì)應(yīng)GOS的 虛擬CPU的局部先進(jìn)可編程中斷控制器。
當(dāng)然,在利用CPU的TSC,使操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度 量的情況下,本發(fā)明的VMM中還包括TSC獲取模塊和第二中斷注射模塊, 其中-.
該截獲模塊截獲GOS對(duì)虛擬的TSC的訪問(wèn)操作;
該TSC獲取模塊用于通過(guò)rdtscll指令讀取真實(shí)CPU的TSC;
該第二中斷注射模塊用于將真實(shí)CPU的TSC注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn)可編程中斷控制器。 <第二實(shí)施例>
在本發(fā)明的第一實(shí)施例中使用HPET中的計(jì)時(shí)器作為GOS的時(shí)鐘,但真 實(shí)的時(shí)鐘資源還包括RTC、 PIT、 PMT和LVTT等,因此,在本發(fā)明的第二實(shí) 施例中,以使用HPET、 RTC、 PIT、 PMT和LVTT作為GOS的時(shí)鐘進(jìn)行詳細(xì) 說(shuō)明。
如圖3所示,本發(fā)明的第二實(shí)施例的虛擬機(jī)系統(tǒng)的時(shí)鐘分配使用方法包括 如下步驟
步驟21,虛擬機(jī)監(jiān)視器給GOS分配HPET、 RTC、 PIT、 PMT和LVTT, 并保存對(duì)應(yīng)的GOS與HPET、 RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系;
步驟22, GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的內(nèi)存映射輸入輸出 (Memory Map Input and Output, MMIO )訪問(wèn)操作被VMM攔截后,根據(jù)GOS 與HPET、 RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系,將MMIO訪問(wèn)才喿作發(fā)送給 HPET、 RTC、 PIT、 PMT或LVTT,對(duì)HPET、 RTC、 PIT、 PMT或LVTT進(jìn) 行寫(xiě)操作,或?qū)PET、 RTC、 PIT、 PMT或LVTT的中斷注射到對(duì)應(yīng)GOS的 虛擬CPU的局部先進(jìn)可編程中斷控制器。
由于利用CPU的TSC,操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度量,因 此,本發(fā)明第二實(shí)施例的方法還包括
步驟23 , GOS對(duì)虛擬的TSC的訪問(wèn)操作被VMM攔截后,VMM通過(guò)rdtscll 指令讀取真實(shí)CPU的TSC后,將其注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn) 可編程中斷控制器。
由于HPET、 RTC、 PIT、 PMT和LVTT這些真實(shí)時(shí)鐘資源之間的精度的 不同,在分配時(shí)可以將精度較高的真實(shí)時(shí)鐘資源分配給優(yōu)先級(jí)較高的GOS, 如那些對(duì)時(shí)間比較的敏感的GOS (如windows )或應(yīng)用可以分配HPET,而其 他要求相對(duì)較低的可以分配RTC、 PIT、 PMT或LVTT。
然而,在使用HPET、 RTC、 PIT、 PMT和LVTT這些真實(shí)時(shí)鐘資源時(shí), 由于一個(gè)GOS使用HPET時(shí),會(huì)向偏移量為0x10的寄存器執(zhí)行寫(xiě)操作,停止 主板上真實(shí)的RTC和PIT的工作,所以在本發(fā)明的第二實(shí)施例中,還包括
步驟24, VMM攔截GOS對(duì)HPET的偏移量為0x10的寄存器的寫(xiě)操作。攔截該操作后,RTC和PIT就不會(huì)停止工作,而可以為其他GOS提供真 實(shí)時(shí)鐘資源。
觀
是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)所
可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括如下步驟
步驟21,虛擬機(jī)監(jiān)視器給GOS分配HPET、 RTC、 PIT、 PMT和LVTT, 并保存對(duì)應(yīng)的GOS與HPET、 RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系;
步驟22, GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的內(nèi)存映射輸入輸出 (Memory Map Input and Output, MMIO )訪問(wèn)操作被VMM攔截后,根據(jù)GOS 與HPET、 RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系,將MMIO訪問(wèn)操作發(fā)送給 HPET、 RTC、 PIT、 PMT或LVTT,對(duì)HPET、 RTC、 PIT、 PMT或LVTT進(jìn) 行寫(xiě)操作,或?qū)PET、 RTC、 PIT、 PMT或LVTT的中斷注射到對(duì)應(yīng)GOS的 虛擬CPU的局部先進(jìn)可編程中斷控制器。
由于利用CPU的TSC,操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度量,因 此,本發(fā)明第二實(shí)施例的方法還包括
步驟23,GOS對(duì)虛擬的TSC的訪問(wèn)操作被VMM攔截后,VMM通過(guò)rdtscll 指令讀取真實(shí)CPU的TSC后,將其注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn) 可編程中斷控制器。
由于HPET、 RTC、 PIT、 PMT和LVTT這些真實(shí)時(shí)鐘資源之間的精度的 不同,在分配時(shí)可以將精度較高的真實(shí)時(shí)鐘資源分配給優(yōu)先級(jí)較高的GOS, 如那些對(duì)時(shí)間比較的敏感的GOS (如windows )或應(yīng)用可以分配HPET,而其 他要求相對(duì)較低的可以分配RTC、 PIT、 PMT或LVTT。
然而,在使用HPET、 RTC、 PIT、 PMT和LVTT這些真實(shí)時(shí)鐘資源時(shí), 由于一個(gè)GOS使用HPET時(shí),會(huì)向偏移量為0x10的寄存器執(zhí)行寫(xiě)操作,停止 主板上真實(shí)的RTC和PIT的工作,所以在本發(fā)明的第二實(shí)施例中,還包括
步驟24, VMM攔截GOS對(duì)HPET的偏移量為0x10的寄存器的寫(xiě)操作。
攔截該操作后,RTC和PIT就不會(huì)停止工作,而可以為其他GOS提供真 實(shí)時(shí)鐘資源。
所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁碟、光盤(pán)等。
10本發(fā)明第二實(shí)施例的虛擬機(jī)系統(tǒng)包括一個(gè)或多個(gè)GOS, VMM和真實(shí)時(shí)鐘 資源,其中,該VMM中包括
對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給GOS分配不同的HPET、 RTC、 PIT、 PMT和LVTT,并保存對(duì)應(yīng)的GOS與HPET、 RTC、 PIT、 PMT和LVTT的對(duì) 應(yīng)關(guān)系;
第一截獲模塊,用于截獲GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的 MMIO訪問(wèn)才喿作;
轉(zhuǎn)發(fā)模塊,用于根據(jù)GOS與HPET、 RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān) 系,將截獲的MMIO訪問(wèn)才喿作發(fā)送給對(duì)應(yīng)的HPET、 RTC、 PIT、 PMT或LVTT;
第一中斷注射模塊,用于根據(jù)對(duì)應(yīng)關(guān)系將HPET、 RTC、 PIT、 PMT或LVTT 的中斷注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn)可編程中斷控制器;
攔截模塊,用于攔截GOS對(duì)偏移量為0x10的寄存器的寫(xiě)操作。
當(dāng)然,在利用CPU的TSC,使操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度 量的情況下,本發(fā)明的VMM中還包括TSC獲取模塊和第二中斷注射模塊, 其中
該第一截獲模塊還用于截獲GOS對(duì)虛擬的TSC的訪問(wèn)操作; 該TSC獲取模塊用于通過(guò)rdtscll指令讀取真實(shí)CPU的TSC; 該第二中斷注射模塊用于將真實(shí)CPU的TSC注射到對(duì)應(yīng)GOS的虛擬CPU 的局部先進(jìn)可編程中斷控制器。 <第三實(shí)施例>
在本發(fā)明的第一實(shí)施例和第二實(shí)施例中分別使用HPET中的計(jì)時(shí)器和真 實(shí)時(shí)鐘資源作為GOS的時(shí)鐘,在本發(fā)明的第三實(shí)施例中,以使用HPET的計(jì) 時(shí)器、RTC、 PIT、 PMT和LVTT作為GOS的時(shí)鐘進(jìn)行詳細(xì)說(shuō)明。
為方便說(shuō)明,在此,將HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和LVTT命名
為第三時(shí)鐘資源。
如圖4所示,本發(fā)明的第三實(shí)施例的虛擬機(jī)系統(tǒng)的時(shí)鐘分配使用方法包括 如下步驟
時(shí)鐘分配步驟31 ,虛擬機(jī)監(jiān)視器給GOS分配HPET的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT,并保存對(duì)應(yīng)的GOS與HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系;
時(shí)鐘使用步驟32, GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的內(nèi)存映射輸 入輸出(Memory Map Input and Output, MMIO )訪問(wèn)才喿作尋皮VMM攔截后, 根據(jù)GOS與HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和LVTT的對(duì)應(yīng)關(guān)系,將MMIO 訪問(wèn)操作發(fā)送給對(duì)應(yīng)的HPET的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT,對(duì)HPET 的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT進(jìn)行寫(xiě)操作,或?qū)PET的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT的中斷注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn)可編程中 斷控制器。
由于利用CPU的TSC,操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度量,因 此,本發(fā)明第三實(shí)施例的方法還包括
步驟33,GOS對(duì)虛擬的TSC的訪問(wèn)操作被VMM攔截后,VMM通過(guò)rdtscll 指令讀取真實(shí)CPU的TSC后,將其注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn) 可編程中斷控制器。
與第二實(shí)施例類似,第三實(shí)施例的方法也包括VMM攔截GOS對(duì)HPET 的偏移量為0x10的寄存器的寫(xiě)操作的步驟。
由于HPET、 RTC、 PIT、 PMT和LVTT這些真實(shí)時(shí)鐘資源之間的精度的 不同,在分配時(shí)可以將精度較高的真實(shí)時(shí)鐘資源分配給優(yōu)先級(jí)較高的GOS, 如那些對(duì)時(shí)間比4交的壽丈感的GOS (如windows)或應(yīng)用可以分配HPET,而其 他要求相對(duì)較低的可以分配RTC、 PIT、 PMT或LVTT。
本發(fā)明第三實(shí)施例的虛擬機(jī)系統(tǒng)包括一個(gè)或多個(gè)GOS, VMM和真實(shí)時(shí)鐘 資源,其中,該VMM中包括
對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給GOS分配HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和LVTT,并保存對(duì)應(yīng)的GOS與HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和 LVTT的對(duì)應(yīng)關(guān)系;
截獲模塊,用于截獲GOS對(duì)虛擬的TSC以外的虛擬時(shí)鐘資源的MMIO 訪問(wèn)操作;
轉(zhuǎn)發(fā)模塊,用于根據(jù)GOS與HPET的計(jì)時(shí)器、RTC、 PIT、 PMT和LVTT 的對(duì)應(yīng)關(guān)系,將截獲的MMIO訪問(wèn)操作發(fā)送給對(duì)應(yīng)的HPET的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT;第 一 中斷注射模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系將HPET的計(jì)時(shí)器、RTC、 PIT、 PMT或LVTT的中斷注射到對(duì)應(yīng)GOS的虛擬CPU的局部先進(jìn)可編程中斷控 制器;
攔截模塊,用于攔截GOS對(duì)偏移量為0x10的寄存器的寫(xiě)操作。
當(dāng)然,在利用CPU的TSC,使操作系統(tǒng)通??梢缘玫礁鼮榫珳?zhǔn)的時(shí)間度
量的情況下,本發(fā)明的VMM中還包括TSC獲取模塊和第二中斷注射模塊,
其中
該截獲^^莫塊還用于截獲GOS對(duì)虛擬的TSC的訪問(wèn)4喿作;
該TSC獲取模塊用于通過(guò)rdtscll指令讀取真實(shí)CPU的TSC;
該第二中斷注射模塊用于將真實(shí)CPU的TSC注射到對(duì)應(yīng)GOS的虛擬CPU 的局部先進(jìn)可編程中斷控制器。
以上所述僅是本發(fā)明的實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù) 人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些 改進(jìn)和潤(rùn)飾也應(yīng)^L為本發(fā)明的保護(hù)范圍。
1權(quán)利要求
1. 一種虛擬機(jī)系統(tǒng)的時(shí)鐘分配使用方法,其特征在于,包括如下步驟分配真實(shí)時(shí)鐘資源給客戶操作系統(tǒng),并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;攔截所述客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪問(wèn)操作;根據(jù)所述對(duì)應(yīng)關(guān)系,將所述訪問(wèn)操作發(fā)送給對(duì)應(yīng)的真實(shí)時(shí)鐘資源,進(jìn)行寫(xiě)操作,或?qū)⑺稣鎸?shí)時(shí)鐘資源的中斷注射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括步驟 讀取真實(shí)CPU的時(shí)間戳計(jì)數(shù)器;將所述時(shí)間戳計(jì)數(shù)器注射到所述客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可 編程中斷控制器。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述讀取真實(shí)CPU的時(shí)間 戳計(jì)數(shù)器具體為通過(guò)rdtsdl指令讀取真實(shí)CPU的時(shí)間戳計(jì)數(shù)器。
4. 根據(jù)權(quán)利要求l、 2或3所述的方法,其特征在于,所述真實(shí)時(shí)鐘資源 為以下三種情況之一高精度事件計(jì)時(shí)器中的計(jì)時(shí)器;或高精度事件計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源管理時(shí)鐘和 局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器;或高精度事件計(jì)時(shí)器中的計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源 管理時(shí)鐘和局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述真實(shí)時(shí)鐘資源為實(shí)時(shí) 時(shí)鐘或可編程時(shí)間間隔計(jì)時(shí)器其中之一時(shí),該方法還包括步驟攔截所述客戶操作系統(tǒng)對(duì)所述高精度事件計(jì)時(shí)器的偏移量為0x10的寄存 器的寫(xiě)搡作。
6. —種虛擬機(jī)監(jiān)視器,包括截獲模塊,用于截獲客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪問(wèn)操作; 其特征在于,還包括對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給所述客戶操作系統(tǒng)分配不同的真實(shí)時(shí)鐘資源,并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;轉(zhuǎn)發(fā)模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系,將截獲的所述客戶操作系統(tǒng)對(duì)所述虛擬時(shí)鐘資源的訪問(wèn)操作發(fā)送給所述真實(shí)時(shí)鐘資源中對(duì)應(yīng)的真實(shí)時(shí)鐘資源;第 一 中斷注射模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系將所述真實(shí)時(shí)鐘資源的中斷注射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
7. 根據(jù)權(quán)利要求6所述的虛擬機(jī)監(jiān)視器,其特征在于,所述虛擬機(jī)監(jiān)視 器還包括第二中斷注射模塊,用于將真實(shí)CPU的時(shí)間戳計(jì)數(shù)器注射到所述客戶操 作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
8. 根據(jù)權(quán)利要求6或7所述的虛擬機(jī)監(jiān)視器,其特征在于,所述真實(shí)時(shí) 鐘資源為以下三種情況之一高精度事件計(jì)時(shí)器中的計(jì)時(shí)器;或高精度事件計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源管理時(shí)鐘和 局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器;或高精度事件計(jì)時(shí)器中的計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源 管理時(shí)鐘和局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器。
9. 根據(jù)權(quán)利要求8所述的虛擬機(jī)監(jiān)視器,其特征在于,所述真實(shí)時(shí)鐘資 源為實(shí)時(shí)時(shí)鐘和可編程時(shí)間間隔計(jì)時(shí)器其中之一時(shí),還包括攔截模塊,用于攔截所述客戶操作系統(tǒng)對(duì)高精度事件計(jì)時(shí)器的偏移量為 0xl0的寄存器的寫(xiě)操作。
10. —種虛擬機(jī)系統(tǒng),包括客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器和真實(shí)時(shí)鐘資源, 其特征在于,所述虛擬機(jī)監(jiān)視器包括對(duì)應(yīng)關(guān)系設(shè)置及保存模塊,用于給所述客戶操作系統(tǒng)分配不同的真實(shí)時(shí)鐘 資源,并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;轉(zhuǎn)發(fā)模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系,將截獲的所述客戶操作系統(tǒng)對(duì)所述虛 擬時(shí)鐘資源的訪問(wèn)操作發(fā)送給所述真實(shí)時(shí)鐘資源中對(duì)應(yīng)的真實(shí)時(shí)鐘資源;第一中斷注射模塊,用于根據(jù)所述對(duì)應(yīng)關(guān)系將所述真實(shí)時(shí)鐘資源的中斷注射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
11. 根據(jù)權(quán)利要求10所述的虛擬機(jī)系統(tǒng),其特征在于,所述虛擬機(jī)監(jiān)視 器還包括第二中斷注射模塊,用于將真實(shí)CPU的時(shí)間戳計(jì)數(shù)器注射到所述客戶操 作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。
12. 根據(jù)權(quán)利要求10或11所述的虛擬機(jī)系統(tǒng),其特征在于,所述真實(shí)時(shí) 鐘資源為以下三種情況之一高精度事件計(jì)時(shí)器中的計(jì)時(shí)器;或高精度事件計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源管理時(shí)鐘和 局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器;或高精度事件計(jì)時(shí)器中的計(jì)時(shí)器、實(shí)時(shí)時(shí)鐘、可編程時(shí)間間隔計(jì)時(shí)器、電源 管理時(shí)鐘和局部先進(jìn)可編程中斷控制器向量表計(jì)時(shí)器。
13. 根據(jù)權(quán)利要求12所述的虛擬機(jī)監(jiān)視器,其特征在于,所述真實(shí)時(shí)鐘 資源為實(shí)時(shí)時(shí)鐘和可編程時(shí)間間隔計(jì)時(shí)器其中之一時(shí),還包括攔截模塊,用于攔截所述客戶操作系統(tǒng)對(duì)高精度事件計(jì)時(shí)器的偏移量為 0xl0的寄存器的寫(xiě)操作。
全文摘要
本發(fā)明公開(kāi)了一種虛擬機(jī)監(jiān)視器、虛擬機(jī)系統(tǒng)及其時(shí)鐘分配使用方法,其中該方法包括步驟分配真實(shí)時(shí)鐘資源給客戶操作系統(tǒng),并保存所述客戶操作系統(tǒng)與所述真實(shí)時(shí)鐘資源的對(duì)應(yīng)關(guān)系;攔截所述客戶操作系統(tǒng)對(duì)虛擬時(shí)鐘資源的訪問(wèn)操作;根據(jù)所述對(duì)應(yīng)關(guān)系,將所述訪問(wèn)操作發(fā)送給對(duì)應(yīng)的真實(shí)時(shí)鐘資源,進(jìn)行寫(xiě)操作,或?qū)⑺稣鎸?shí)時(shí)鐘資源的中斷注射到所述客戶操作系統(tǒng)中對(duì)應(yīng)客戶操作系統(tǒng)的虛擬CPU的局部先進(jìn)可編程中斷控制器。本發(fā)明給客戶操作系統(tǒng)提供了精確的時(shí)鐘。
文檔編號(hào)G06F9/445GK101441498SQ200710177659
公開(kāi)日2009年5月27日 申請(qǐng)日期2007年11月19日 優(yōu)先權(quán)日2007年11月19日
發(fā)明者偉 宋 申請(qǐng)人:聯(lián)想(北京)有限公司