專利名稱:用于檢測圖像信息的更新的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于檢測由在虛擬機上運行的應(yīng)用程序等寫入的圖 像信息的更新的裝置和方法。
背景技術(shù):
近年來,實現(xiàn)了由單一硬件操作多個虛擬機的虛擬機環(huán)境。例如,
已知Xen ( http:〃xen.org/)和VMWare ( http:〃vmware.com/)作為 軟件來控制虛擬機的執(zhí)行。
在虛擬機環(huán)境中,多個子操作系統(tǒng)(guest OS)在虛擬機監(jiān)視器 (VMM)上運行。VMM對子OS對硬件資源的訪問進行仲裁。 一般 地,VMM控制對作為共享資源的網(wǎng)卡等的訪問,但不參與子OS對 被分配給每個子OS的圖形存儲器等的訪問。因此,當屏幕被更新時, 子OS在圖形存儲器中描繪圖像信息,VMM需要根據(jù)圖像信息來更 新屏幕。但是,由于VMM不參與子OS對圖形存儲器的訪問,因此 子OS的描繪事件不會傳遞到VMM。因此,VMM需要具有檢測子 OS的描繪結(jié)束和更新屏幕的功能。
VMM響應(yīng)于從子OS接收到通知來更新屏幕的方式包括以下兩 種方法
(1)在沒有來自子OS的明確通知的情況下,VMM檢測屏幕更新。
(2 )從子OS向VMM明確通知屏幕更新。
例如,方法(l)用于Xen。具體地,用于Xen的技術(shù)是在不改 變子OS的情況下,使用定時器從VMM向子OS進行輪詢,檢查屏 幕是否被更新。
而方法(2)用于VMWare。具體地,用于VMWare的技術(shù)是
4改變子OS的視頻驅(qū)動器,在描繪的斷點從子OS的視頻驅(qū)動器向 VMM發(fā)出屏幕更新的通知。
但是,在方法(1)中,沒有檢測出在圖形存儲器中完成描繪的 定時,這會導(dǎo)致描繪途中的圖像將被顯示。而且,在方法(2)中, 需要根據(jù)虛擬機環(huán)境來改變子OS的視頻驅(qū)動器,從而缺乏通用性。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種用于檢測圖像信息的更新的裝 置。該裝置包括圖像存儲單元,存儲圖像信息;處理器,在事先設(shè) 定的轉(zhuǎn)變條件被滿足時,從使子操作系統(tǒng)進行操作的第一模式轉(zhuǎn)變到 使管理該子操作系統(tǒng)的虛擬機監(jiān)視器進行操作的第二模式;判定單 元,當處理器轉(zhuǎn)變到第二模式時,判定該轉(zhuǎn)變的原因;以及檢測單元, 當判定單元判定原因是在子操作系統(tǒng)上執(zhí)行了與在圖像存儲單元中 寫入圖像信息的完成有關(guān)的處理時,檢測表示圖像信息在寫入前后不 一致的部分的更新部分。
根據(jù)本發(fā)明的另 一個方面,提供一種用于檢測圖像信息的更新的 方法。該方法包括當處理器轉(zhuǎn)變到第二模式時,判定該轉(zhuǎn)變的原因, 其中,該處理器在事先設(shè)定的轉(zhuǎn)變條件被滿足時,從使子操作系統(tǒng)進 行操作的第 一模式轉(zhuǎn)變到使管理該子操作系統(tǒng)的虛擬機監(jiān)視器進行 操作的第二模式;以及當判定原因是在子操作系統(tǒng)上執(zhí)行了與在圖像
存儲單元中寫入圖像信息的完成有關(guān)的處理時,檢測表示圖像信息在 寫入前后不一致的部分的更新部分。
圖l是使用單一緩沖的顯示屏幕的例子的示意圖。
圖2是基于切換指針的方法的雙緩沖的概要的示意圖。
圖3是本發(fā)明第一實施方式的圖像處理裝置的框圖。
圖4是圖像寫入處理和更新部分檢測處理的概要的示意圖。
圖5是更新部分檢測處理的流程圖。圖6是第一實施方式的變形的圖像處理裝置的框圖。 圖7是本發(fā)明第二實施方式的圖像處理裝置的框圖。 圖8是第二實施方式的斷點設(shè)定處理的流程圖。 圖9是調(diào)試寄存器的結(jié)構(gòu)例的示意圖。 圖IO是另一調(diào)試寄存器的結(jié)構(gòu)例的示意圖。 圖ll是又一調(diào)試寄存器的結(jié)構(gòu)例的示意圖。 圖12是第二實施方式的更新部分檢測處理的流程圖。 圖13是用于說明第一或第二實施方式的圖像處理裝置的硬件結(jié) 構(gòu)的示意圖。
具體實施例方式
以下參照附圖詳細說明本發(fā)明的示例性實施方式。
本發(fā)明第一實施方式的圖像處理裝置包括在硬件水平上支持虛 擬化的處理器和執(zhí)行在描繪完成時訪問預(yù)定的寄存器的函數(shù)的視頻 驅(qū)動器。處理器被設(shè)置成在訪問了預(yù)定的寄存器時,控制移動到 VMM,這使得VMM能夠檢測描繪完成。然后,圖像處理裝置響應(yīng) 于檢測到描繪完成,執(zhí)行圖像信息的更新部分檢測處理。
以往的VMM使用軟件來執(zhí)行虛擬化處理。但是,通過利用作為 硬件的處理器和芯片組來支持虛擬化,虛擬化的負荷被認為可以減 小。因特爾虛擬化技術(shù)(Intel VT)或超微半導(dǎo)體公司的安全虛擬機 (AMDSVM)等具有虛擬支持功能的處理器開始被提供。第一實施 方式假定使用具有硬件虛擬化支持功能的處理器。
以下說明具有硬件虛擬化支持功能的處理器的概要。
在處理器中設(shè)置"子模式"作為新的操作模式,該模式允許單個處 理器同時執(zhí)行多個OS。子OS在子模式下運行。處理器中還設(shè)置了虛 擬化專用命令集。例如,處理器在進入子模式時執(zhí)行VM Entry命令, 在退出子模式時執(zhí)行VMExit命令。處理器退出子模式,從而模式轉(zhuǎn) 換到VMM在其中運行的、被稱為"主模式"的模式。
當啟動了子OS時執(zhí)行VM Entry。而當發(fā)生了將處理從子OS返回到VMM的條件時,例如當子OS發(fā)出特權(quán)命令時,或者當從輸 入/輸出(1/0)發(fā)生中斷時,執(zhí)行VMExit。
使用子OS控制結(jié)構(gòu)(Intel VT的情況下稱為虛擬機控制結(jié)構(gòu) (VMCS) 、 AMDSVM的情況下稱為虛擬機控制塊(VMCB))來 控制子OS。在子OS控制結(jié)構(gòu)中例如描述了將處理從子OS返回到 VMM的條件。
以下說明第一實施方式中使用的視頻驅(qū)動器的概要。在第一實施 方式中,使用支持DirectFB的視頻驅(qū)動器作為子OS的視頻驅(qū)動器。 在圖形卡支持多緩沖(后述)時,DirectFB的視頻驅(qū)動器包括在描繪 完成時在緩沖器之間進行切換的"FlipRegion"函數(shù)。
更具體地,F(xiàn)HpRegion函數(shù)在圖形卡支持多緩沖時發(fā)出。在虛擬 機環(huán)境中,當模擬圖形卡的模擬器單元141 (后述)支持多緩沖時, 執(zhí)行FlipRegion函數(shù)。當執(zhí)行了 FlipRegion函數(shù)時,訪問指定顯示 緩沖器(后述)的地址(顯示開始地址)的寄存器。
在第一實施方式中,通過將子OS控制結(jié)構(gòu)設(shè)定成如果進行了對 寄存器的訪問則處理器將處理移動到VMM,從而響應(yīng)于描繪完成來 執(zhí)行圖像信息的更新部分檢測處理。利用該操作,可以在完成描繪的 定時檢測出更新部分,可以輸出最新的圖像,從而能夠防止輸出描繪 途中的圖像或不完整的圖像。而且,不需要改變DirectFB的視頻驅(qū) 動器本身,從而可以提高通用性。
以下說明多緩沖的細節(jié)。多緩沖是與僅使用一個幀緩沖器的單一 緩沖不同,使用多個緩沖器(顯示緩沖器和描繪緩沖器)來描繪圖像 信息的方法。注意,顯示開始地址表示顯示緩沖器的初始地址。
在單一緩沖中,由于不區(qū)分描繪緩沖器和顯示緩沖器,描繪的過 程出現(xiàn)在顯示屏幕上,從而導(dǎo)致屏幕閃爍。如圖1所示,在單一緩沖 的情況下,描繪的過程在屏幕上是可見的。
為了防止屏幕閃爍,使用被稱為多緩沖的技術(shù),例如使用兩個緩 沖器的雙緩沖和使用三個緩沖器的三緩沖。
在多緩沖中,圖像信息不直接描繪到顯示緩沖器中,而是在完成
7了整個圖像信息向描繪緩沖器中的描繪后,將圖像信息傳送到顯示緩
沖器中。多緩沖包括以下方法固定顯示緩沖器并將描繪從完成了描 繪的描繪緩沖器復(fù)制到顯示緩沖器的方法,以及在完成了描繪時在顯 示緩沖器與描繪緩沖器的指針之間進行切換的方法。在三緩沖中,三 個緩沖器中的一個被用作顯示緩沖器,其余的被用作描繪緩沖器。
如圖2所示,圖像信息沒有被描繪到顯示緩沖器21中,直到完 成了向描繪緩沖器22的描繪。當完成了向描繪緩沖器22的描繪時, 通過在指針之間進行切換,將描繪緩沖器22變成新的顯示緩沖器24, 并將顯示緩沖器21變成新的描繪緩沖器23。從而,在屏幕上能夠始 終顯示完成了描繪的圖像信息。
如圖3所示,圖像處理裝置100包括硬件110,作為利用硬件110 來發(fā)揮作用的軟件結(jié)構(gòu),還包括VMM120、子OS 130、控制OS140 和應(yīng)用程序150。盡管在圖3中僅示出一個子OS 130,可以在VMM 120上執(zhí)行多個子OS130。這種情況下,針對每個子OS設(shè)置后述的 幀緩沖器區(qū)域、顯示開始地址寄存器區(qū)域、備份存儲單元、模擬器單 元、檢測器和存儲在條件存儲單元中的子OS控制結(jié)構(gòu)。
首先參照圖3說明虛擬化技術(shù)的概要。如上所述,在虛擬機環(huán)境 中,子OS 130在VMM 120上運行。VMM 120對子OS 130對共享 硬件資源的訪問進行仲裁。
子OS 130操作虛擬機環(huán)境??刂芆S 140被允許控制子OS 130, 并且執(zhí)行啟動子OS 130和代替子OS 130來訪問共享硬件資源的處 理。
應(yīng)用程序150是在子OS 130上運行的程序,提供各種處理。一 個子OS 130和在子OS 130上運行的應(yīng)用程序150能夠?qū)崿F(xiàn)一個虛擬 機環(huán)境。
以下詳細說明各組成部分。
硬件110包括處理器111、條件存儲單元112、備份存儲單元113、 圖形卡114、幀緩沖器區(qū)域115a和顯示開始地址寄存器區(qū)域115b。 盡管在圖3中被省略,硬件110可以包括只讀存儲器(ROM)和通信接口 (I/F)等硬件資源。
處理器111包括Intel VT或AMD SVM等硬件虛擬化支持功能。 條件存儲單元112在其中存儲包含將處理從子OS 130返回到VMM 120的條件的子OS控制結(jié)構(gòu)。
以下說明設(shè)定條件存儲單元112中存儲的子OS控制結(jié)構(gòu)的具體 方法。在第一實施方式中,通過以下述方式設(shè)定子OS控制結(jié)構(gòu),來 檢測出經(jīng)由存儲器映射輸入輸出(MMIO)對寄存器的訪問。
以下首先說明設(shè)定Intel VT的VMCS的例子,在這種情況下, 使用作為VMCS中的VM-Exit控制區(qū)域的"Primary Processor-Based VM誦Execution Controls"和"I/O-Bitmap",并且使用作為其中的 VM-Exit信息區(qū)域的"Exit Reason"和"Exit Qualification"。
更具體地,將"Primary Processor-Based VM-Execution Controls"的第25位的"Usel/0-bitmaps"設(shè)定為"l"。然后,將對應(yīng)于 I/O端口號的"I/0-Bitmap"的位設(shè)定為"l", I/O端口號對應(yīng)于要檢測 訪問的寄存器。
因此,當訪問了要檢測的寄存器時發(fā)生VMExit。在該例子中, 在VM Exit信息區(qū)域中,"Exit Reason"的0 ~ 15位(M Exit的原因) 成為30, "Exit Qualification"的16 ~ 31位(端口號)成為對應(yīng)的端 口號。通過參照這些信息,VMM 120能夠判定發(fā)生了由于對要檢測 的寄存器的訪問而引起的VMExit。
以下接著說明設(shè)定AMD SVM的VMCB的例子。這種情況下, 使用作為VMCB的控制區(qū)的"I/0 Permission Map"、 "Exception Bitmap" 、 "EXITCODE"和"EXITINFOl"。
更具體地,將對應(yīng)于I/O端口號的、VMCB的字節(jié)偏移"040h" ("h"表示十六進制)處的"I/0 Permission Map"的位設(shè)定為"l", I/O 端口號對應(yīng)于要檢測訪問的寄存器。
從而,當訪問了要檢測的寄存器時,發(fā)生VMExit。在該例子中, "EXITCODE"成為"7Bh", "EXITINFOl"的16~31位成為對應(yīng)的端 口號。通過參照這些信息,VMM 120能夠判定發(fā)生了由于對要檢測的寄存器的訪問引起的VM Exit。
備份存儲單元113可以在其中存儲幀緩沖器114a (后述)中所 存儲的整個圖像信息的備份數(shù)據(jù)。
圖形卡114是具有圖像描繪功能的擴展卡,包括幀緩沖器114a 和顯示開始地址寄存器114b。
幀緩沖器114a是在其中存儲對應(yīng)于子OS 130的屏幕的一個屏幕 的圖像信息的存儲單元。顯示開始地址寄存器114b在其中存儲顯示 開始地址。
條件存儲單元112、備份存儲單元113、幀緩沖器區(qū)域115a、顯 示開始地址寄存器區(qū)域115b可以利用隨機存取存儲器(RAM)、硬 盤驅(qū)動器(HDD)、光盤、存儲卡等任何通用的存儲介質(zhì)來形成。幀 緩沖器區(qū)域115a作為對應(yīng)于幀緩沖器114a的區(qū)域而針對每個子OS 130分配。顯示開始地址寄存器區(qū)域115b作為對應(yīng)于顯示開始地址寄 存器114b的區(qū)域而針對每個子OS 130分配。
VMM 120包括條件設(shè)定單元121和判定單元122。
條件設(shè)定單元121事先在子OS控制結(jié)構(gòu)中設(shè)定條件,以便在完 成了圖像信息的描繪時使處理移動到VMM 120。如上所述,在 DirectFB的視頻驅(qū)動器中,當在描繪完成時調(diào)用了 FlipRegion函數(shù) 時,訪問顯示開始地址寄存器114b。因此,條件設(shè)定單元121將子 OS控制結(jié)構(gòu)設(shè)定成當訪問了顯示開始地址寄存器114b時發(fā)生VM Exit。從而,在完成了屏幕更新時,處理可以移動到VMM120。
判定單元122在處理由于VM Exit而移動到VMM 120時判定處 理移動的原因。例如,當處理器111支持Intel VT時,判定單元122 通過參照作為子OS控制結(jié)構(gòu)(VMCS)的VM-Exit信息區(qū)域的"Exit Reason"來判定原因。而當處理器111支持AMD SVM時,判定單元 122還通過參照作為子OS控制結(jié)構(gòu)(VMCB )的控制區(qū)的 "EXITCODE,,和"EXITINFOl"來判定原因。
VMM120根據(jù)所判定的原因來執(zhí)行各種處理。例如,當判定原 因是對顯示開始地址寄存器114b的訪問時,VMM 120向模擬器單元141中的事件處理器141a (后述)通知對顯示開始地址寄存器114b 的訪問。
子OS 130包括圖形庫131和視頻驅(qū)動器132,作為圖像顯示功 能。注意,子OS 130除了圖像顯示功能外,還具有操作虛擬機環(huán)境 所需的所有功能。
圖形庫131包括描繪單元131a。
描繪單元131a輸出圖像信息,作為按照由應(yīng)用程序150指定的 描繪命令執(zhí)行的各種圖像處理的結(jié)果。例如,當接收到放大或縮小區(qū) 域的描繪命令時,描繪單元131a根據(jù)包含在描繪命令中的坐標信息 等指定要放大或縮小的區(qū)域,并且輸出包含作為放大或縮小該區(qū)域的 結(jié)果的區(qū)域的坐標信息的圖像信息。坐標信息用坐標系表示,在該坐 標系中,當屏幕例如由1024x768像素形成時,屏幕的左上被設(shè)定為 (0, 0),右下被設(shè)定為(1023, 767)。描繪單元131a將圖像信息 的坐標信息轉(zhuǎn)換成幀緩沖器114a的虛擬地址,并將該虛擬地址傳遞 到寫入單元132a (后述)。進而,當圖像信息的描繪完成時,描繪單 元131a將描繪完成通知給寫入單元132a。
視頻驅(qū)動器132對應(yīng)于上述的DirectFB,包括寫入單元132a。 可應(yīng)用的驅(qū)動器不限于DirectFB可兼容驅(qū)動器,因而,如果驅(qū)動器 構(gòu)成為在描繪完成時執(zhí)行特定的函數(shù)和命令,并且訪問特定的寄存 器,則可以使用任何類型的驅(qū)動器作為視頻驅(qū)動器132。
寫入單元132a將被請求寫入的圖像信息寫入到對應(yīng)于描繪單元 131a指定的虛擬地址的物理存儲區(qū)域。
而且,寫入單元132a當通過從描繪單元131a發(fā)送的通知而檢測 出圖像信息的描繪完成時,執(zhí)行FlipRegion函數(shù)。注意,當模擬器單 元141支持多緩沖時,寫入單元132a在描繪完成時執(zhí)行FlipRegion 函數(shù)。因此,需要從模擬器單元141將模擬器單元141支持多緩沖的 情況提前通知給寫入單元132a。
控制OS 140包括模擬器單元141和檢測器142。
模擬器單元141將支持多緩沖的圖形卡的模擬提供給子OS 130。換言之,模擬器單元141將模擬器單元141支持多緩沖的情況通知給 子OS 130。這使得子OS 130的視頻驅(qū)動器132中的寫入單元132a 能夠在描繪完成時發(fā)出FlipRegion函數(shù)。
當要模擬多緩沖時,模擬器單元141可以實際使用多個緩沖器來 執(zhí)行通常的多緩沖處理,或者可以實際僅使用一個緩沖器來模擬多緩 沖。在兩種情況下,寫入單元132a都順序地執(zhí)行以下處理(1)圖 像信息的描繪、(2 )更新通知(FlipRegion函數(shù))、(3 )等待緩沖 器切換的結(jié)束、以及(4)描繪下一圖像信息。當僅使用一個緩沖器 時,下一圖像信息的描繪需要等到生成了顯示緩沖器的更新圖像,因 而模擬器單元141執(zhí)行模擬,使得當完成了更新圖像的生成時裝作緩 沖器切換完成。
模擬器單元141還包括事件處理器141a。
當VMM 120通知訪問了顯示開始地址寄存器114b時,事件處 理器141a判定發(fā)生了屏幕更新的事件,并且向檢測器142通知事件 的發(fā)生,以開始更新部分檢測處理。
當屏幕被更新時,檢測器142將備份存儲單元113中的圖像信息 與幀緩沖器114a中的最新圖像信息進行比較,以檢測包含不同點的 矩形作為更新部分。
以下說明如上構(gòu)成的第一實施方式的圖像處理裝置100執(zhí)行的 圖像處理。圖像處理被分為將圖像信息寫入幀緩沖器114a和備份存 儲單元113的圖像寫入處理、以及比較備份圖像信息與最新圖像信息 并檢測圖像信息的更新部分的更新部分檢測處理。
以下參照圖4說明圖像寫入處理和更新部分檢測處理的概要。
在圖像寫入處理中,首先將幀緩沖器114a的整個備份事先存儲 在備份存儲單元113中。如果能夠使用幀緩沖器114a的像素值檢測 出幀緩沖器114a是否處于初始狀態(tài),則可以省略該時間點的備份的 存儲。例如,如果初始狀態(tài)下的所有像素都是黑色,則可以判定幀緩 沖器114a處于沒有備份存在的初始狀態(tài),從而可以省略備份的存儲。
在該狀態(tài)下,應(yīng)用程序150經(jīng)由圖形庫131向幀緩沖器114a發(fā)送描繪命令以進行屏幕顯示(1)。當檢測出向幀緩沖器114a的描繪 完成時,檢測器142開始更新部分檢測處理(2)。檢測器142將備 份圖像信息與幀緩沖器114a中的最新圖像信息進行比較,檢測作為 更新部分的矩形(3)。
所檢測的更新部分的圖像信息被顯示為子OS 130的屏幕(4)。 備份存儲單元113中的圖像信息被更新為與幀緩沖器114a中的最新 圖像信息相同的圖像信息(5)。
圖像處理裝置100還可以構(gòu)成為被用作虛擬機服務(wù)器,子OS 130 的屏幕被發(fā)送到經(jīng)由網(wǎng)絡(luò)與其連接的終端設(shè)備,并且該屏幕被顯示在 終端設(shè)備上。在這種情況下,代替在處理(4)中顯示更新部分的圖 像信息的處理,將更新部分的圖像信息發(fā)送到終端設(shè)備。
以下參照圖5說明更新部分檢測處理的詳細流程。
假設(shè)條件設(shè)定單元121將子OS控制結(jié)構(gòu)設(shè)定成當顯示開始地址 寄存器114b被訪問時發(fā)生VM Exit。假設(shè)從模擬器單元141向?qū)懭?單元132a通知了模擬器單元141支持多緩沖。
在這種狀態(tài)下,首先,當發(fā)生了更新所執(zhí)行的處理的屏幕信息的 事件時,應(yīng)用程序150輸出描繪命令以請求顯示屏幕的描繪(步驟 S501)。然后,描繪單元131a按照描繪命令執(zhí)行圖像處理,生成結(jié) 果圖像信息(步驟S502)。接著,寫入單元132a將所請求的圖像信 息寫入幀緩沖器114a的指定位置(步驟S503)。當完成了向幀緩沖 器114a的描繪時,寫入單元132a執(zhí)行FlipRegion函數(shù),以切換多緩 沖的緩沖器(步驟S504)。然后,顯示開始地址寄存器114b由于該 函數(shù)而;f皮訪問。
當訪問了顯示開始地址寄存器114b時,處理器111根據(jù)子OS 控制結(jié)構(gòu)的設(shè)定產(chǎn)生VM Exit (步驟S505 )。結(jié)果,處理從子OS 130 移動到VMM 120。 VMM 120的判定單元122通過參照子OS控制結(jié) 構(gòu)的VM-Exit信息區(qū)域來判定VM Exit的產(chǎn)生原因。當判定原因是 屏幕更新時,判定單元122向模擬器單元141通知屏幕更新(步驟 S506)。
13當接收到通知時,事件處理器141a指示檢測器142開始檢測處 理(步驟S507)。檢測器142將寫入到幀緩沖器114a的最新圖像信 息與存儲在備份存儲單元113中的圖像信息進行比較,檢測作為更新 部分的不同的部分(步驟S508)。
檢測器142輸出所檢測的更新部分(步驟S509 ),結(jié)束更新部 分檢測處理。
如上所述,在第一實施方式的圖像處理裝置中,處理器被設(shè)定成 當在多緩沖中使用的顯示開始地址寄存器114b被訪問時,控制移動 到VMM,這使得VMM能夠檢測描繪完成,從而能夠響應(yīng)于描繪完 成的檢測來執(zhí)行圖像信息的更新部分檢測處理。
這消除了顯示不完整圖像的可能性,從而顯示圖像的外觀更好。 而且,僅通過改變處理器的i文定,就可以由VMM鉤住(hook)描繪 完成,從而不需要根據(jù)虛擬環(huán)境來修改圖形庫和視頻驅(qū)動器。即,可 以使用標準圖形庫和視頻驅(qū)動器來實現(xiàn)這些功能。
以上說明了在硬件上直接執(zhí)行VMM的例子。但是,即使在硬件 上間接地執(zhí)行VMM,也可以實現(xiàn)與第一實施方式相同的功能。間接 執(zhí)行是指作為操作基礎(chǔ)的主OS在硬件上運行,進而VMM在該主OS 上運行。
如圖6所示,作為使用硬件110發(fā)揮作用的軟件結(jié)構(gòu),圖像處理 裝置600包括主OS 660、 VMM 620、子OS 130和應(yīng)用程序150。
圖6所示的第一實施方式的變形與表示第一實施方式的框圖的 圖3的不同點在于,增加了主OS 660,去掉了控制OS140,并且作 為控制OS 140的組成部分的模擬器單元141和檢測器142被包含在 VMM 620中。其余的組成部分和功能與圖3相同,向它們分配相同 的附圖標記并省略對其的說明。而且,圖像寫入處理和更新部分檢測 處理與圖4和圖5相同,從而其說明也省略。
在笫一實施方式中,通過使用在描繪完成通知時訪問顯示開始地 址寄存器的功能,并且通過由VMM鉤住對顯示開始地址寄存器的訪 問,來檢測屏幕更新。但是,存在由于視頻驅(qū)動器的類型的不同,在描繪完成時不對預(yù)
定的寄存器進行訪問的情況。另外,存在象視頻電子標準協(xié)會(VESA ) 的視頻驅(qū)動器那樣,在要通知描繪完成時發(fā)出基本輸入輸出系統(tǒng) (BIOS)調(diào)用的視頻驅(qū)動器。因此,在第二實施方式中,說明提供在 描繪完成時發(fā)出預(yù)定的BIOS調(diào)用的視頻驅(qū)動器的例子。第二實施方 式構(gòu)成為將處理器設(shè)定成當發(fā)出了預(yù)定的BIOS調(diào)用時,控制移動到 VMM,這使得VMM能夠檢測出描繪完成,從而響應(yīng)于描繪完成的 檢測來執(zhí)行圖像信息的更新部分檢測處理。
首先說明第二實施方式中使用的視頻驅(qū)動器的概要。在笫二實施 方式中,VESA的視頻驅(qū)動器被用作子OS的視頻驅(qū)動器。當圖形卡 支持多緩沖時,VESA的視頻驅(qū)動器執(zhí)行用于在描繪完成時切換緩沖 器的"Set Display Start,,BIOS調(diào)用。
由于處理器的操作模式的不同,由VMM鉤住BIOS調(diào)用的方法 不同。這種情況下的處理器的操作模式是包含實模式和保護模式的、 不同于具有子模式和主模式的操作模式的操作模式。
實模式是假定可訪問存儲區(qū)域是從0M字節(jié)到1M字節(jié)并且能夠 同時執(zhí)行的程序的數(shù)量為l個的操作模式。而保護模式是增加了擴大 可訪問存儲區(qū)域、多任務(wù)支持和數(shù)據(jù)安全功能的操作模式。
在接通電源時,處理器總是在實模式下啟動,然后,實模式使用 軟件轉(zhuǎn)換到保護模式。除了在剛剛接通計算機的電源之后,處理器通 常在保護模式下操作。
當處理器在實模式下操作時,在發(fā)出了 BIOS調(diào)用時,發(fā)生INT 10h軟件中斷。因此,INT 10h軟件中斷被鉤住,從而使得能夠發(fā)生 VM Exit。
另一方面,當處理器在保護模式下操作時,不發(fā)生VMM能夠鉤 住的中斷、對寄存器的訪問和例外。因此,在這種情況下,將對應(yīng)的 BIOS調(diào)用的地址作為斷點設(shè)定在處理器的調(diào)試寄存器中。這使得能 夠在發(fā)出了對應(yīng)的BIOS調(diào)用時產(chǎn)生調(diào)試例外。調(diào)試例外的產(chǎn)生被鉤 住,從而使得能夠發(fā)生VM Exit。更具體地,在第二實施方式中,子os控制結(jié)構(gòu)被設(shè)定為如果發(fā)
生由于發(fā)出預(yù)定的BIOS調(diào)用而引起的INT 10h軟件中斷或調(diào)試例 外,則會發(fā)生VMExit。這使得處理器在實模式和保護模式中的任意 一種操作模式下操作時,處理器都能在屏幕更新完成時移動到VMM。 以下說明第二實施方式的圖像處理裝置的功能和結(jié)構(gòu)。如圖7 所示,圖像處理裝置700包括硬件710,還包括作為使用硬件710來 發(fā)揮作用的軟件結(jié)構(gòu)的VMM 720、子OS 730、控制OS 140和應(yīng)用 程序150。
第二實施方式與第一實施方式的不同點在于存儲在硬件710的 條件存儲單元712中的子OS控制結(jié)構(gòu)的內(nèi)容、VMM720中的條件設(shè) 定單元721的功能和子OS 730的功能。其它組成部分和功能與圖3 相同,因此對它們分配相同的附圖標記并省略對其的說明。
條件存儲單元712在其中存儲子OS控制結(jié)構(gòu),該子OS控制結(jié) 構(gòu)包含響應(yīng)于由預(yù)定的BIOS調(diào)用引起的中斷或例外而將處理從子 OS 730返回到VMM 720的條件。
以下說明設(shè)定存儲在條件存儲單元712中的子OS控制結(jié)構(gòu)的具 體方法。在第二實施方式中,通過以下述方式設(shè)定子OS控制結(jié)構(gòu), 來檢測INT 10h軟件中斷和調(diào)試例外。
首先說明設(shè)定Intel VT的VMCS的例子。在這種情況下,使用 作為VMCS中的VM-Exit控制區(qū)域的"Exception Bitmap",并且使用 作為其中的VM-Exit信息區(qū)域的"Exit Reason" 、 "Exit Qualification" 和"IDT-Vectoring Information"。
當要檢測INT10h軟件中斷時,首先將處理器111中設(shè)置的任務(wù) 狀態(tài)段(Task State Segment, TSS )中的軟件中斷重定向位圖 (Redirection Bitmap)的第10位設(shè)定為"l"。然后將對應(yīng)于一般保 護例外的"Exception Bitmap"的位設(shè)定為"l"。當由于INT 10h軟件中 斷而發(fā)生一般保護例外或任務(wù)切換時,發(fā)生VMExit。
當發(fā)生一般保護例外時,在VM-Exit信息區(qū)域中,"Exit Reason" 的0 ~ 15位被清除為0, "IDT-Vectoring Information"的0 ~ 7位(中斷向量)變成10, "IDT-Vectoring Information"的8 ~ 10位(中斷類 型)變成4。當發(fā)生任務(wù)切換時,在VM-Exh信息區(qū)域中,"Exit Reason" 的0 ~ 15位變成9, "Exit Qualification"的30 ~ 31位(任務(wù)切換發(fā)生 的原因)變成3, "IDT-Vectoring Information, 0~7位變成10, "IDT誦Vectoring Information,,的8 ~ 10位變成4。
通過參照這些信息,VMM 720能夠判定由于INT10h軟件中斷 的原因而發(fā)生VM Exit。
當要檢測調(diào)試例外時,將對應(yīng)于調(diào)試例外的"Exception Bitmap" 的位設(shè)定為"l"。從而,當發(fā)生調(diào)試例外時,發(fā)生VM Exit。當由于 調(diào)試例外而發(fā)生VM Exit時,在VM-Exit信息區(qū)域中,"Exit Reason" 的0 ~ 15位被清除為0, "Exit Qualification"的0 ~ 3位(B0 ~ B3標 志)變成斷點號。
通過參照這些信息,VMM 720能夠判定由于調(diào)試例外的原因而 發(fā)生VM Exit。
接著說明設(shè)定AMD SVM的VMCB的例子。這種情況下,使用 作為VMCB中的控制區(qū)的"Exception Bitmap" 、 "EXITCODE"和 "EXITINFOl"。
檢測INT 10h軟件中斷的方法包括將所有的軟件中斷作為對象 引起VM Exit的方法和僅將INT 10h軟件中斷作為對象引起VM Exit 的方法。
在第一種情況下,將VMCB的字節(jié)偏移"OOCh"處的第21位設(shè) 定為"1"。由此,響應(yīng)于軟件中斷的發(fā)生而發(fā)生VM Exit,并且 "EXITCODE"變成"75h", "EXIT麗Ol,,的0 ~ 7位變成10。
在第二種情況下,將處理器111中設(shè)置的CR4 (控制寄存器4) 的第0位設(shè)定為"1,,,將TSS中的軟件中斷重定向位圖的第IO位設(shè)定 為"1",并將對應(yīng)于一般保護例外的、VMCB的字節(jié)偏移"008h"處的 "Exception Bitmap,,的第13位設(shè)定為'T,。從而,響應(yīng)于INT10h軟 件中斷的發(fā)生而發(fā)生VMExit,并且"EXITCODE"變成"53h"。
通過參照這些信息,VMM 720能夠判定由于INT 10h軟件中斷
17的原因而發(fā)生VMExit。
當要檢測調(diào)試例外時,將對應(yīng)于調(diào)試例外的、VMCB的字節(jié)偏 移"008h,,處的"Exception Bitmap,,的第l位設(shè)定為"l"。從而,響應(yīng)于 調(diào)試例外的發(fā)生而發(fā)生VMExit,并且"EXITCODE,,變成"14h,,
通過參照這些信息,VMM 720能夠判定由于調(diào)試例外的原因而 發(fā)生VM Exit。
條件設(shè)定單元721事先按照該設(shè)定方法在子OS控制結(jié)構(gòu)中設(shè)定 條件,以便在完成了圖像信息的描繪時處理移動到VMM720。進而, 條件設(shè)定單元721檢查在描繪完成時發(fā)出的BIOS調(diào)用的地址,并且 執(zhí)行將該地址作為斷點設(shè)定在調(diào)試寄存器中的斷點設(shè)定處理。斷點設(shè) 定處理的詳情將后述。
除了圖形庫131和視頻驅(qū)動器732外,子OS 730還包括例外產(chǎn) 生單元733。
視頻驅(qū)動器732是如上所述支持VESA的驅(qū)動器,并且包括寫 入單元732a。寫入單元732a與第一實施方式的寫入單元132a的不同 點在于,在圖像信息的描繪完成時,執(zhí)行Set Display Start BIOS調(diào)用 以切換到顯示緩沖器。
可應(yīng)用的驅(qū)動器不限于支持VESA的驅(qū)動器,如果驅(qū)動器能夠 在描繪完成時執(zhí)行特定的BIOS調(diào)用,則可以使用任意類型的驅(qū)動器。
例外產(chǎn)生單元733在由調(diào)試寄存器中設(shè)定的虛擬地址指示的存 儲區(qū)域被訪問時產(chǎn)生調(diào)試例外。在第二實施方式中,由于Set Display Start BIOS調(diào)用的地址被設(shè)定在調(diào)試寄存器中,因此例外產(chǎn)生單元 733響應(yīng)于BIOS調(diào)用的執(zhí)行而產(chǎn)生調(diào)試例外。
Set Display Start BIOS調(diào)用的地址可以下述方式取得并設(shè)定在 調(diào)試寄存器中。圖8是第二實施方式的斷點設(shè)定處理的流程圖。斷點 設(shè)定處理被用于當程序到達指定地址時中斷程序。在第二實施方式 中,當程序到達Set Display Start BIOS調(diào)用的地址時,程序#_中斷, 并且處理移動到VMM 720。
首先,為了檢查要設(shè)定為斷點的地址,條件設(shè)定單元721找出BIOS圖像的起始32K位中存在的Protected Mode Information Block (保護模式信息塊)結(jié)構(gòu)。條件設(shè)定單元721可以從該結(jié)構(gòu)取得保護 模式下的Set Display Start BIOS調(diào)用的地址(步驟S801) 。 BIOS圖 像被存儲在非易失性存儲器(未圖示)等中。
條件設(shè)定單元721取得Set Display Start BIOS調(diào)用的地址并將 取得的地址作為斷點設(shè)定在調(diào)試寄存器中。
以下參照圖9~圖11說明調(diào)試寄存器的結(jié)構(gòu)例。調(diào)試寄存器包 括8個調(diào)試寄存器DR0~DR7。其中的調(diào)試寄存器DR4和DR5由于 被保留而未使用,因此省略對其的說明。
圖9是調(diào)試寄存器DR0 DR3的結(jié)構(gòu)例的示意圖。調(diào)試寄存器 DR0 DR3分別用于將虛擬地址作為斷點設(shè)定在其中,并且被稱為 "調(diào)試地址寄存器"。
圖10是調(diào)試寄存器DR6的結(jié)構(gòu)例的示意圖。調(diào)試寄存器DR6 指示調(diào)試例外發(fā)生時的狀態(tài),并且被稱為"調(diào)試狀態(tài)寄存器"。在圖10 中,當設(shè)定了 B0 B3標志時,該狀態(tài)表示在對應(yīng)的調(diào)試地址寄存器 中設(shè)定的斷點的斷開條件被滿足,從而發(fā)生調(diào)試例外。
圖11是調(diào)試寄存器DR7的結(jié)構(gòu)例的示意圖。調(diào)試寄存器DR7 被用于設(shè)定調(diào)試地址寄存器中設(shè)定的斷點的斷開條件,并且被稱為 "調(diào)試控制寄存器"。
當設(shè)定了 L0 L3標志或G0 G3標志時,該狀態(tài)表示在對應(yīng)的 調(diào)試地址寄存器中設(shè)定的斷點有效。當對應(yīng)的調(diào)試地址寄存器中設(shè)定 的斷點僅在當前任務(wù)中有效時設(shè)定L0 L3標志,而當它們在所有任 務(wù)中有效時設(shè)定G0 G3標志。
R/W0~RW3字段表示在對應(yīng)的調(diào)試地址寄存器中設(shè)定的斷點 的斷開條件。當要通過執(zhí)行命令來發(fā)生斷開時,設(shè)定"00"。 LEN0~ LEN3字段表示在對應(yīng)的調(diào)試地址寄存器中設(shè)定的斷點的每個大小。 當要通過執(zhí)行命令來發(fā)生斷開時,設(shè)定"00"。
當設(shè)定了 GD標志時,當調(diào)試寄存器被蓋寫時發(fā)生調(diào)試例外。通 過設(shè)定該標志,可以防止由條件設(shè)定單元721設(shè)定的斷點-敗子OS 730蓋寫。
在上述構(gòu)成的調(diào)試寄存器中,為了將所取得的地址設(shè)定為斷點,
設(shè)定作為調(diào)試地址寄存器的DR0 DR3中的任意一個和作為調(diào)試控 制寄存器的DR7的對應(yīng)位。
以下重新參照圖8來說明設(shè)定調(diào)試寄存器的處理的詳細情況。條 件設(shè)定單元721在DRO ~ DR3中的任意一個中將所取得的地址設(shè)定為 斷點(步驟S802 )。這里說明使用斷點O (DRO)的例子。在這種情 況下,條件設(shè)定單元721在調(diào)試地址寄存器(DRO)中設(shè)定所取得的 地址。
接著,條件設(shè)定單元721將調(diào)試控制寄存器(DR7 )的GO標志 設(shè)定為1 (步驟S803)。然后,條件設(shè)定單元721將DR7的R/W0 字段設(shè)定為"OO"(步驟S804)。而且,條件設(shè)定單元721將DR7的 LENO字段設(shè)定為"OO"(步驟S805 )。
注意,圖8中的符號"*,,表示數(shù)值取決于在調(diào)試地址寄存器 DR0 DR3中的哪一個中設(shè)定斷點而改變。更具體地,當在DR1中 設(shè)定斷點時,表示設(shè)定DR7的Gl標志、R/W1字段和LEN1字段。
通過以這種方式來設(shè)定調(diào)試寄存器,響應(yīng)于對設(shè)定地址的訪問而 發(fā)生調(diào)試例外。另外,通過檢查調(diào)試狀態(tài)寄存器(DR6)的BO標志, 可以發(fā)現(xiàn)調(diào)試例外的發(fā)生是由對斷點0的訪問而引起的。
接著,以下參照圖12說明如上構(gòu)成的圖像處理裝置700的更新 部分檢測處理。圖像處理的概要與第一實施方式的圖4相同,因此省 略對其的說明。
步驟S1201 步驟S1203的圖像信息寫入處理與圖像處理裝置 100中的步驟S501 ~步驟S503的處理相同,因此省略對其的說明。
在寫入圖像信息后,寫入單元732a發(fā)出Set Display Start BIOS 調(diào)用,以切換多緩沖的緩沖器(步驟S1204)。
當發(fā)出了 BIOS調(diào)用時,例外產(chǎn)生單元733根據(jù)調(diào)試寄存器的設(shè) 定產(chǎn)生調(diào)試例外(步驟S1205)。當處理器111在實模式下操作時, 代替調(diào)試例外而產(chǎn)生INT 10h軟件中斷。
20當發(fā)生了調(diào)試例外或INT 10h軟件中斷時,處理器lll根據(jù)子 OS控制結(jié)構(gòu)的設(shè)定產(chǎn)生VM Exit (步驟S1206 )。這使得處理能夠從 子OS 730移動到VMM 720。
步驟S1207 ~步驟S1210的原因判定處理、檢測處理和更新部分 輸出處理與圖像處理裝置100中的步驟S506 ~步驟S509的處理相同, 因此省略對其的說明。
如上所述,在第二實施方式的圖像處理裝置中,通過將處理器設(shè) 定成在發(fā)出預(yù)定的BIOS調(diào)用時,控制移動到VMM,從而可以由 VMM檢測出描繪完成,并且響應(yīng)于描繪完成的檢測而執(zhí)行圖像信息
的更新部分檢測處理。
以下參照圖13說明第一或第二實施方式的圖像處理裝置的硬件結(jié)構(gòu)。
作為利用普通計算機的硬件結(jié)構(gòu),第一或第二實施方式的圖像處 理裝置包括處理器111等控制設(shè)備、只讀存儲器(ROM)52和RAM53 等存儲設(shè)備、與網(wǎng)絡(luò)連接以執(zhí)行通信的通信I/F54、 HDD和高密度盤 (CD)驅(qū)動器等外部存儲設(shè)備、顯示器等顯示單元、鍵盤和鼠標等 輸入設(shè)備、連接各部件的總線61。
通過以可安裝格式或可執(zhí)行格式記錄在高密度盤只讀存儲器 (CD-ROM)、軟盤(FD)、可記錄高密度盤(CD-R)和數(shù)字通用 盤(DVD)等計算機可讀記錄介質(zhì)中來提供第一或第二實施方式的圖 像處理裝置所執(zhí)行的更新檢測程序。
而且,由圖像處理裝置執(zhí)行的更新檢測程序可以存儲在與互聯(lián)網(wǎng) 等網(wǎng)絡(luò)連接的計算機中,并且通過從網(wǎng)絡(luò)下栽來提供。而且,由圖像 處理裝置執(zhí)行的更新檢測程序可以通過互聯(lián)網(wǎng)等網(wǎng)絡(luò)來提供或配送。
由圖像處理裝置執(zhí)行的更新檢測程序可以通過事先組裝到ROM 等中來提供。
由圖像處理裝置執(zhí)行的更新檢測程序利用包含各部分(VMM、 控制OS)的模塊來形成。作為實際的硬件,處理器111從記錄介質(zhì) 中讀取更新檢測程序并執(zhí)行,從而將各部分裝載到主存儲單元中以在主存儲單元上生成。
對于本領(lǐng)域技術(shù)人員而言,其它的優(yōu)點和變形是容易想到的。因
實施方式。因此,在不脫離所附的權(quán)利要求及其等同技術(shù)方案所限定 的總的發(fā)明概念的精神或范圍的情況下,可以進行各種變形。
權(quán)利要求
1. 一種用于檢測圖像信息的更新的裝置,包括圖像存儲單元,存儲圖像信息;處理器,在事先設(shè)定的轉(zhuǎn)變條件被滿足時,從使子操作系統(tǒng)進行操作的第一模式轉(zhuǎn)變到使管理該子操作系統(tǒng)的虛擬機監(jiān)視器進行操作的第二模式;判定單元,當處理器轉(zhuǎn)變到第二模式時,判定該轉(zhuǎn)變的原因;以及檢測單元,當判定單元判定原因是在子操作系統(tǒng)上執(zhí)行了與在圖像存儲單元中寫入圖像信息的完成有關(guān)的處理時,檢測表示圖像信息在寫入前后不一致的部分的更新部分。
2. —種用于檢測圖像信息的更新的方法,包括以下步驟 當處理器轉(zhuǎn)變到第二模式時,判定該轉(zhuǎn)變的原因,其中,該處理器在事先設(shè)定的轉(zhuǎn)變條件被滿足時,從使子操作系統(tǒng)進行操作的第一 模式轉(zhuǎn)變到使管理該子操作系統(tǒng)的虛擬機監(jiān)視器進行操作的第二模 式;以及當判定原因是在子操作系統(tǒng)上執(zhí)行了與在圖像存儲單元中寫入 圖像信息的完成有關(guān)的處理時,檢測表示圖像信息在寫入前后不一致 的部分的更新部分。
3. 如權(quán)利要求2所述的方法,其中,檢測步驟包括當判定原因 是在寫入圖像信息完成時執(zhí)行的預(yù)設(shè)函數(shù)訪問了預(yù)設(shè)的寄存器時,檢 測更新部分。
4. 如權(quán)利要求3所述的方法,還包括以下步驟模擬多緩沖功 能,以在用于寫入圖像信息的第一存儲單元和用于顯示圖像信息的第 二存儲單元之間進行切換,其中,檢測步驟包括當判定原因是在寫入圖像信息完成時請求切 換到第二存儲單元的函數(shù)訪問了上述寄存器時,檢測更新部分。
5. 如權(quán)利要求2所述的方法,其中,檢測步驟包括當判定原因是在寫入圖像信息完成時執(zhí)行的預(yù)設(shè)函數(shù)被執(zhí)行時產(chǎn)生例外的例外 產(chǎn)生單元產(chǎn)生的例外時,檢測更新部分。
6. 如權(quán)利要求5所述的方法,還包括以下步驟模擬多緩沖功能,以在用于寫入圖像信息的第一存儲單元和用于顯示圖像信息的第 二存儲單元之間進行切換,其中,例外產(chǎn)生單元在寫入圖像信息完成時請求切換到第二存儲 單元的函數(shù)被執(zhí)行時產(chǎn)生例外。
7. 如權(quán)利要求2所述的方法,其中,檢測步驟包括當判定原因 是由于在寫入圖像信息完成時執(zhí)行的預(yù)設(shè)函數(shù)而發(fā)生中斷時,檢測更 新部分。
8. 如權(quán)利要求7所述的方法,還包括以下步驟模擬多緩沖功 能,以在用于寫入圖像信息的第一存儲單元和用于顯示圖像信息的第 二存儲單元之間進行切換,其中,檢測步驟包括當判定原因是由于在寫入圖像信息完成時請 求切換到第二存儲單元的函數(shù)而發(fā)生中斷時,檢測更新部分。
全文摘要
本發(fā)明提供一種用于檢測圖像信息的更新的裝置和方法,當處理器轉(zhuǎn)變到第二模式時,判定該轉(zhuǎn)變的原因,其中,該處理器在事先設(shè)定的轉(zhuǎn)變條件被滿足時,從使子操作系統(tǒng)進行操作的第一模式轉(zhuǎn)變到使管理該子操作系統(tǒng)的虛擬機監(jiān)視器進行操作的第二模式。當判定原因是在子操作系統(tǒng)上執(zhí)行了與在圖像存儲單元中寫入圖像信息的完成有關(guān)的處理時,檢測單元檢測表示圖像信息在寫入前后不一致的部分的更新部分。
文檔編號G06T1/20GK101458812SQ20081018462
公開日2009年6月17日 申請日期2008年12月11日 優(yōu)先權(quán)日2007年12月11日
發(fā)明者后藤真孝, 峰松美佳, 村井信哉, 西林泰如 申請人:株式會社東芝