專(zhuān)利名稱(chēng):安全硬件桌面緩沖區(qū)合成的制作方法
安全硬件桌面緩沖區(qū)合成北曰 冃足虛擬機(jī)允許主機(jī)計(jì)算機(jī)在同一計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)應(yīng)用程序環(huán)境或操作系統(tǒng)。主機(jī)計(jì)算機(jī)向每一虛擬機(jī)分配特定數(shù)量的主機(jī)資源。每一虛擬機(jī)然后能夠使用所分配的資源來(lái)執(zhí)行應(yīng)用程序,包括操作系統(tǒng)。虛擬機(jī)虛擬化主機(jī)計(jì)算機(jī)的底層硬 件或仿真硬件設(shè)備,從而使得對(duì)虛擬機(jī)的使用對(duì)操作系統(tǒng)或計(jì)算機(jī)的用戶(hù)而言是透明的。在虛擬PC環(huán)境中,PC硬件在多個(gè)分區(qū)或虛擬機(jī)之中共享。在這一執(zhí)行環(huán)境中,主操作系統(tǒng)(即,主存每一虛擬機(jī)的操作系統(tǒng))通常擁有圖形硬件,并且因此 擁有桌面緩沖區(qū)合成進(jìn)程。桌面緩沖區(qū)合成進(jìn)程確定在任一時(shí)刻在屏幕上顯示什么 虛擬機(jī)輸出。由于每一虛擬機(jī)相信它具有對(duì)主機(jī)機(jī)器的完整控制,因此每一虛擬機(jī) 可輸出到其自己的虛擬桌面緩沖區(qū)。為將由虛擬機(jī)產(chǎn)生的像素帶到圖形子系統(tǒng),向 主操作系統(tǒng)提供了對(duì)這些虛擬桌面緩沖區(qū)的訪問(wèn)。向主操作系統(tǒng)提供對(duì)虛擬桌面緩 沖區(qū)的訪問(wèn)引入了對(duì)由其它分區(qū)生成的視頻數(shù)據(jù)的機(jī)密性的安全挑戰(zhàn)。這在這些分 區(qū)之一正在運(yùn)行安全操作系統(tǒng)時(shí)尤其是不合需要的。例如,惡意用戶(hù)可能希望記錄在主機(jī)上執(zhí)行的一個(gè)或多個(gè)虛擬機(jī)的視頻輸出。 由于對(duì)虛擬機(jī)桌面緩沖區(qū)的訪問(wèn)被提供給主操作系統(tǒng)的桌面合成進(jìn)程以合成要放 到顯示器上的最終圖像,因此惡意用戶(hù)可修改該合成進(jìn)程來(lái)訪問(wèn)呈現(xiàn)到虛擬桌面緩 沖區(qū)的、屬于另一分區(qū)的敏感信息。惡意用戶(hù)然后可生成包括任何給定虛擬機(jī)的所 顯示活動(dòng)的電影,或甚至修改屏幕內(nèi)容以誤導(dǎo)用戶(hù)作出不正確的決策。概述多個(gè)虛擬機(jī)在主機(jī)計(jì)算機(jī)上執(zhí)行,主機(jī)計(jì)算機(jī)包括圖形硬件以及顯示器。圖 形硬件能夠復(fù)制并組合虛擬桌面像素到硬件合成緩沖區(qū)中。虛擬機(jī)將顯示數(shù)據(jù)寫(xiě)入 其各自的虛擬桌面緩沖區(qū)中。選擇一虛擬機(jī)以輸出到主機(jī)計(jì)算機(jī)的顯示器上。圖形 硬件上的合成緩沖區(qū)對(duì)于所選的虛擬機(jī)被啟用。與所選虛擬機(jī)相關(guān)聯(lián)的虛擬桌面緩 沖區(qū)的內(nèi)容由圖形硬件復(fù)制到合成緩沖區(qū)。合成緩沖區(qū)的內(nèi)容由圖形硬件呈現(xiàn)并顯示。另外,對(duì)合成緩沖區(qū)的讀訪問(wèn)被限于圖形硬件,由此防止惡意軟件應(yīng)用程序跨 分區(qū)來(lái)捕捉顯示數(shù)據(jù)。附圖簡(jiǎn)述
圖1是示出根據(jù)本發(fā)明的示例性桌面緩沖區(qū)合成主機(jī)計(jì)算機(jī)的框圖;圖2是示出根據(jù)本發(fā)明的示例性桌面緩沖區(qū)合成系統(tǒng)的框圖;圖3是示出根據(jù)本發(fā)明的用于桌面緩沖區(qū)合成的示例性方法的框圖;圖4是示出根據(jù)本發(fā)明的另一示例性桌面緩沖區(qū)合成系統(tǒng)的框圖;以及圖5是示出其中可實(shí)現(xiàn)本發(fā)明的各方面的示例性計(jì)算環(huán)境的框圖。詳細(xì)描述圖1是示出根據(jù)本發(fā)明的示例性桌面緩沖區(qū)合成主機(jī)計(jì)算機(jī)的框圖。如圖所 示,主機(jī)計(jì)算機(jī)以多個(gè)虛擬機(jī)客戶(hù)機(jī)110、 120和130為特征。虛擬機(jī)客戶(hù)機(jī)IIO、 120和130中的每一個(gè)可在主機(jī)計(jì)算機(jī)上執(zhí)行。每一虛擬機(jī)客戶(hù)機(jī)110、 120和130 可執(zhí)行其自己的操作系統(tǒng)和應(yīng)用程序,并如同它們具有對(duì)主機(jī)計(jì)算機(jī)的資源的完整 控制那樣來(lái)表現(xiàn)。然而,主機(jī)計(jì)算機(jī)的資源在虛擬機(jī)客戶(hù)機(jī)110、 120和130之中 共享,并且由主機(jī)計(jì)算機(jī)的操作系統(tǒng)來(lái)控制。盡管圖1中僅示出了三個(gè)虛擬機(jī),但 是這僅是出于說(shuō)明的目的,而不意味著限制本發(fā)明。對(duì)可支持的虛擬機(jī)的數(shù)目也沒(méi) 有限制。虛擬機(jī)IIO、 120和130可具有相關(guān)聯(lián)的虛擬桌面緩沖區(qū)。如圖所示,虛擬機(jī) IIO具有虛擬桌面緩沖區(qū)111,虛擬機(jī)120具有虛擬桌面緩沖區(qū)121,而虛擬機(jī)130 具有虛擬桌面緩沖區(qū)131。虛擬機(jī)向其各自的虛擬桌面緩沖區(qū)輸出數(shù)據(jù)以供顯示。 例如,虛擬機(jī)110可顯示包括打開(kāi)的應(yīng)用程序或桌面圖標(biāo)的當(dāng)前桌面。因此,虛擬 機(jī)IIO將期望的像素?cái)?shù)據(jù)寫(xiě)入虛擬桌面緩沖區(qū)111。虛擬桌面緩沖區(qū)例如可作為主 機(jī)系統(tǒng)存儲(chǔ)器或視頻存儲(chǔ)器的一部分而存在于由主機(jī)操作系統(tǒng)分配給虛擬機(jī)的圖 形硬件140中。虛擬機(jī)可被分配其自己的存儲(chǔ)器部分,如由圖1中的虛擬機(jī)周?chē)?虛線(xiàn)框所示的。采用現(xiàn)有技術(shù), 一軟件進(jìn)程將確定虛擬機(jī)IIO、 120和130中的哪一個(gè)具有對(duì) 主機(jī)計(jì)算機(jī)的顯示器171的控制。該軟件進(jìn)程然后通過(guò)將虛擬桌面緩沖區(qū)的內(nèi)容復(fù) 制到合成緩沖區(qū)151中來(lái)合成最終顯示,合成緩沖區(qū)151例如由圖形硬件140的顯 示控制器來(lái)讀取。在合成過(guò)程中,通常將附加的用戶(hù)界面添加到虛擬機(jī)的輸出。一個(gè)典型的示例是添加允許用戶(hù)將物理顯示器從一個(gè)分區(qū)切換到另一分區(qū)的界面。如 上所述,該軟件合成方法將安全問(wèn)題引入到系統(tǒng)中,因?yàn)樵撥浖M(jìn)程可能會(huì)被修改 以為惡意用戶(hù)捕捉顯示數(shù)據(jù)或甚至強(qiáng)行控制顯示器。使得軟件桌面合成安全是極其困難的,因?yàn)楝F(xiàn)代圖形設(shè)備是強(qiáng)大的,但也是 極其復(fù)雜的。典型的操作系統(tǒng)不知道如何有效地控制圖形核心,并且必須依賴(lài)于適 當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序來(lái)將命令轉(zhuǎn)換成機(jī)器相關(guān)代碼。如果合成是在通過(guò)簡(jiǎn)單注冊(cè)界面 配置的硬件中完成的,則所呈現(xiàn)的像素的安全性可顯著提高。采用硬件支持,從主 操作系統(tǒng)中移除了該軟件合成過(guò)程,并且可將接口代碼放置在諸如系統(tǒng)管理程序 180等大小更小因此使其制造商更易于作出安全性斷言的可信軟件進(jìn)程中。在該上下文中,期望將安全硬件合成添加到圖形硬件140以自動(dòng)將像素從虛擬桌面緩沖區(qū)11K 121或131復(fù)制到合成緩沖區(qū)151中。圖形硬件提供一將虛擬 桌面緩沖區(qū)的內(nèi)容復(fù)制到合成緩沖區(qū)151簡(jiǎn)單界面,而不是軟件進(jìn)程構(gòu)建圖形命令 來(lái)從虛擬桌面緩沖區(qū)中復(fù)制顯示數(shù)據(jù)。然后可保護(hù)虛擬桌面緩沖區(qū)免遭運(yùn)行在其它 分區(qū)中的惡意軟件進(jìn)程的破壞。此外,圖形硬件140還必須限制對(duì)合成緩沖區(qū)151的存儲(chǔ)器訪問(wèn)。讀訪問(wèn)應(yīng) 該被授予顯示邏輯以向物理顯示器創(chuàng)建最終圖像。寫(xiě)訪問(wèn)應(yīng)該被授予安全合成引擎 以從虛擬桌面緩沖區(qū)中復(fù)制像素。為防止圖像撕裂,期望以雙緩沖的方式來(lái)實(shí)現(xiàn)合成緩沖區(qū)151。在此安排中, 將存儲(chǔ)器的兩個(gè)部分分配為合成緩沖區(qū)。在任一時(shí)刻,顯示控制器從一個(gè)緩沖區(qū)中 讀取,同時(shí)在另一緩沖區(qū)上發(fā)生安全合成。當(dāng)呈現(xiàn)(合成)對(duì)一幀完成時(shí),這兩個(gè) 緩沖區(qū)的角色被互換。雙緩沖是圖形/動(dòng)畫(huà)公眾中的公知的現(xiàn)有技術(shù)。進(jìn)行呈現(xiàn)的緩沖區(qū)通常被標(biāo)為 后緩沖區(qū)。當(dāng)完成呈現(xiàn)時(shí),將后緩沖區(qū)翻轉(zhuǎn)到顯示器,該后緩沖區(qū)將在下一次顯示 刷新時(shí)生效。此時(shí),原始顯示緩沖區(qū)可用作用于下一幀的后緩沖區(qū)。在更高級(jí)的系 統(tǒng)中,后緩沖區(qū)的數(shù)目可以不同。合成緩沖區(qū)151可使用圖形豐富顯示領(lǐng)域中已知 的任何系統(tǒng)、方法或技術(shù)來(lái)實(shí)現(xiàn)。該技術(shù)可在合成過(guò)程中使用任意數(shù)目的后緩沖區(qū) 的系統(tǒng)中實(shí)現(xiàn)。在最簡(jiǎn)單的情況下,圖形硬件140只需提供用于將虛擬桌面緩沖區(qū)復(fù)制到合 成緩沖區(qū)的簡(jiǎn)單界面。在這一解決方案中,系統(tǒng)管理程序180截取來(lái)自分區(qū)的顯示 翻轉(zhuǎn)命令。如果該分區(qū)還擁有顯示器,則系統(tǒng)管理程序180將該翻轉(zhuǎn)命令轉(zhuǎn)換成安 全硬件合成指令。否則,系統(tǒng)管理程序180丟棄該翻轉(zhuǎn)請(qǐng)求,因?yàn)閺脑摲謪^(qū)生成的像素不應(yīng)被發(fā)送到顯示器。注意,如果有另外的圖形內(nèi)容疊加在該分區(qū)的輸出之上, 則合成是必需的。否則,系統(tǒng)管理程序180可跳過(guò)合成過(guò)程,并將輸出直接翻轉(zhuǎn)到 顯示器。在這一解決方案中,圖形硬件140可提供適當(dāng)?shù)淖?cè)界面來(lái)定義源和目的地 表面的屬性。源表面指的是從其中復(fù)制像素的虛擬桌面緩沖區(qū),而目的地是向其復(fù) 制像素的合成緩沖區(qū)。表面屬性包括但不限于,基址、色深度(每一像素的位數(shù))、 色彩方案(RGB還是YUV)、寬度、高度、以及每一掃描線(xiàn)的字節(jié)數(shù)。因此,合 成過(guò)程是支持色彩空間轉(zhuǎn)換和阿爾法通道處理的簡(jiǎn)單像素復(fù)制過(guò)程。阿爾法通道支 持可能是必要的,因?yàn)橄到y(tǒng)管理程序180可能需要在一分區(qū)的輸出之上疊加另一用 戶(hù)界面。 一個(gè)示例是添加允許用戶(hù)將顯示器從一個(gè)分區(qū)切換到另一分區(qū)的界面。在更高級(jí)的解決方案中,像素復(fù)制也可涉及坐標(biāo)轉(zhuǎn)換。系統(tǒng)管理程序可選擇 在一窗口中示出來(lái)自每一分區(qū)的輸出,使得物理顯示器可被共享,而非使單個(gè)分區(qū)擁有整個(gè)顯示器。圖2示出了支持主機(jī)系統(tǒng)上的多個(gè)虛擬桌面緩沖區(qū)的加窗顯示的桌面合成緩 沖區(qū)系統(tǒng)的修改。主機(jī)系統(tǒng)的用戶(hù)或管理員可能希望同時(shí)查看當(dāng)前在主機(jī)機(jī)器上執(zhí) 行的虛擬機(jī)的桌面或屏幕顯示。方便這一顯示的一種便利的方式是將每一虛擬桌面 緩沖區(qū)作為合成桌面緩沖區(qū)上的一個(gè)窗口來(lái)對(duì)待。最簡(jiǎn)單的解決方案是向每一虛擬 桌面緩沖區(qū)分配一深度值,使得系統(tǒng)管理程序180有辦法決定從這些虛擬緩沖區(qū)中 復(fù)制像素的正確次序。此處,最簡(jiǎn)單的解決方案是所謂的畫(huà)家(painter)算法,其 中按照深度的次序?qū)Υ翱谂判?,并且以最遠(yuǎn)(底部)窗口最先且最近(頂部)窗口 最后來(lái)完成合成。該合成可在每次在任何分區(qū)上發(fā)生翻轉(zhuǎn)時(shí)完成??赏ㄟ^(guò)仔細(xì)地解 決受到翻轉(zhuǎn)操作的影響的區(qū)域并僅取改變的像素來(lái)容易地實(shí)現(xiàn)優(yōu)化。在圖2中,合成緩沖區(qū)151主存窗口 210、 220和230。在這一最簡(jiǎn)單的示例 中,窗口不重疊,并且呈現(xiàn)順序是不重要的。但是實(shí)際上,通常會(huì)看到重疊的窗口, 并且呈現(xiàn)順序可由系統(tǒng)管理程序來(lái)適當(dāng)維護(hù)。窗口對(duì)應(yīng)于在主機(jī)計(jì)算機(jī)上執(zhí)行的虛 擬機(jī),并且期望被映射或關(guān)聯(lián)到相應(yīng)的虛擬桌面緩沖區(qū)。例如,窗口210對(duì)應(yīng)于虛 擬機(jī)IIO,并且被映射到虛擬桌面緩沖區(qū)111。窗口 220對(duì)應(yīng)于虛擬機(jī)120,并且 被映射到虛擬桌面緩沖區(qū)121。類(lèi)似地,窗口 230對(duì)應(yīng)于虛擬機(jī)130,并且被映射 到虛擬桌面緩沖區(qū)131。在這一情形中,虛擬桌面緩沖區(qū)111、 121、 131和合成緩沖區(qū)151通常具有 不同的表面屬性。更重要的是,因?yàn)槊恳惶摂M機(jī)不知道它沒(méi)有對(duì)主機(jī)系統(tǒng)的完全控帝U,并且其顯示可在主機(jī)系統(tǒng)上執(zhí)行的窗口中顯示而非全屏顯示,因此每一虛擬桌 面將離合成緩沖區(qū)151的原點(diǎn)有一位移。必須轉(zhuǎn)換虛擬桌面緩沖區(qū)的內(nèi)容以反映其 在主機(jī)顯示器171上的加窗位置。為方便這一轉(zhuǎn)換,圖形硬件將需要提供另外的注 冊(cè)表以在需要發(fā)生復(fù)制時(shí)定義固定轉(zhuǎn)換。該轉(zhuǎn)換向量必須被儲(chǔ)存在僅可從如系統(tǒng)管理程序180等可信軟件訪問(wèn)的可信位置,諸如偏移量270中。偏移量可包括特定虛 擬桌面緩沖區(qū)的坐標(biāo)與顯示器171上被分配給虛擬機(jī)的窗口之間的變換。當(dāng)生成復(fù) 制的像素的目的地坐標(biāo)時(shí),圖形硬件應(yīng)考慮到這一位移。另外,還可向圖形硬件140引入緩沖區(qū)啟用153以激活或禁用這一安全合成 特征。為確保安全性,定義源和目的地表面的屬性的注冊(cè)表例如可由諸如系統(tǒng)管理 程序180等可信軟件進(jìn)程來(lái)控制。然而,如何實(shí)現(xiàn)這一控制在本發(fā)明的范圍之外。圖3是示出根據(jù)本發(fā)明的用于桌面緩沖區(qū)合成的示例性方法的框圖。多個(gè)虛 擬機(jī)在主機(jī)計(jì)算機(jī)上執(zhí)行,主機(jī)計(jì)算機(jī)包括圖形硬件和顯示器。在全屏情況下,系 統(tǒng)管理程序180基于用戶(hù)輸入來(lái)確定擁有該顯示器的虛擬機(jī)。在加窗情況下,系統(tǒng) 管理程序180基于用戶(hù)輸入來(lái)確定呈現(xiàn)順序。虛擬機(jī)將顯示數(shù)據(jù)寫(xiě)入其各自的虛擬 桌面緩沖區(qū)中。當(dāng)發(fā)生翻轉(zhuǎn)時(shí),系統(tǒng)管理程序180判定是否需要發(fā)生安全合成。如 果系統(tǒng)管理程序需要在虛擬機(jī)的輸出之上添加用戶(hù)界面或者翻轉(zhuǎn)僅對(duì)物理顯示器 的一部分有效,則需要合成。對(duì)于需要合成的情況,可使用圖形硬件上的合成緩沖 區(qū)來(lái)創(chuàng)建被發(fā)送給顯示器的合成圖像。在310處,多個(gè)虛擬機(jī)可在一主機(jī)計(jì)算機(jī)上執(zhí)行。每一虛擬機(jī)被分配主機(jī)計(jì) 算機(jī)資源的某一小部分,但是相信它具有對(duì)主機(jī)計(jì)算機(jī)資源的完整控制。因此,虛 擬機(jī)生成顯示數(shù)據(jù),并且相信該顯示數(shù)據(jù)被顯示在主機(jī)計(jì)算機(jī)的顯示器上。所生成 的顯示數(shù)據(jù)可被寫(xiě)入例如由主機(jī)計(jì)算機(jī)分配給虛擬機(jī)的虛擬桌面緩沖區(qū)中。在320處,主機(jī)計(jì)算機(jī)的用戶(hù)或管理員可選擇虛擬機(jī)之一來(lái)控制,或?qū)@示 數(shù)據(jù)輸出到主機(jī)計(jì)算機(jī)的顯示器。管理員可能希望例如在所選虛擬機(jī)的環(huán)境中控制 或執(zhí)行應(yīng)用程序?;蛘?,用戶(hù)可能希望在主機(jī)計(jì)算機(jī)上同時(shí)查看若干虛擬機(jī)。在這 一情況下,與虛擬機(jī)相關(guān)聯(lián)的桌面可例如在主機(jī)計(jì)算機(jī)的屏幕上分開(kāi)的窗口中顯 示。在330處,安全進(jìn)程或系統(tǒng)管理程序設(shè)置主機(jī)計(jì)算機(jī)的圖形硬件以反映所選 的一個(gè)或多個(gè)虛擬機(jī)。圖形硬件理想地包括合成例如緩沖區(qū)和緩沖區(qū)啟用。合成緩 沖區(qū)是具有特殊訪問(wèn)控制的專(zhuān)用硬件緩沖區(qū)。讀訪問(wèn)被授予顯示邏輯,而寫(xiě)訪問(wèn)被 授予安全合成進(jìn)程。該理念是避免惡意軟件進(jìn)程復(fù)制或干擾例如虛擬桌面緩沖區(qū)的內(nèi)容。為了指示圖形硬件將正確的虛擬機(jī)緩沖區(qū)復(fù)制到合成緩沖區(qū),設(shè)置緩沖區(qū)啟 用,并且表面屬性由系統(tǒng)管理程序配置以指定哪一 (如果有)虛擬桌面緩沖區(qū)應(yīng)由 圖形硬件復(fù)制到合成緩沖區(qū)??墒褂帽绢I(lǐng)域中已知的用于啟用緩沖區(qū)的任何系統(tǒng)、 方法或技術(shù)。在340處,圖形硬件可將一個(gè)或多個(gè)虛擬桌面緩沖區(qū)的內(nèi)容復(fù)制到合成緩沖 區(qū)。圖形硬件理想地遵循源表面上的坐標(biāo)轉(zhuǎn)換向量和阿爾法值以執(zhí)行與已在合成緩 沖區(qū)中的內(nèi)容的正確混和。可使用混和像素領(lǐng)域中已知的任何系統(tǒng)、方法或技術(shù)。在有多個(gè)虛擬桌面緩沖區(qū)共享同一顯示器的情況下,或當(dāng)用戶(hù)界面覆蓋物僅 占據(jù)一較小的屏幕面積時(shí),期望首先轉(zhuǎn)換坐標(biāo)以反映主機(jī)計(jì)算機(jī)顯示器上顯示內(nèi)容 的位置。例如,由于用戶(hù)正在顯示器上分開(kāi)的桌面窗口中査看虛擬機(jī),并且虛擬機(jī) 如同它們正被直接顯示在顯示器上那樣輸出其顯示數(shù)據(jù),因此期望更改或變換顯示 數(shù)據(jù)以反映其各自的窗口的位置和尺寸。可使用本領(lǐng)域中已知的用于轉(zhuǎn)換坐標(biāo)的任 何系統(tǒng)、方法或技術(shù)。在350處,掃描合成緩沖區(qū)的內(nèi)容并將其轉(zhuǎn)換成適用于物理顯示器的信號(hào)。 合成緩沖區(qū)的內(nèi)容可使用本領(lǐng)域中己知的任何系統(tǒng)、方法或技術(shù)來(lái)掃描和顯示。圖4是根據(jù)本發(fā)明的示例性桌面緩沖區(qū)合成系統(tǒng)的框圖。該系統(tǒng)包括用于執(zhí) 行各功能的裝置、設(shè)備、軟件和/或硬件,包括緩沖器403、啟用器406、檢索器407 和變換器409。緩沖器403包括硬件合成緩沖區(qū)。如上所述,合成緩沖區(qū)接收當(dāng)前控制虛擬 機(jī)主機(jī)計(jì)算機(jī)的顯示器的虛擬機(jī)的虛擬桌面緩沖區(qū)的副本。然后可由主機(jī)計(jì)算機(jī)的 圖形硬件呈現(xiàn)該合成緩沖區(qū)的內(nèi)容并在顯示器上輸出。因?yàn)楹铣删彌_區(qū)是用硬件來(lái) 實(shí)現(xiàn)的,因此極大地降低了惡意應(yīng)用程序捕捉緩沖區(qū)的內(nèi)容的風(fēng)險(xiǎn)。在主機(jī)計(jì)算機(jī)能夠向多個(gè)虛擬機(jī)提供對(duì)顯示器的控制的情況下,例如在分開(kāi)的窗口中,緩沖器403可以進(jìn)一步被劃分成對(duì)應(yīng)于各虛擬機(jī)的部分。這些部分然后 可接收其相應(yīng)的虛擬機(jī)的虛擬桌面緩沖區(qū)。緩沖區(qū)403可以被實(shí)現(xiàn)為例如雙緩沖 區(qū)。然而,可使用本領(lǐng)域中已知的用于實(shí)現(xiàn)緩沖區(qū)的任何系統(tǒng)、方法或技術(shù)。啟用器406理想地控制哪一虛擬機(jī)的虛擬桌面緩沖區(qū)被復(fù)制到緩沖器403。啟 用器406可包括安全注冊(cè)表,或可由圖形硬件以及諸如系統(tǒng)管理程序等某一其它安 全軟件進(jìn)程訪問(wèn)的其它安全存儲(chǔ)器位置。當(dāng)系統(tǒng)管理程序向一個(gè)或多個(gè)虛擬機(jī)提供 主機(jī)顯示器時(shí),系統(tǒng)管理程序理想地設(shè)置啟用器406以指示哪一虛擬機(jī)應(yīng)被復(fù)制到合成緩沖區(qū)。啟用器406可以使用固件、硬件(用硅)或兩者的組合來(lái)實(shí)現(xiàn)。檢索器407理想地檢索源虛擬桌面緩沖區(qū),并且在需要阿爾法混和的情況下 可任選地檢索目的地合成緩沖區(qū),應(yīng)用正確的混和,并通過(guò)變換器409將其寫(xiě)出到 緩沖器403中。檢索器407可通過(guò)參考啟用器406來(lái)確定哪一或哪些虛擬機(jī)被選為 源。檢索器407理想地用諸如圖形卡等硬件來(lái)實(shí)現(xiàn)。用硬件實(shí)現(xiàn)檢索器407可針對(duì) 在主機(jī)系統(tǒng)上執(zhí)行的惡意軟件應(yīng)用程序進(jìn)行保護(hù),因?yàn)閷?duì)虛擬桌面緩沖區(qū)的訪問(wèn)可 被限于實(shí)現(xiàn)檢索器407的硬件設(shè)備。檢索器407可使用本領(lǐng)域中已知的用于由硬件 設(shè)備來(lái)檢索和操縱像素?cái)?shù)據(jù)的任何系統(tǒng)、方法或技術(shù)來(lái)實(shí)現(xiàn)。變換器409將從虛擬機(jī)檢索的顯示數(shù)據(jù)變換成合成緩沖區(qū)的色彩格式。它還 在源和目的地表面之間轉(zhuǎn)換坐標(biāo)。由于虛擬機(jī)不知道它們沒(méi)有對(duì)包括顯示器在內(nèi)的 主機(jī)系統(tǒng)的完整控制,因此虛擬機(jī)在相對(duì)于整個(gè)顯示器的坐標(biāo)中向虛擬機(jī)緩沖區(qū)輸 出顯示數(shù)據(jù)。在主機(jī)系統(tǒng)上,這些虛擬機(jī)可在桌面上分開(kāi)的窗口中顯示,其每一個(gè) 具有其自己的相對(duì)于顯示器的坐標(biāo)系統(tǒng)。因此,為確保虛擬機(jī)被顯示在主機(jī)計(jì)算機(jī) 上其正確的窗口中,合成緩沖區(qū)中的顯示數(shù)據(jù)在通過(guò)緩沖器403被儲(chǔ)存到合成緩沖 區(qū)之前理想地由轉(zhuǎn)換器409變換。用于虛擬機(jī)的變換數(shù)據(jù)或偏移量可被儲(chǔ)存在例如 圖形硬件上。可使用用于轉(zhuǎn)換顯示數(shù)據(jù)的任何系統(tǒng)、方法或技術(shù)。示例性計(jì)算環(huán)境圖5示出了適合在其中實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)環(huán)境500的一個(gè)示例。計(jì)算系 統(tǒng)環(huán)境500僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非對(duì)本發(fā)明的使用范圍或功能提出 任何局限。也不應(yīng)將計(jì)算環(huán)境500解釋為對(duì)示例性操作環(huán)境500中示出的任一組件 或其組合具有任何依賴(lài)或需求。本發(fā)明可以使用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適用于本 發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器 計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編 程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布 式計(jì)算環(huán)境等等。本發(fā)明可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文 環(huán)境中描述。 一般而言,程序模塊包括執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類(lèi)型 的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。本發(fā)明也可以在其中任務(wù)由通過(guò)通信 網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參考圖5,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)510形式的通用計(jì)算設(shè)備。計(jì)算機(jī)510的組件可包括但不限于,處理單元520、系統(tǒng)存儲(chǔ)器530以及將包 括系統(tǒng)存儲(chǔ)器的各類(lèi)系統(tǒng)組件耦合至處理單元520的系統(tǒng)總線(xiàn)521。計(jì)算機(jī)510通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算 機(jī)510訪問(wèn)的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。 作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ) 介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息 的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ) 介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、 數(shù)字多功能盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè) 備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)510訪問(wèn)的任一其它介質(zhì)。系統(tǒng)存儲(chǔ)器530包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如 只讀存儲(chǔ)器(ROM) 531和隨機(jī)存取存儲(chǔ)器(RAM) 532?;据斎?輸出系統(tǒng)533(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)510內(nèi)的元件之間傳輸信息的基本例程, 它通常儲(chǔ)存在ROM531中。RAM 532通常包含處理單元520立即可訪問(wèn)或者當(dāng)前 正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖5示出了操作系統(tǒng)534、應(yīng) 用程序535、其它程序模塊536和程序數(shù)據(jù)537。計(jì)算機(jī)510也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。 僅作示例,圖5示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫(xiě)的硬盤(pán)驅(qū)動(dòng)器540, 對(duì)可移動(dòng)、非易失性磁盤(pán)552進(jìn)行讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器551,以及對(duì)可移動(dòng)、非易失 性光盤(pán)556,如CDROM或其它光介質(zhì)進(jìn)行讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器555??梢栽谑纠?操作環(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但 不限于,磁帶盒、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM 等等。硬盤(pán)驅(qū)動(dòng)器541通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口 540連接到系統(tǒng)總線(xiàn) 521,磁盤(pán)驅(qū)動(dòng)器551和光盤(pán)驅(qū)動(dòng)器555通常通過(guò)可移動(dòng)存儲(chǔ)器接口 ,如接口 550 連接到系統(tǒng)總線(xiàn)521。驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)510提供了計(jì)算機(jī)可讀指令、數(shù) 據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖5中,示出硬盤(pán)驅(qū)動(dòng)器541儲(chǔ)存 操作系統(tǒng)544、應(yīng)用程序545、其它程序模塊546和程序數(shù)據(jù)547。注意,這些組 件可以與操作系統(tǒng)534、應(yīng)用程序535、其它程序模塊536和程序數(shù)據(jù)537相同,也可以與它們不同。這里對(duì)操作系統(tǒng)544、應(yīng)用程序545、其它程序模塊546和程 序數(shù)據(jù)547給予不同的標(biāo)號(hào)來(lái)說(shuō)明至少它們是不同的副本。用戶(hù)可以通過(guò)輸入設(shè) 備,如鍵盤(pán)562和定位設(shè)備561 (通常指鼠標(biāo)、跟蹤球或觸摸墊)向計(jì)算機(jī)510輸 入命令和信息。其它輸入設(shè)備(未示出)可包括話(huà)筒、操縱桿、游戲墊、圓盤(pán)式衛(wèi) 星天線(xiàn)、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線(xiàn)的用戶(hù)輸入接 口 560連接至處理單元520,但是也可以通過(guò)其它接口和總線(xiàn)結(jié)構(gòu)連接,如并行端 口、游戲端口或通用串行總線(xiàn)(USB)。監(jiān)視器591或其它類(lèi)型的顯示設(shè)備也通過(guò) 接口,如視頻接口 590連接至系統(tǒng)總線(xiàn)521。除監(jiān)視器之外,計(jì)算機(jī)也可包括其它 外圍輸出設(shè)備,如揚(yáng)聲器597和打印機(jī)596,它們通過(guò)輸出外圍接口 595連接。計(jì)算機(jī)510可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)580的邏輯連 接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)580可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng) 絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)的網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對(duì)于計(jì)算機(jī)510 所描述的元件,盡管在圖5中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備581。圖5描述的邏輯連接 包括局域網(wǎng)(LAN) 571和廣域網(wǎng)(WAN) 573,但也可包括其它網(wǎng)絡(luò)。這類(lèi)網(wǎng)絡(luò) 環(huán)境常見(jiàn)于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。如上所述,盡管結(jié)合各種計(jì)算設(shè)備描述了本發(fā)明的示例性實(shí)施例,但是其基 本概念可被應(yīng)用于任何計(jì)算設(shè)備或系統(tǒng)。此處所描述的各種技術(shù)可結(jié)合硬件、固件或軟件、或在適當(dāng)時(shí)用所有這些的 組合來(lái)實(shí)現(xiàn)。由此,本發(fā)明的方法和裝置或其某些方面或部分可采用包含在諸如軟 盤(pán)、CD-ROM、硬盤(pán)驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼 (即,指令)的形式,其中,當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器中并由其執(zhí)行 時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。在可編程計(jì)算機(jī)上的程序代碼執(zhí)行的情況 下,計(jì)算設(shè)備一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存 儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。如有需要,程 序可以用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。在任何情況下,語(yǔ)言可以是已編譯或已解釋 語(yǔ)言,并與硬件實(shí)現(xiàn)相組合。本發(fā)明的方法和裝置也可通過(guò)以程序代碼的形式表現(xiàn)的通信來(lái)實(shí)現(xiàn),該程序 代碼通過(guò)某一傳輸介質(zhì)來(lái)發(fā)送,如通過(guò)電線(xiàn)或電纜、通過(guò)光纖或通過(guò)任一其它形式 的傳輸,其中,當(dāng)程序代碼由諸如EPROM、門(mén)陣列、可編程邏輯器件(PLD)、 客戶(hù)機(jī)計(jì)算機(jī)等的機(jī)器接收被裝載到其中由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合,以提供用于調(diào)用本發(fā)明的功能的唯一裝置。另外,用于本發(fā)明的任何存儲(chǔ)技術(shù)可以不變地為硬件和軟 件的組合。盡管結(jié)合各附圖的較佳實(shí)施例描述了本發(fā)明,但是可以理解,可使用其它類(lèi) 似的實(shí)施例或者可對(duì)所描述的實(shí)施例作出修改和添加以執(zhí)行本發(fā)明的相同功能而 不脫離本發(fā)明。因此,本發(fā)明不應(yīng)限于任何單一實(shí)施例,而是應(yīng)根據(jù)所附權(quán)利要求 書(shū)在寬度和范圍上進(jìn)行解釋。
權(quán)利要求
1.一種用于桌面合成的方法,所述方法包括在主機(jī)計(jì)算機(jī)處執(zhí)行至少一個(gè)虛擬機(jī),每一虛擬機(jī)包括一虛擬桌面緩沖區(qū);由所述虛擬機(jī)向其相應(yīng)的虛擬桌面緩沖區(qū)生成顯示數(shù)據(jù);啟用所述虛擬桌面緩沖區(qū)中的至少一個(gè);以及將所啟用的虛擬桌面緩沖區(qū)的內(nèi)容復(fù)制到一合成緩沖區(qū)。
2. 如權(quán)利要求l所述的方法,其特征在于,還包括將所述合成緩沖區(qū)的內(nèi)容 呈現(xiàn)到顯示器。
3. 如權(quán)利要求l所述的方法,其特征在于,還包括在主機(jī)計(jì)算機(jī)處執(zhí)行一安 全進(jìn)程以確定應(yīng)啟用哪一虛擬桌面緩沖區(qū)。
4. 如權(quán)利要求3所述的方法,其特征在于,所述安全進(jìn)程包括系統(tǒng)管理程序。
5. 如權(quán)利要求3所述的方法,其特征在于,所述合成緩沖區(qū)用硬件設(shè)備來(lái)實(shí) 現(xiàn),并且將所啟用的虛擬桌面緩沖區(qū)的內(nèi)容復(fù)制到所述合成緩沖區(qū)包括所述硬件設(shè) 備讀取所啟用的虛擬桌面緩沖區(qū)的內(nèi)容并將所啟用的虛擬桌面緩沖區(qū)的內(nèi)容寫(xiě)入 所述合成緩沖區(qū)中。
6. 如權(quán)利要求5所述的方法,其特征在于,對(duì)所述虛擬桌面緩沖區(qū)的讀訪問(wèn)對(duì)于各軟件進(jìn)程拒絕。
7. 如權(quán)利要求5所述的方法,其特征在于,對(duì)所述虛擬桌面緩沖區(qū)的讀訪問(wèn) 對(duì)于非安全軟件進(jìn)程拒絕。
8. 如權(quán)利要求l所述的方法,其特征在于,所述合成緩沖區(qū)是雙緩沖區(qū)。
9. 一種計(jì)算機(jī),所述計(jì)算機(jī)包括適用于執(zhí)行至少一個(gè)虛擬機(jī)的處理器,每一虛擬機(jī)將顯示數(shù)據(jù)生成到相關(guān)聯(lián)的虛擬機(jī)緩沖區(qū)中;適用于儲(chǔ)存所述虛擬機(jī)緩沖區(qū)的存儲(chǔ)器;圖形處理器,所述圖形處理器包括一合成緩沖區(qū),并且所述圖形處理器適用 于將所述虛擬機(jī)緩沖區(qū)的內(nèi)容從所述存儲(chǔ)器復(fù)制到所述合成緩沖區(qū)中。
10. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述圖形處理器還適用于呈現(xiàn)所述合成緩沖區(qū)的內(nèi)容。
11. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述處理器還適用于執(zhí)行一安全進(jìn)程,其中所述安全進(jìn)程啟用至少一個(gè)虛擬機(jī)。
12. 如權(quán)利要求ll所述的計(jì)算機(jī),其特征在于,所述安全進(jìn)程包括系統(tǒng)管理 程序。
13. 如權(quán)利要求ll所述的計(jì)算機(jī),其特征在于,所述圖形處理器還適用于確 定啟用了哪一虛擬機(jī),并將對(duì)應(yīng)于所啟用的虛擬機(jī)的虛擬機(jī)緩沖區(qū)的內(nèi)容從所述存 儲(chǔ)器復(fù)制到所述合成緩沖區(qū)中。
14. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述存儲(chǔ)器還適用于對(duì)各軟件進(jìn)程拒絕讀訪問(wèn)。
15. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述存儲(chǔ)器還適用于僅向安 全軟件進(jìn)程提供讀訪問(wèn)。
16. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述存儲(chǔ)器還適用于僅向所 述圖形處理器提供讀訪問(wèn)。
17. 如權(quán)利要求9所述的計(jì)算機(jī),其特征在于,所述合成緩沖區(qū)是雙緩沖區(qū)。
18. —種用于桌面合成的系統(tǒng),所述系統(tǒng)包括用于啟用至少一個(gè)虛擬機(jī)的啟用組件,所述虛擬機(jī)在一主機(jī)計(jì)算機(jī)上執(zhí)行; 用于從所啟用的虛擬機(jī)中檢索顯示數(shù)據(jù)的檢索組件; 用于儲(chǔ)存所檢索的顯示數(shù)據(jù)的合成緩沖區(qū);以及用于將所儲(chǔ)存的顯示數(shù)據(jù)變換成適用于在所述主機(jī)計(jì)算機(jī)上顯示的格式的轉(zhuǎn) 換組件。
19. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述檢索組件是圖形硬件設(shè)備 的一部分,并且所述顯示數(shù)據(jù)是由所述圖形硬件從所述主機(jī)計(jì)算機(jī)上的存儲(chǔ)器中檢 索的。
20. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述啟用組件包括在所述主機(jī) 計(jì)算機(jī)上執(zhí)行的安全進(jìn)程。
全文摘要
多個(gè)虛擬機(jī)在主機(jī)計(jì)算機(jī)上執(zhí)行,該主機(jī)計(jì)算機(jī)包括圖形硬件和顯示器。虛擬機(jī)將顯示數(shù)據(jù)寫(xiě)入其各自的虛擬桌面緩沖區(qū)中。選擇一虛擬機(jī)來(lái)輸出到主機(jī)計(jì)算機(jī)的顯示器上。對(duì)所選的虛擬機(jī)啟用圖形硬件上的合成緩沖區(qū)。與所選的虛擬機(jī)相關(guān)聯(lián)的虛擬桌面緩沖區(qū)的內(nèi)容由圖形硬件復(fù)制到合成緩沖區(qū)。合成緩沖區(qū)的內(nèi)容由圖形硬件來(lái)呈現(xiàn)和顯示。另外,對(duì)合成緩沖區(qū)的讀訪問(wèn)被限于圖形硬件,由此防止惡意軟件應(yīng)用程序跨分區(qū)捕捉顯示數(shù)據(jù)。
文檔編號(hào)G09G5/36GK101228571SQ200680026487
公開(kāi)日2008年7月23日 申請(qǐng)日期2006年7月14日 優(yōu)先權(quán)日2005年7月22日
發(fā)明者D·翁 申請(qǐng)人:微軟公司