專(zhuān)利名稱(chēng):桌面虛擬化客戶(hù)端與虛擬桌面間的虛擬桌面融合方法
技術(shù)領(lǐng)域:
本發(fā)明涉及桌面融合技術(shù)領(lǐng)域,尤其是一種桌面虛擬化客戶(hù)端與虛擬桌面間的虛擬桌面融合方法。
背景技術(shù):
目前,計(jì)算機(jī)虛擬化技術(shù)主要包括完全虛擬化、半虛擬化、操作系統(tǒng)層虛擬化。隨著硬件對(duì)虛擬化的支持以及“云計(jì)算”技術(shù)的興起,使得虛擬化產(chǎn)品得到更廣泛的發(fā)展。KVM 是當(dāng)今主流的全虛擬化技術(shù)之一?;跓o(wú)縫窗口融合技術(shù)的云終端客戶(hù)程序便是在其基礎(chǔ)上實(shí)現(xiàn)的。桌面融合起源于遠(yuǎn)程控制技術(shù),該技術(shù)通過(guò)在遠(yuǎn)程系統(tǒng)上的服務(wù)代理獲取其顯示內(nèi)容,然后通過(guò)網(wǎng)絡(luò)傳輸將顯示數(shù)據(jù)傳送到本地的顯示代理,由顯示代理在本地系統(tǒng)上進(jìn)行顯示,呈現(xiàn)給用戶(hù)遠(yuǎn)程系統(tǒng)桌面。同時(shí)本地代理也會(huì)將發(fā)生在此顯示窗口的鼠鍵事件發(fā)送給遠(yuǎn)程系統(tǒng),由此控制遠(yuǎn)程主機(jī)。其后用戶(hù)不滿(mǎn)足于單純的顯示功能,遠(yuǎn)程桌面和本地桌面或多或少的要進(jìn)行數(shù)據(jù)交互,如數(shù)據(jù)的復(fù)制、粘貼操作。如Linux采用的X窗口系統(tǒng),通過(guò)設(shè)置遠(yuǎn)程主機(jī)的X配置文件,將本地窗口作為其顯示端,便可支持遠(yuǎn)程X程序在本地桌面的顯示。Windows視窗沒(méi)有提供這種支持,其自身系統(tǒng)提供的是遠(yuǎn)程桌面功能。目前Virtual Box、VMWare虛擬化軟件擁有無(wú)縫窗口顯示技術(shù),該技術(shù)能夠使來(lái)賓操作系統(tǒng) (Guest Operating System,以下簡(jiǎn)稱(chēng)G0S)下的程序窗口在HOS桌面上顯示,用戶(hù)可以直接在宿主系統(tǒng)(Host Operating System,以下簡(jiǎn)稱(chēng)H0S)的桌面環(huán)境中對(duì)GOS程序窗口進(jìn)行操作,該模式極大的提高了虛擬化軟件的易用性,同時(shí)它利用虛擬化軟件的特性(直接對(duì)虛擬顯卡設(shè)備進(jìn)行訪(fǎng)問(wèn)等),改善了 GOS中程序窗口的顯示速度。其總體框架圖如附圖一所示,該總體框架圖的整個(gè)核心是存在于HOS中的服務(wù)代理,它將作為GOS在HOS桌面環(huán)境的代理,參加融合桌面環(huán)境的顯示和接收事件的工作。服務(wù)代理將從GOS域中獲取顯示圖像,建立X窗口進(jìn)行顯示,由于顯示GOS窗口內(nèi)容的是真正的X的窗口,所以可以擁有同其他HOS域程序相同的桌面環(huán)境使用權(quán)限,為達(dá)到直接顯示GOS域程序窗口的效果,服務(wù)代理將提過(guò)GOS的顯示內(nèi)容,并只呈現(xiàn)用戶(hù)關(guān)心的部分,這樣可以保證GOS的繪制風(fēng)格和顯示特性。同樣該服務(wù)代理也將代理GOS中程序與HOS域的程序進(jìn)行交互,完成域間的程序窗口交互,如域間窗口的復(fù)制、粘貼操作等。從而增強(qiáng)融合多域桌面的操作感。但是,現(xiàn)有的桌面融合技術(shù),主要為用戶(hù)提供客戶(hù)操作系統(tǒng)(GOS)顯示服務(wù)時(shí),大都為每個(gè)GOS分配獨(dú)立的顯示輸出窗口,在GOS運(yùn)行時(shí),該窗口將作為GOS桌面的代理,接收用戶(hù)輸入并輸出程序運(yùn)行結(jié)果。由于宿主系統(tǒng)(HOS)和GOS之間相互隔離,并無(wú)溝通機(jī)制,更無(wú)桌面環(huán)境的溝通機(jī)制且桌面環(huán)境配置不同的原因,大都將GOS的桌面環(huán)境和HOS的桌面操作環(huán)境相隔離,即GOS的顯示部分是一個(gè)位于HOS桌面環(huán)境內(nèi)的桌面環(huán)境,用以屏蔽因桌面環(huán)境不同而帶來(lái)的用戶(hù)鼠鍵操作的不一致。如果要操作GOS的軟件窗口,首先要將鼠鍵焦點(diǎn)切換到GOS顯示窗口中,在切換之后,鼠鍵事件將按照GOS的事件響應(yīng)策略得到處理,其作用范圍也僅局限在當(dāng)前GOS顯示窗口范圍內(nèi)。當(dāng)需要切換到HOS桌面環(huán)境時(shí),需要執(zhí)行特別的切換過(guò)程。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題在于提供一種桌面虛擬化客戶(hù)端與虛擬桌面間的虛擬桌面融合方法;可以克服現(xiàn)有融合技術(shù)導(dǎo)致的虛擬桌面中窗口顯示和用戶(hù)操作存在諸如鼠標(biāo)操作不順暢、畫(huà)面疊放、各個(gè)應(yīng)用界面切換出錯(cuò)等問(wèn)題。本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是在客戶(hù)端中部署服務(wù)代理,由所述的服務(wù)代理監(jiān)控客戶(hù)系統(tǒng)的桌面顯示狀態(tài),向融合桌面提供顯示控制信息;融合桌面根據(jù)信息控制客戶(hù)端在宿主系統(tǒng)桌面環(huán)境中的顯示內(nèi)容,實(shí)現(xiàn)客戶(hù)系統(tǒng)程序窗口在宿主系統(tǒng)桌面的直觀(guān)顯示。桌面融合的窗口顯示包括如下步驟,A、監(jiān)控GOS桌面顯示狀態(tài)分析當(dāng)前GOS中程序窗口的顯示狀態(tài),當(dāng)窗口顯示狀態(tài)變化時(shí),便會(huì)通知有效視圖獲取模塊獲得該變化;B、GOS有效視圖獲取根據(jù)系統(tǒng)中每個(gè)程序窗口的顯示狀態(tài)信息,獲取當(dāng)前桌面的有效視圖信息,并組織成數(shù)據(jù)結(jié)構(gòu),利用QEMU/KVM提供數(shù)據(jù)傳輸模塊發(fā)送至顯示服務(wù)提供方D-Agent中;C、QEMU/KVM 數(shù)據(jù)轉(zhuǎn)儲(chǔ)QEMU/KVM利用虛擬機(jī)制提供的內(nèi)存共享原理實(shí)現(xiàn)GOS到HOS的數(shù)據(jù)內(nèi)容傳遞,然后通過(guò)進(jìn)程間的數(shù)據(jù)傳輸通道將數(shù)據(jù)傳送給D-Agent ;D、D-Agent 視圖顯不D-Agent從QEMU/KVM中提取GOS桌面的整個(gè)顯示內(nèi)容,并根據(jù)GOS提供的有效視圖提示信息對(duì)其桌面內(nèi)容進(jìn)行切割,只在HOS的桌面上保留用戶(hù)關(guān)心的程序窗口部分;在進(jìn)行顯示前,對(duì)GOS的顯示內(nèi)容進(jìn)行HOS桌面的等比例匹配,消除HOS同GOS因?yàn)樽烂娣直媛实牟煌斐傻囊曈X(jué)偏差。用戶(hù)輸入的鼠鍵事件發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。所述的桌面內(nèi)容切割,即視圖域裁剪包括如下步驟,A、匹配顯示環(huán)境,提供顯示窗口將GOS的顯示內(nèi)容進(jìn)行等比例拉伸,將顯示窗口最大化,將GOS視圖域顯示范圍擴(kuò)展到整個(gè)HOS有效顯示桌面;B、獲取GOS有效視圖域通過(guò)GOS中的服務(wù)代理,分析GOS視圖域內(nèi)容;經(jīng)過(guò)選擇策略,獲取有效視圖域的
信息;C、有效視圖域信息的傳遞包括有效視圖域信息GOS到QEMU/KVM的傳遞,和QEMU/KVM到D_Agent的傳遞,分別涉及域間數(shù)據(jù)輸和進(jìn)程;D、視圖域裁剪D_Agent按照取得的有效視圖域信息對(duì)視圖域顯示窗口進(jìn)行裁剪,桌面呈現(xiàn)有效視圖域顯示內(nèi)容。
所述的桌面內(nèi)容切割,即視圖域裁剪包括如下步驟,A、匹配顯示環(huán)境,提供顯示窗口用戶(hù)事件的處理流程是,A、代理接收D_Agent的顯示窗口作為GOS桌面代理,接收用戶(hù)的鼠鍵事件,當(dāng)?shù)弥脩?hù)鼠鍵焦點(diǎn)進(jìn)入自身的有效視圖域時(shí),D_Agent啟動(dòng)獲取用戶(hù)事件機(jī)制,截獲用戶(hù)產(chǎn)生的所有鼠鍵事件; B、由于D_Agent代替QEMU/KVM取得用戶(hù)事件,所以鼠鍵事件需要解析組合成 QEMU/KVM能夠識(shí)別的消息;C、D_Agent通過(guò)進(jìn)程間通信方式將用戶(hù)事件發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。QEMU/KVM接收到事件后,以硬件中斷的方式發(fā)送給GOS,GOS處理這些硬件中斷, 轉(zhuǎn)化成可以識(shí)別的鼠鍵信息,然后,根據(jù)事件做出反應(yīng);最終引起窗口內(nèi)容改變、窗口位置改變、窗口創(chuàng)建和銷(xiāo)毀等視圖域的狀態(tài)變化。所述的窗口無(wú)縫化分為GOS有效視圖域獲取、QEMU/KVM數(shù)據(jù)傳遞、D_Agent視圖域裁剪、D_Agent用戶(hù)事件轉(zhuǎn)換;所述的,GOS有效視圖域獲取是分析當(dāng)前GOS的視圖域內(nèi)容信息,從中獲取有效視圖域;該部分由HOOK模塊和外部服務(wù)程序組成,其中HOOK模塊監(jiān)控GOS有效視圖域的變化,服務(wù)程序用于獲取GOS的裁剪區(qū)域,并利用域間數(shù)據(jù)傳輸通道將裁剪區(qū)域信息發(fā)送給QEMU/KVM ;QEMU/KVM數(shù)據(jù)傳遞是接收GOS服務(wù)程序發(fā)來(lái)的裁剪區(qū)域數(shù)據(jù),并將該數(shù)據(jù)提供給
D.Agent ;所述的數(shù)據(jù)傳輸采用內(nèi)存拷貝方法,QEMU/KVM到D_Agent的通信則采用管道的方法來(lái)進(jìn)行;D_Agent用戶(hù)事件轉(zhuǎn)換位于D_Agent中,用于處理鼠鍵事件格式的轉(zhuǎn)換,并將事件傳送至消息的處理方(QEMU/KVM);視圖域裁剪將從QEMU/KVM獲取GOS域的顯示內(nèi)容,并根據(jù)提供的裁剪信息根據(jù)裁剪算法對(duì)顯示內(nèi)容進(jìn)行裁剪;裁剪區(qū)域是當(dāng)前系統(tǒng)桌面中有效視圖域顯示部分范圍的集合,獲取裁剪域算法將分析當(dāng)前GOS的有效視圖域,從其信息中提取裁剪區(qū)域,供D_Agent 對(duì)GOS視圖域的裁剪。裁剪區(qū)域獲取算法是枚舉當(dāng)前系統(tǒng)中每個(gè)窗口,根據(jù)一定的窗口選擇策略,篩選出可視窗口,將其窗口顯示范圍與最終結(jié)果進(jìn)行或運(yùn)算,最后得到一個(gè)所有程序窗口總的顯示區(qū)域,便是裁剪區(qū)域。在進(jìn)行獲取算法前對(duì)窗口進(jìn)行篩選,,篩選策略需要?jiǎng)h除空窗口,或者與主程序窗口重疊的窗口 ;采用屬性刪除策略和無(wú)效值刪除策略?xún)煞N。 屬性刪除策略主要以窗口的常規(guī)屬性和額外屬性為刪除依據(jù)來(lái)篩選窗口,當(dāng)屬性為不可視窗口、子窗口、窗口名為Program MalIager的窗口應(yīng)當(dāng)被排除在有效視圖域之外。無(wú)效值刪除策略主要?jiǎng)h除非法值的窗口、無(wú)效值窗口。將鍵盤(pán)事件分離成鍵盤(pán)掃描碼,鼠標(biāo)事件則分離成鼠標(biāo)向量信息入。本發(fā)明通過(guò)無(wú)縫窗口技術(shù)在客戶(hù)系統(tǒng)中部署服務(wù)代理,監(jiān)控客戶(hù)系統(tǒng)的桌面顯示狀態(tài),向融合桌面提供顯示控制信息,融合桌面會(huì)根據(jù)此信息控制客戶(hù)系統(tǒng)在宿主系統(tǒng)桌面環(huán)境中的顯示內(nèi)容,實(shí)現(xiàn)客戶(hù)系統(tǒng)程序窗口在宿主系統(tǒng)桌面的直觀(guān)顯示,為用戶(hù)提供一個(gè)能夠顯示多域內(nèi)容的桌面,在桌面上呈現(xiàn)不同域的程序窗口 ;此外,融合桌面不需要在 GOS和HOS視窗間切換便可操作不同操作系統(tǒng)下的應(yīng)用軟件窗口,不必再捕獲鼠鍵的作用范圍。
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明圖I是融合桌面結(jié)構(gòu)圖;圖2是本發(fā)明無(wú)縫窗口服務(wù)流程圖;圖3是本發(fā)明無(wú)縫窗口模式用戶(hù)事件處理示意圖;圖4是本發(fā)明無(wú)縫窗口框架圖;圖5是本發(fā)明裁剪域獲取算法示意圖。
具體實(shí)施例方式本發(fā)明在多域的桌面環(huán)境的融合中保留HOS的桌面環(huán)境,消除其他GOS域的桌面, 在HOS域桌面環(huán)境的基礎(chǔ)上重新建立多域桌面環(huán)境,在重建的桌面環(huán)境中,GOS域只提供其運(yùn)算產(chǎn)生的圖像數(shù)據(jù),由HOS的桌面環(huán)境為其組織顯示工作,并在此顯示基礎(chǔ)上,重新構(gòu)建多域窗口之間的溝通機(jī)制,來(lái)滿(mǎn)足融合桌面環(huán)境的操作感一致。同時(shí),面向用戶(hù)提供桌面融合的服務(wù)方(D_Agent)將采用獨(dú)立進(jìn)程的存在方式, 利用消息傳遞的方式來(lái)控制管理QEMU/KVM,只在QEMU/KVM增加消息響應(yīng)的模塊,這樣可以最大限度的降低對(duì)QEMU/KVM代碼和運(yùn)行結(jié)構(gòu)的影響。為實(shí)現(xiàn)D_Agent對(duì)多個(gè)QEMU/KVM的分別管理,為每個(gè)QEMU/KVM增加消息傳遞通道。這樣可以使隔離各個(gè)QEMU/KVM,當(dāng)其中一個(gè)崩潰時(shí),不會(huì)影響到其他的運(yùn)行。利用D_Agent對(duì)多個(gè)GOS的桌面融合效果進(jìn)行管理,解決GOS中的程序窗口無(wú)法識(shí)別問(wèn)題,方便用戶(hù)識(shí)別操作。GOS的服務(wù)代理模塊則采用用戶(hù)進(jìn)程的方式來(lái)運(yùn)行,這樣可以最小化對(duì)GOS運(yùn)行效率的影響,在服務(wù)代理模塊崩潰時(shí),不會(huì)對(duì)其他GOS的運(yùn)行造成影響。桌面融合的服務(wù)方(D_Agent)面向用戶(hù)提供桌面融合的服務(wù)方(D_Agent)將代理 GOS進(jìn)行桌面的顯示工作,為達(dá)到無(wú)縫顯示效果,它將從GOS中獲取桌面視圖,并對(duì)視圖內(nèi)容進(jìn)行刪選,只保留并顯示程序窗口部分的顯示內(nèi)容,同時(shí)也代替GOS接收用戶(hù)事件。無(wú)縫窗門(mén)功能的顯示部分執(zhí)行流程如下附圖2所示I.監(jiān)控GOS桌面顯示狀態(tài)分析當(dāng)前GOS中程序窗口的顯示狀態(tài),當(dāng)窗口顯示狀態(tài)(以下稱(chēng)有效視圖)變化時(shí),便會(huì)通知有效視圖獲取模塊來(lái)獲得該變化。2. GOS有效視圖獲取根據(jù)系統(tǒng)中每個(gè)程序窗口的顯示狀態(tài)信息,獲取當(dāng)前桌面的有效視圖信息,并組織成數(shù)據(jù)結(jié)構(gòu),利用QEMU/KVM提供數(shù)據(jù)傳輸模塊發(fā)送至顯示服務(wù)提供方D_Agent中。3. QEMU/KVM 數(shù)據(jù)轉(zhuǎn)儲(chǔ)為達(dá)到較快的數(shù)據(jù)傳輸效率,QEMU/KVM將利用虛擬機(jī)制提供的內(nèi)存共享原理來(lái)實(shí)現(xiàn)GOS到HOS的數(shù)據(jù)內(nèi)容傳遞,然后通過(guò)進(jìn)程間的數(shù)據(jù)傳輸通道將數(shù)據(jù)傳送給D_Agent
4. D_Agent 視圖顯示D_Agent從QEMU/KVM中提取GOS桌面的整個(gè)顯示內(nèi)容,并根據(jù)GOS提供的有效視圖提示信息對(duì)其桌面內(nèi)容進(jìn)行切割,只在HOS的桌面上保留用戶(hù)關(guān)心的程序窗口部分,在進(jìn)行顯示前,還需要對(duì)GOS的顯示內(nèi)容進(jìn)行HOS桌面的等比例匹配,來(lái)消除HOS同GOS因?yàn)樽烂娣直媛实牟煌斐傻囊曈X(jué)偏差。由于是D_Agent提供顯示窗口,所以它也將接受到用戶(hù)輸入的鼠鍵事件,但并不提供處理這些事件的方法,所以鼠鍵事件要被發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。由于 D_Agent也是HOS域中的窗口程序,所以鼠鍵狀態(tài)不會(huì)丟失。在QEMU/KVM基礎(chǔ)上的虛擬桌面無(wú)縫窗口提供的是一種GOS的顯示策略和操作策略,用于GOS顯示內(nèi)容到HOS桌面環(huán)境的融合。它將提取GOS域的顯示內(nèi)容,在HOS桌面環(huán)境中重新組織GOS域內(nèi)程序窗口的顯示,由于顯示服務(wù)提供方(Display Agent,簡(jiǎn)稱(chēng)D_ Agent)只提取GOS域的顯示信息,所以GOS域內(nèi)程序窗口的繪制風(fēng)格和窗口行為均得到保
&3 甶o經(jīng)過(guò)D_Agent的代理顯示,所有GOS域內(nèi)的顯示內(nèi)容均為HOS桌面的窗口,所以鼠鍵事件可以自由的在任意域下的程序窗口中作用,不必因各域的顯示范圍不同而造成鼠標(biāo)、鍵盤(pán)狀態(tài)的改變和丟失。讓HOS的桌面環(huán)境中可以共存多種繪制風(fēng)格,多種事件響應(yīng)風(fēng)格的程序窗口。因此,無(wú)縫窗口模式需要滿(mǎn)足的功能如下 GOS桌面有效內(nèi)容在HOS桌面環(huán)境中的顯示。 鼠標(biāo)、鍵盤(pán)作用范圍的釋放。
GOS程序窗口自適應(yīng)HOS桌面環(huán)境。無(wú)縫窗口技術(shù)是為用戶(hù)提供的另一種GOS使用操作方式,它提供的是一種GOS的顯示策略和操作策略,用于GOS顯示內(nèi)容到HOS桌面環(huán)境的融合。在無(wú)縫窗口服務(wù)運(yùn)行后,D_Agent顯示窗口將作為桌面的代理,面向用戶(hù)呈現(xiàn)GOS 桌面顯示內(nèi)容,即視圖域。根據(jù)視窗系統(tǒng)的Mask機(jī)制,D_Agent可以在原有顯示基礎(chǔ)上,采用一定的裁剪策略對(duì)視圖域進(jìn)行裁剪,只留下程序窗口部分,即有效視圖域,便得到了 GOS 程序顯示內(nèi)容直接呈現(xiàn)到HOS桌面環(huán)境的效果。根據(jù)Mask策略,視圖域被裁剪的部分不會(huì)接收到用戶(hù)事件,也不會(huì)影響其他程序窗口接收鼠鍵事件,而未裁剪部分(有效視圖域)由于是D_Agent的顯示窗口,可以從HOS 的桌面環(huán)境中獲得用戶(hù)鼠鍵事件,經(jīng)過(guò)事件傳輸過(guò)程.便可由事件處理方(QEMU/KVM)處理。從而達(dá)到用戶(hù)在HOS桌面環(huán)境中操作GOS程序的效果。其大致做法如附圖3所示I.匹配顯示環(huán)境,提供顯示窗口。D_Agent在HOS桌面環(huán)境中創(chuàng)建供GOS桌面顯示的窗口。用于顯示GOS的視圖域內(nèi)容,為保證顯示效果,D_Agent需要將GOS域的顯示內(nèi)容匹配到當(dāng)前的顯示環(huán)境,所以將 GOS的顯示內(nèi)容進(jìn)行屏幕匹配(等比例拉伸操作)。將顯示窗口最大化(非全屏,以免遮蓋 HOS桌面環(huán)境的啟動(dòng)欄等要素),將GOS視圖域顯示范圍擴(kuò)展到整個(gè)HOS有效顯示桌面。2.獲取GOS有效視圖域。做法是通過(guò)GOS中的服務(wù)代理,分析GOS視圖域內(nèi)容,經(jīng)過(guò)選擇策略,獲取有效視圖域的信息。3.有效視圖域信息的傳遞。該部分包括有效視圖域信息GOS到QEMU/KVM的傳遞,和QEMU/KVM到D_Agent的傳遞,分別涉及域間數(shù)據(jù)輸和進(jìn)程。4.視圖域裁剪。D_Agent按照取得的有效視圖域信息(裁剪區(qū)域)對(duì)視圖域顯示窗口進(jìn)行裁剪。桌面呈現(xiàn)有效視圖域顯示內(nèi)容。由于組建窗口并顯示的操作是在HOS中進(jìn)行的,所以D_Agent 提供的顯示窗口遵循HOS內(nèi)的視窗顯示策略,由于HOS中不存在GOS的獨(dú)立顯示窗口,用戶(hù)的鼠鍵事件發(fā)生在HOS內(nèi)各個(gè)應(yīng)用窗口間,所以鼠鍵操作范圍不會(huì)受到程序歸屬的影響。 附圖三為無(wú)縫窗口模式用戶(hù)事件的處理流程(I).代理接收D_Agent的顯示窗口作為GOS桌面代理,來(lái)接收用戶(hù)的鼠鍵事件, 當(dāng)?shù)弥脩?hù)鼠鍵焦點(diǎn)進(jìn)入自身的有效視圖域時(shí),D_Agent便會(huì)啟動(dòng)獲取用戶(hù)事件機(jī)制,截獲用戶(hù)產(chǎn)生的所有鼠鍵事件。(2).由于D_Agent代替QEMU/KVM取得用戶(hù)事件,所以鼠鍵事件需要解析組合成 QEMU/KVM能夠識(shí)別的消息。(3). D_Agent通過(guò)進(jìn)程間通信方式將用戶(hù)事件發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。QEMU/KVM接收到事件后,會(huì)以硬件中斷的方式發(fā)送給GOS,GOS處理這些硬件中斷,轉(zhuǎn)化程序可以識(shí)別的鼠鍵信息,然后,程序根據(jù)事件做出反應(yīng),最終會(huì)引起視圖域的狀態(tài)變化,如窗口內(nèi)容改變、窗口位置改變、窗口創(chuàng)建和銷(xiāo)毀等。當(dāng)有效視圖域狀態(tài)發(fā)生變化時(shí),表明視圖裁剪區(qū)域發(fā)生了變化,需要重新獲取裁剪區(qū)域,D_Agent需要根據(jù)新的裁剪區(qū)域?qū)σ晥D進(jìn)行裁剪。這樣就保證Agent GOS顯示窗口呈現(xiàn)的始終是GOS程序窗口的內(nèi)容。根據(jù)整個(gè)桌面融合系統(tǒng)的實(shí)現(xiàn)基礎(chǔ)D_Agent+QEMU/KVM+GOS,將無(wú)縫窗口系統(tǒng)劃分為四部分=GOS有效視圖域獲取部分,QEMU/KVM數(shù)據(jù)傳遞部分,D_Agent視圖域裁剪部分,
D.Agent用戶(hù)事件轉(zhuǎn)換部分。附圖4為各部分的工作示意圖GOS有效視圖域獲取部分的功能是分析當(dāng)前GOS的視圖域內(nèi)容信息,從中獲取有效視圖域。該部分由HOOK模塊和外部服務(wù)程序組成,其中HOOK模塊監(jiān)控GOS有效視圖域的變化,服務(wù)程序用于獲取GOS的裁剪區(qū)域,并利用域間數(shù)據(jù)傳輸通道將裁剪區(qū)域信息發(fā)送給 QHMU/KVM。QEMU/KVM數(shù)據(jù)傳遞部分的功能是接收GOS服務(wù)程序發(fā)來(lái)的裁剪區(qū)域數(shù)據(jù),并將該數(shù)據(jù)提供給D_Agent,為了加速域間消息的通信速度,采用內(nèi)存拷貝的方法進(jìn)行數(shù)據(jù)傳輸, QEMU/KVM到D_Agent的通信則采用管道的方法來(lái)進(jìn)行。D_Agent用戶(hù)事件轉(zhuǎn)換部分位于D_Agent中,用于處理鼠鍵事件格式的轉(zhuǎn)換,并將事件傳送至消息的處理方(QEMU/KVM)。視圖域裁剪部分將從QEMU/KVM獲取GOS域的顯示內(nèi)容,并根據(jù)提供的裁剪信息根據(jù)裁剪算法對(duì)顯示內(nèi)容進(jìn)行裁剪。裁剪區(qū)域是當(dāng)前系統(tǒng)桌面中,有效視圖域顯示部分范圍的集合,獲取裁剪域算法將分析當(dāng)前GOS的有效視圖域,從其信息中提取裁剪區(qū)域,供D_ Agent對(duì)GOS視圖域的裁剪。裁剪區(qū)域獲取算法的實(shí)現(xiàn)
裁剪區(qū)域是當(dāng)前系統(tǒng)桌面中,有效視圖域顯示部分范圍的集合,獲取裁剪域算法將分析當(dāng)前GOS的有效視圖域,從其信息中提取裁剪區(qū)域。供D Agent對(duì)GOS視圖域的裁剪。其大致過(guò)程是枚舉當(dāng)前系統(tǒng)中每個(gè)窗口,根據(jù)一定的窗口選擇策略,篩選出可視窗口,將其窗口顯示范圍與最終結(jié)果進(jìn)行或運(yùn)算,最后得到一個(gè)所有程序窗口總的顯示區(qū)域,便是裁剪區(qū)域,算法流程如附圖5所示裁剪域獲取算法在計(jì)算中會(huì)進(jìn)行大量的矩形或運(yùn)算,需要占用大量時(shí)間,所以在進(jìn)行獲取算法前對(duì)窗口進(jìn)行篩選,可以加速該過(guò)程的進(jìn)行。以Windows系統(tǒng)為例,程序在運(yùn)行的過(guò)程中,會(huì)創(chuàng)建很多窗口,如菜單欄及下屬子菜單欄,或者提示框,或者程序開(kāi)發(fā)者為了處理一些用戶(hù)事件,創(chuàng)建的空窗口。所以篩選策略需要?jiǎng)h除空窗口,或者與主程序窗口重疊的窗口,系統(tǒng)采用屬性刪除策略和無(wú)效值刪除策略?xún)煞N。屬性刪除策略主要以窗口的常規(guī)屬性和額外屬性為刪除依據(jù)來(lái)篩選窗口,經(jīng)過(guò)大量實(shí)驗(yàn)得知,當(dāng)屬性為如下值的窗口應(yīng)當(dāng)被排除在有效視圖域之外I.不可視窗口。2.子窗口,在視窗系統(tǒng)的顯示策略中,子窗口無(wú)法在父窗口之外顯示,所以子窗口對(duì)有效視圖域的貢獻(xiàn)可以被父窗口替代。3.窗口名為Program Mallager的窗口,即任務(wù)欄歸屬的程序,該窗口的顯示范圍是整個(gè)桌面區(qū)域,從而可以滿(mǎn)足用戶(hù)對(duì)任務(wù)欄的多種停靠模式需要。該窗口的顯示范圍在計(jì)算有效視圖過(guò)程中將會(huì)把結(jié)果覆蓋成為整個(gè)桌面區(qū)域,因此需要將此窗口刪除出有效視圖域。經(jīng)過(guò)屬性刪除策略的篩選,剩下的窗口大都滿(mǎn)足顯示要求,將參加最后結(jié)果的運(yùn)
笪無(wú)效值刪除策略主要是消除無(wú)效數(shù)值的窗口對(duì)最終裁剪區(qū)域結(jié)果的干擾,主要?jiǎng)h除如下兩種窗口 非法值的窗口,例如當(dāng)程序窗口最小化時(shí),其窗口坐標(biāo)數(shù)據(jù)有時(shí)會(huì)出現(xiàn)非正常的負(fù)數(shù),該值在進(jìn)行矩形或運(yùn)算時(shí),總能保留下來(lái),但對(duì)最終裁剪結(jié)果毫無(wú)意義。無(wú)效值窗口,此類(lèi)窗口的高度或者寬度有一值為零,說(shuō)明該窗口在桌面內(nèi)不具有實(shí)際顯示效果, 也應(yīng)當(dāng)刪除。經(jīng)過(guò)過(guò)濾條件的選擇,余下的窗口將參與裁剪區(qū)域的運(yùn)算。用戶(hù)事件重定位的實(shí)現(xiàn)D_Agent的顯示窗口可以得到用戶(hù)鼠鍵事件,但是處理鼠鍵的過(guò)程在QEMU中, 因此,需要將用戶(hù)鼠鍵事件以消息傳遞的方式發(fā)送給QEMU,利用D-Agent與QEMU/KVM之 I " HJ的溝通可以將鼠鍵消息發(fā)送給QEMU/KVM的處理過(guò)程,但是此處理過(guò)程無(wú)法接收處理 D發(fā)來(lái)的用戶(hù)事件,因?yàn)檫@些都是經(jīng)過(guò)桌.Agent面環(huán)境包裝,所以將鼠鍵事件進(jìn)行解析,組織成QEMU/KVM可以識(shí)別的類(lèi)型,具體做法是將鍵盤(pán)事件分離成鍵盤(pán)掃描碼,鼠標(biāo)事件則分離成鼠標(biāo)向量信息(表不鼠標(biāo)一次向哪個(gè)方向移動(dòng)了幾個(gè)單位)傳入。
權(quán)利要求
1.桌面虛擬化客戶(hù)端與虛擬桌面間的虛擬桌面融合方法,其特征在于在客戶(hù)端中部署服務(wù)代理,由所述的服務(wù)代理監(jiān)控客戶(hù)系統(tǒng)的桌面顯示狀態(tài),向融合桌面提供顯示控制信息;融合桌面根據(jù)信息控制客戶(hù)端在宿主系統(tǒng)桌面環(huán)境中的顯示內(nèi)容,實(shí)現(xiàn)客戶(hù)系統(tǒng)程序窗口在宿主系統(tǒng)桌面的直觀(guān)顯示。
2.根據(jù)權(quán)利要求I所述的虛擬桌面融合方法,其特征在于桌面融合的窗口顯示包括如下步驟,A、監(jiān)控GOS桌面顯示狀態(tài)分析當(dāng)前GOS中程序窗口的顯示狀態(tài),當(dāng)窗口顯示狀態(tài)變化時(shí),便會(huì)通知有效視圖獲取模塊獲得該變化;B、GOS有效視圖獲取根據(jù)系統(tǒng)中每個(gè)程序窗口的顯示狀態(tài)信息,獲取當(dāng)前桌面的有效視圖信息,并組織成數(shù)據(jù)結(jié)構(gòu),利用QEMU/KVM提供數(shù)據(jù)傳輸模塊發(fā)送至顯示服務(wù)提供方D-Agent中;C、QEMU/KVM數(shù)據(jù)轉(zhuǎn)儲(chǔ)QEMU/KVM利用虛擬機(jī)制提供的內(nèi)存共享原理實(shí)現(xiàn)GOS到HOS的數(shù)據(jù)內(nèi)容傳遞,然后通過(guò)進(jìn)程間的數(shù)據(jù)傳輸通道將數(shù)據(jù)傳送給D-Agent ;D、D-Agent視圖顯示D-Agent從QEMU/KVM中提取GOS桌面的整個(gè)顯示內(nèi)容,并根據(jù)GOS提供的有效視圖提示信息對(duì)其桌面內(nèi)容進(jìn)行切割,只在HOS的桌面上保留用戶(hù)關(guān)心的程序窗口部分;在進(jìn)行顯示前,對(duì)GOS的顯示內(nèi)容進(jìn)行HOS桌面的等比例匹配,消除HOS同GOS因?yàn)樽烂娣直媛实牟煌斐傻囊曈X(jué)偏差。
3.根據(jù)權(quán)利要求2所述的虛擬桌面融合方法,其特征在于用戶(hù)輸入的鼠鍵事件發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。
4.根據(jù)權(quán)利要求2所述的虛擬桌面融合方法,其特征在于所述的桌面內(nèi)容切割,即視圖域裁剪包括如下步驟,A、匹配顯示環(huán)境,提供顯示窗口將GOS的顯示內(nèi)容進(jìn)行等比例拉伸,將顯示窗口最大化,將GOS視圖域顯示范圍擴(kuò)展到整個(gè)HOS有效顯示桌面;B、獲取GOS有效視圖域通過(guò)GOS中的服務(wù)代理,分析GOS視圖域內(nèi)容;經(jīng)過(guò)選擇策略,獲取有效視圖域的信C、有效視圖域信息的傳遞包括有效視圖域信息GOS到QEMU/KVM的傳遞,和QEMU/KVM到D_Agent的傳遞,分別涉及域間數(shù)據(jù)輸和進(jìn)程;D、視圖域裁剪D_Agent按照取得的有效視圖域信息對(duì)視圖域顯示窗口進(jìn)行裁剪,桌面呈現(xiàn)有效視圖域顯示內(nèi)容。
5.根據(jù)權(quán)利要求3所述的虛擬桌面融合方法,其特征在于所述的桌面內(nèi)容切割,即視圖域裁剪包括如下步驟,A、匹配顯示環(huán)境,提供顯示窗口將GOS的顯示內(nèi)容進(jìn)行等比例拉伸,將顯示窗口最大化,將GOS視圖域顯示范圍擴(kuò)展到整個(gè)HOS有效顯示桌面;B、獲取GOS有效視圖域通過(guò)GOS中的服務(wù)代理,分析GOS視圖域內(nèi)容;經(jīng)過(guò)選擇策略,獲取有效視圖域的信C、有效視圖域信息的傳遞包括有效視圖域信息GOS到QEMU/KVM的傳遞,和QEMU/KVM到D_Agent的傳遞,分別涉及域間數(shù)據(jù)輸和進(jìn)程;D、視圖域裁剪D_Agent按照取得的有效視圖域信息對(duì)視圖域顯示窗口進(jìn)行裁剪,桌面呈現(xiàn)有效視圖域顯示內(nèi)容。
6.根據(jù)權(quán)利要求I至5任一項(xiàng)所述的虛擬桌面融合方法,其特征在于用戶(hù)事件的處理流程是,A、代理接收D_Agent的顯示窗口作為GOS桌面代理,接收用戶(hù)的鼠鍵事件,當(dāng)?shù)弥脩?hù)鼠鍵焦點(diǎn)進(jìn)入自身的有效視圖域時(shí),D_Agent啟動(dòng)獲取用戶(hù)事件機(jī)制,截獲用戶(hù)產(chǎn)生的所有鼠鍵事件;B、由于D_Agent代替QEMU/KVM取得用戶(hù)事件,所以鼠鍵事件需要解析組合成QEMU/KVM 能夠識(shí)別的消息;C、D_Agent通過(guò)進(jìn)程間通信方式將用戶(hù)事件發(fā)送給QEMU/KVM,由其對(duì)事件進(jìn)行處理。
7.根據(jù)權(quán)利要求6所述的虛擬桌面融合方法,其特征在于QEMU/KVM接收到事件后,以硬件中斷的方式發(fā)送給GOS,GOS處理這些硬件中斷,轉(zhuǎn)化成可以識(shí)別的鼠鍵信息,然后,根據(jù)事件做出反應(yīng);最終引起窗口內(nèi)容改變、窗口位置改變、窗口創(chuàng)建和銷(xiāo)毀等視圖域的狀態(tài)變化。
8.根據(jù)權(quán)利要求7所述的虛擬桌面融合方法,其特征在于所述的窗口無(wú)縫化分為GOS 有效視圖域獲取、QEMU/KVM數(shù)據(jù)傳遞、D_Agent視圖域裁剪、D_Agent用戶(hù)事件轉(zhuǎn)換;所述的,GOS有效視圖域獲取是分析當(dāng)前GOS的視圖域內(nèi)容信息,從中獲取有效視圖域;該部分由HOOK模塊和外部服務(wù)程序組成,其中HOOK模塊監(jiān)控GOS有效視圖域的變化,服務(wù)程序用于獲取GOS的裁剪區(qū)域,并利用域間數(shù)據(jù)傳輸通道將裁剪區(qū)域信息發(fā)送給QEMU/KVM ;QEMU/KVM數(shù)據(jù)傳遞是接收GOS服務(wù)程序發(fā)來(lái)的裁剪區(qū)域數(shù)據(jù),并將該數(shù)據(jù)提供給D_ Agent ;所述的數(shù)據(jù)傳輸采用內(nèi)存拷貝方法,QEMU/KVM到D_Agent的通信則采用管道的方法來(lái)進(jìn)行;D、Agent用戶(hù)事件轉(zhuǎn)換位于D_Agent中,用于處理鼠鍵事件格式的轉(zhuǎn)換,并將事件傳送至消息的處理方(QEMU/KVM);視圖域裁剪將從QEMU/KVM獲取GOS域的顯示內(nèi)容,并根據(jù)提供的裁剪信息根據(jù)裁剪算法對(duì)顯示內(nèi)容進(jìn)行裁剪;裁剪區(qū)域是當(dāng)前系統(tǒng)桌面中有效視圖域顯示部分范圍的集合,獲取裁剪域算法將分析當(dāng)前GOS的有效視圖域,從其信息中提取裁剪區(qū)域,供D_Agent對(duì)GOS 視圖域的裁剪。
9.根據(jù)權(quán)利要求8所述的虛擬桌面融合方法,其特征在于裁剪區(qū)域獲取算法是枚舉當(dāng)前系統(tǒng)中每個(gè)窗口,根據(jù)一定的窗口選擇策略,篩選出可視窗口,將其窗口顯不范圍與最終結(jié)果進(jìn)行或運(yùn)算,最后得到一個(gè)所有程序窗口總的顯示區(qū)域,便是裁剪區(qū)域。
10.根據(jù)權(quán)利要求9所述的虛擬桌面融合方法,其特征在于在進(jìn)行獲取算法前對(duì)窗口進(jìn)行篩選,,篩選策略需要?jiǎng)h除空窗口,或者與主程序窗口重疊的窗口 ;采用屬性刪除策略和無(wú)效值刪除策略?xún)煞N。
11.根據(jù)權(quán)利要求10所述的虛擬桌面融合方法,其特征在于屬性刪除策略主要以窗口的常規(guī)屬性和額外屬性為刪除依據(jù)來(lái)篩選窗口,當(dāng)屬性為不可視窗口、子窗口、窗口名為 Program Mallager的窗口應(yīng)當(dāng)被排除在有效視圖域之外。
12.根據(jù)權(quán)利要求10所述的虛擬桌面融合方法,其特征在于無(wú)效值刪除策略主要?jiǎng)h除非法值的窗口、無(wú)效值窗口。
13.根據(jù)權(quán)利要求11所述的虛擬桌面融合方法,其特征在于無(wú)效值刪除策略主要?jiǎng)h除非法值的窗口、無(wú)效值窗口。
14.根據(jù)權(quán)利要求13所述的虛擬桌面融合方法,其特征在于將鍵盤(pán)事件分離成鍵盤(pán)掃描碼,鼠標(biāo)事件則分離成鼠標(biāo)向量信息入。
全文摘要
本發(fā)明涉及桌面融合技術(shù)領(lǐng)域,尤其是一種桌面虛擬化客戶(hù)端與虛擬桌面間的虛擬桌面融合方法。本發(fā)明在客戶(hù)端中部署服務(wù)代理,由所述的服務(wù)代理監(jiān)控客戶(hù)系統(tǒng)的桌面顯示狀態(tài),向融合桌面提供顯示控制信息;融合桌面根據(jù)信息控制客戶(hù)端在宿主系統(tǒng)桌面環(huán)境中的顯示內(nèi)容,實(shí)現(xiàn)客戶(hù)系統(tǒng)程序窗口在宿主系統(tǒng)桌面的直觀(guān)顯示。本發(fā)明解決了虛擬桌面中窗口顯示和用戶(hù)操作存在諸如鼠標(biāo)操作不順暢、畫(huà)面疊放、各個(gè)應(yīng)用界面切換出錯(cuò)等問(wèn)題,可以應(yīng)用于虛擬桌面融合中。
文檔編號(hào)G06F9/455GK102541624SQ201110453188
公開(kāi)日2012年7月4日 申請(qǐng)日期2011年12月29日 優(yōu)先權(quán)日2011年12月29日
發(fā)明者劉小瑞, 季統(tǒng)凱, 曾華山, 李濤, 馬海峰, 黃井優(yōu) 申請(qǐng)人:國(guó)云科技股份有限公司