專利名稱:創(chuàng)建虛擬進(jìn)程的進(jìn)程內(nèi)中介的制作方法
創(chuàng)建虛擬進(jìn)程的進(jìn)程內(nèi)中介
背景技術(shù):
應(yīng)用程序或進(jìn)程虛擬化軟件可以解耦應(yīng)用程序,應(yīng)用程序中的每一個(gè)在運(yùn)行時(shí)可以包括來(lái)自底層操作系統(tǒng)的一個(gè)或多個(gè)正在運(yùn)行的進(jìn)程。因而,應(yīng)用程序虛擬化通??梢栽试S應(yīng)用程序在不需要訪問(wèn)其中安裝應(yīng)用程序的特定物理機(jī)器的情況下就運(yùn)行。例如,可以在網(wǎng)絡(luò)上或在可移動(dòng)存儲(chǔ)設(shè)備上按需提供包括應(yīng)用程序和應(yīng)用程序自己的一組虛擬環(huán)境配置的虛擬應(yīng)用程序包。虛擬環(huán)境將在環(huán)境中的一個(gè)或多個(gè)虛擬應(yīng)用程序或進(jìn)程與在環(huán)境外的應(yīng)用程序或進(jìn)程(例如,底層操作系統(tǒng)和/或運(yùn)行在虛擬環(huán)境外的操作系統(tǒng)上的一個(gè)或多個(gè)其他應(yīng)用程序或進(jìn)程)隔離開(kāi)來(lái)。虛擬環(huán)境也促進(jìn)在虛擬環(huán)境內(nèi)的一個(gè)或多個(gè)應(yīng)用程序或進(jìn)程對(duì)諸如由底層操作系統(tǒng)管理的資源等的在虛擬環(huán)境外的資源的訪問(wèn)。因而,應(yīng)用程序或進(jìn)程虛擬化通常包括兩個(gè)方面隔離和資源管理。隔離通常包括將在虛擬環(huán)境內(nèi)的命名空間保持為與在虛擬環(huán)境外的一個(gè)或多個(gè)命名空間隔離。資源管理通常包括以允許虛擬環(huán)境中的進(jìn)程適當(dāng)?shù)剡\(yùn)行而不考慮隔離的方式來(lái)管理資源,且通常以虛擬環(huán)境中的進(jìn)程不知曉的虛擬化的方式來(lái)管理資源。因?yàn)樘摂M化的隔離方面,虛擬環(huán)境可以在底層操作系統(tǒng)和虛擬環(huán)境中的虛擬進(jìn)程之間提供間接層。一旦虛擬進(jìn)程運(yùn)行在虛擬環(huán)境中,就可以在虛擬環(huán)境和非虛擬環(huán)境之間轉(zhuǎn)換通信,如同現(xiàn)有應(yīng)用程序虛擬化軟件所做的那樣。對(duì)正在運(yùn)行的虛擬進(jìn)程來(lái)說(shuō),難以以自然的方式創(chuàng)建新的虛擬進(jìn)程,這是因?yàn)槿匀徊淮嬖跒樾碌奶摂M進(jìn)程設(shè)立的轉(zhuǎn)換或間接方案。一些應(yīng)用程序虛擬化軟件已經(jīng)通過(guò)使得代理截取已經(jīng)從啟動(dòng)非虛擬進(jìn)程發(fā)送的新的進(jìn)程創(chuàng)建應(yīng)用程序編程接口(API)調(diào)用來(lái)處理這種類型的虛擬進(jìn)程創(chuàng)建。如果可用的虛擬進(jìn)程可以履行進(jìn)程創(chuàng)建調(diào)用,則可以使用代理來(lái)喚醒過(guò)程以便在適當(dāng)?shù)奶摂M環(huán)境中創(chuàng)建對(duì)應(yīng)的虛擬進(jìn)程。
發(fā)明內(nèi)容
無(wú)論用于創(chuàng)建虛擬進(jìn)程的先前的工具和技術(shù)有什么優(yōu)點(diǎn),它們既沒(méi)有認(rèn)識(shí)到在此描述和要求保護(hù)的虛擬進(jìn)程創(chuàng)建工具和技術(shù),也沒(méi)有認(rèn)識(shí)到由這樣的工具和技術(shù)產(chǎn)生的優(yōu)
點(diǎn)ο在一種實(shí)施例中,工具和技術(shù)可以包括借助于在正在運(yùn)行的虛擬進(jìn)程中的中介模塊來(lái)截取來(lái)自正在運(yùn)行的非虛擬進(jìn)程的創(chuàng)建所請(qǐng)求的非虛擬進(jìn)程的請(qǐng)求。響應(yīng)于所截取的請(qǐng)求,可以標(biāo)識(shí)對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程的適當(dāng)?shù)奶摂M進(jìn)程。另外,可以準(zhǔn)備被配置為主控虛擬進(jìn)程的虛擬環(huán)境,且可以將虛擬進(jìn)程添加到虛擬環(huán)境。最終,可以借助于虛擬進(jìn)程來(lái)履行請(qǐng)求。在工具和技術(shù)的另一實(shí)施例中,正在運(yùn)行的非虛擬進(jìn)程可以被配置為發(fā)起創(chuàng)建所請(qǐng)求的非虛擬進(jìn)程的進(jìn)程創(chuàng)建請(qǐng)求。正在運(yùn)行的虛擬進(jìn)程中的中介模塊可以被配置為截取進(jìn)程創(chuàng)建請(qǐng)求。另外,虛擬化代理可以被配置為從中介模塊接收進(jìn)程創(chuàng)建請(qǐng)求的通知、準(zhǔn)備虛擬環(huán)境并向虛擬環(huán)境添加對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程的虛擬進(jìn)程。
在工具和技術(shù)的又另一實(shí)施例中,可以在正在運(yùn)行的非虛擬進(jìn)程中發(fā)起創(chuàng)建非虛擬進(jìn)程的進(jìn)程創(chuàng)建請(qǐng)求。在從正在運(yùn)行的非虛擬進(jìn)程傳送進(jìn)程創(chuàng)建請(qǐng)求之前,可以借助于進(jìn)程內(nèi)中介模塊來(lái)截取請(qǐng)求。也可以判斷進(jìn)程創(chuàng)建請(qǐng)求是否對(duì)應(yīng)于可用的虛擬進(jìn)程。如果進(jìn)程創(chuàng)建請(qǐng)求對(duì)應(yīng)于可用的虛擬進(jìn)程,那么,可以將虛擬進(jìn)程添加到虛擬環(huán)境,且可以借助于虛擬進(jìn)程來(lái)履行進(jìn)程創(chuàng)建請(qǐng)求。提供本概述以便以簡(jiǎn)化形式介紹概念的選集。下面在詳細(xì)描述中進(jìn)一步描述各概念。本概述不旨在標(biāo)識(shí)所要求保護(hù)的本主題的關(guān)鍵特征或必要特征,也不旨在被用來(lái)限制所要求保護(hù)的本主題的范圍。類似地,本發(fā)明不限于解決在背景、詳細(xì)描述或附圖中討論的特定的技術(shù)、工具、環(huán)境、缺點(diǎn)或優(yōu)點(diǎn)的實(shí)現(xiàn)。
圖1是可在其中實(shí)現(xiàn)所描述的實(shí)施例中的一個(gè)或多個(gè)的合適的計(jì)算環(huán)境的框圖。圖2是闡釋用于從非虛擬進(jìn)程創(chuàng)建請(qǐng)求創(chuàng)建虛擬進(jìn)程的計(jì)算環(huán)境的框圖。圖3是闡釋用于從非虛擬進(jìn)程創(chuàng)建請(qǐng)求創(chuàng)建虛擬進(jìn)程的技術(shù)的流程圖。圖4是用于從非虛擬進(jìn)程創(chuàng)建請(qǐng)求創(chuàng)建虛擬進(jìn)程的另一技術(shù)的流程圖。
具體實(shí)施例方式所描述的實(shí)施例針對(duì)用于改善地從非虛擬進(jìn)程創(chuàng)建請(qǐng)求創(chuàng)建虛擬進(jìn)程的技術(shù)和工具。這樣的改進(jìn)可以得自分離地或組合地使用各種技術(shù)和工具。這樣的技術(shù)和工具可以包括在請(qǐng)求仍然在發(fā)起請(qǐng)求的正在運(yùn)行的進(jìn)程中時(shí)截取非虛擬進(jìn)程創(chuàng)建請(qǐng)求(即,用于創(chuàng)建非虛擬進(jìn)程的進(jìn)程創(chuàng)建請(qǐng)求)。非虛擬請(qǐng)求可以被用來(lái)標(biāo)識(shí)適當(dāng)?shù)奶摂M進(jìn)程,且可以將虛擬進(jìn)程添加到虛擬環(huán)境,使得虛擬進(jìn)程可以履行非虛擬進(jìn)程創(chuàng)建請(qǐng)求。發(fā)起進(jìn)程可以響應(yīng)于諸如從操作系統(tǒng)或從另一進(jìn)程接收的用戶輸入或信息等的各種類型的信息并以各種方式發(fā)起進(jìn)程創(chuàng)建請(qǐng)求。因?yàn)榭梢栽谄渲邪l(fā)起請(qǐng)求的進(jìn)程中截取進(jìn)程創(chuàng)建請(qǐng)求,且在請(qǐng)求離開(kāi)發(fā)起進(jìn)程之前可以使用進(jìn)程創(chuàng)建請(qǐng)求來(lái)將對(duì)應(yīng)的虛擬進(jìn)程添加到適當(dāng)?shù)奶摂M環(huán)境,所以可以借助于虛擬進(jìn)程來(lái)履行請(qǐng)求而不依賴于進(jìn)程外代理。在虛擬應(yīng)用程序場(chǎng)景中,虛擬化工具通常知曉多個(gè)命名空間,例如非虛擬系統(tǒng)命名空間和一個(gè)或多個(gè)虛擬環(huán)境命名空間。虛擬環(huán)境通常定義命名空間視圖,包括虛擬環(huán)境具有對(duì)其的訪問(wèn)權(quán)的命名空間和用于進(jìn)行對(duì)應(yīng)于命名空間的名稱的合成的策略。在這樣的虛擬環(huán)境內(nèi)操作的虛擬進(jìn)程通常操作為仿佛僅存在單個(gè)命名空間,且虛擬化軟件以及在其他虛擬環(huán)境中操作的虛擬進(jìn)程通常在該單個(gè)命名空間和可以由非虛擬軟件使用的其他命名空間之間轉(zhuǎn)換。虛擬化代理(例如微軟的App-V虛擬化軟件中的虛擬化代理)通常根據(jù)需要通過(guò)準(zhǔn)備或創(chuàng)建和關(guān)閉虛擬環(huán)境來(lái)管理虛擬環(huán)境的生命周期。在虛擬環(huán)境中的虛擬進(jìn)程和在該虛擬環(huán)境外的進(jìn)程之間的轉(zhuǎn)換方案通常是不操作的,直到創(chuàng)建了虛擬環(huán)境并將虛擬進(jìn)程添加到虛擬環(huán)境。因而,在現(xiàn)有的技術(shù)中,發(fā)起進(jìn)程創(chuàng)建請(qǐng)求的正在運(yùn)行的發(fā)起進(jìn)程通常不能夠在沒(méi)有進(jìn)程外(即,在發(fā)起進(jìn)程之外)代理的幫助下創(chuàng)建虛擬進(jìn)程。這樣的進(jìn)程外代理通常被用來(lái)截取請(qǐng)求以便在請(qǐng)求離開(kāi)發(fā)起請(qǐng)求的進(jìn)程之后創(chuàng)建所請(qǐng)求的進(jìn)程。因?yàn)檎?qǐng)求已經(jīng)離開(kāi)發(fā)起進(jìn)程,例如以創(chuàng)建進(jìn)程API調(diào)用的形式,發(fā)起進(jìn)程和/或操作系統(tǒng)期望接收API調(diào)用的模塊是所請(qǐng)求的進(jìn)程并且起到所請(qǐng)求的進(jìn)程將起到的作用。因?yàn)榇矶皇撬?qǐng)求的進(jìn)程接收API調(diào)用,代理通常模擬正被請(qǐng)求的實(shí)際進(jìn)程的行為。這樣的進(jìn)程外代理具有若干缺陷。例如,這樣的代理的一個(gè)挑戰(zhàn)是嘗試維持最初預(yù)期發(fā)生的事情的保真度。例如,在應(yīng)用程序起動(dòng)時(shí),它可以處理諸如命令行參數(shù)、環(huán)境塊或由計(jì)算環(huán)境中的操作系統(tǒng)支持的其他參數(shù)等的信息。因而,代理通常需要具有操作那些參數(shù)的功能。如果新的擴(kuò)展點(diǎn)(即,操作系統(tǒng)中可以為要觸發(fā)的代碼而注冊(cè)代碼的場(chǎng)所,例如快捷方式擴(kuò)展點(diǎn)、文件類型關(guān)聯(lián)擴(kuò)展點(diǎn)、com對(duì)象擴(kuò)展點(diǎn)、服務(wù)擴(kuò)展點(diǎn)(例如NT服務(wù)擴(kuò)展點(diǎn))等等)被用來(lái)起動(dòng)應(yīng)用程序,則代理需要擴(kuò)展為包括處理新的擴(kuò)展點(diǎn)和擴(kuò)展點(diǎn)支持的所有不同的參數(shù)或元數(shù)據(jù)的功能。一些虛擬化方案甚至具有用于每一擴(kuò)展點(diǎn)的不同代理。另外,一個(gè)進(jìn)程可以在不利用操作系統(tǒng)擴(kuò)展點(diǎn)的情況下直接地調(diào)用(且由此請(qǐng)求創(chuàng)建)另一進(jìn)程。為了在該情況中起動(dòng)對(duì)應(yīng)于所調(diào)用的進(jìn)程的虛擬進(jìn)程,可以使用用于該特定的所調(diào)用的進(jìn)程的代理。然而,為在應(yīng)用程序中被調(diào)用的每一進(jìn)程創(chuàng)建這樣的代理是極其困難的,對(duì)于復(fù)雜的應(yīng)用程序來(lái)說(shuō)尤其如此。另外,在這樣的情況中,調(diào)用進(jìn)程有時(shí)檢查所調(diào)用的進(jìn)程的一個(gè)或多個(gè)屬性,例如版本號(hào)、文件大小或數(shù)字簽名。因?yàn)檎{(diào)用進(jìn)程期望代理實(shí)際上是所調(diào)用的進(jìn)程,進(jìn)程外代理將需要模擬這樣的屬性,這是非常難以實(shí)現(xiàn)的。在此描述的用于從非虛擬請(qǐng)求創(chuàng)建虛擬進(jìn)程的工具和技術(shù)可以克服使用進(jìn)程外代理的缺陷中的一個(gè)或多個(gè)。然而,在一些情況中,連同進(jìn)程外代理一起使用下面討論的工具和技術(shù)是可能的。在所附權(quán)利要求中界定的本主題并不必定限于在此描述的益處。本發(fā)明的特定實(shí)現(xiàn)可以提供在此描述中的益處中的全部、一些或不提供這些益處。盡管為便于呈現(xiàn)在此以特定的、連續(xù)的次序來(lái)描述用于各種技術(shù)的操作,但應(yīng)理解,除非要求特定的排序,否則這一描述方式包括操作的次序的重排。例如,在一些情況中,循序描述的操作可以被重排或同時(shí)執(zhí)行。在此參考流程圖描述的技術(shù)可以與在此描述的系統(tǒng)中的一個(gè)或多個(gè)和/或一個(gè)或多個(gè)其他系統(tǒng)一起使用。此外,為簡(jiǎn)單起見(jiàn),各流程圖可以不示出與其他技術(shù)聯(lián)合使用特定技術(shù)的各種方式。I.示例性計(jì)算環(huán)境圖1闡釋其中可以實(shí)現(xiàn)所描述的實(shí)施例中的一個(gè)或多個(gè)的合適的計(jì)算環(huán)境(100) 的一般化示例。例如,一個(gè)或多個(gè)這樣的計(jì)算環(huán)境可以被用作實(shí)現(xiàn)下面描述的用于從非虛擬請(qǐng)求創(chuàng)建虛擬進(jìn)程的工具和技術(shù)的系統(tǒng)。一般地,可以使用各種不同的通用或?qū)S糜?jì)算系統(tǒng)配置??梢耘c在此描述的工具和技術(shù)一起使用的公知的計(jì)算系統(tǒng)配置的示例包括但不限于服務(wù)器群和服務(wù)器群集、個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式設(shè)備或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程的消費(fèi)性電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上系統(tǒng)或設(shè)備中的任何在內(nèi)的分布式計(jì)算環(huán)境等等。計(jì)算環(huán)境(100)不旨在建議關(guān)于本發(fā)明的使用范圍或功能的任何限制,這是因?yàn)榭梢栽诙喾N多樣的通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)本發(fā)明。參考圖1,計(jì)算環(huán)境(100)包括至少一個(gè)處理單元(110)和存儲(chǔ)器(120)。在圖1 中,這一最基本的配置(130)被包括在虛線內(nèi)。處理單元(110)執(zhí)行計(jì)算機(jī)可執(zhí)行指令且可以是真實(shí)處理器或虛擬處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以便增加處理能力。存儲(chǔ)器(120)可以是易失性存儲(chǔ)器(例如,寄存器、高速緩沖存儲(chǔ)器、RAM)、非易失性存儲(chǔ)器(例如,R0M、EEPR0M、閃速存儲(chǔ)器)或兩者的某種組合。存儲(chǔ)器(120)存儲(chǔ)實(shí)現(xiàn)創(chuàng)建虛擬應(yīng)用程序的進(jìn)程內(nèi)中介的軟件(180)。盡管為了清晰起見(jiàn)用線條示出了圖1中的各種塊,但事實(shí)上,描繪各種組件并不如此清晰,并且從比喻上說(shuō)圖1和下面討論的其他圖中的線條更準(zhǔn)確地是灰色的和模糊的。例如,可以認(rèn)為諸如顯示設(shè)備等的呈現(xiàn)組件是I/O組件。而且,處理器具有存儲(chǔ)器。在此的發(fā)明者認(rèn)識(shí)到這是本領(lǐng)域的本質(zhì),并且重申,圖1的簡(jiǎn)圖僅僅是說(shuō)明可以與本發(fā)明的一個(gè)或多個(gè)實(shí)施例結(jié)合使用的示例性計(jì)算設(shè)備。在“工作站”、“服務(wù)器”、“膝上型設(shè)備”、“手持式設(shè)備”等等的這樣的類別之間不做區(qū)分,這是因?yàn)轭A(yù)期所有這些都落在圖1和對(duì)“計(jì)算機(jī)”、“計(jì)算環(huán)境”或“計(jì)算設(shè)備”的引用的范圍內(nèi)。計(jì)算環(huán)境(100)可以具有額外的特征。在圖1中,計(jì)算環(huán)境(100)包括存儲(chǔ)(140)、一個(gè)或多個(gè)輸入設(shè)備(150)、一個(gè)或多個(gè)輸出設(shè)備(160)和一個(gè)或多個(gè)通信連接(170)。諸如總線、控制器或網(wǎng)絡(luò)等的互連機(jī)制(未示出)將計(jì)算環(huán)境(100)的組件相互連接起來(lái)。通常,操作系統(tǒng)軟件(未示出)為在計(jì)算環(huán)境(100)中執(zhí)行的其他軟件提供操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境(100)的組件的活動(dòng)。存儲(chǔ)(140)可以是可移動(dòng)的或不可移動(dòng)的,且可以包括磁盤、磁帶或盒式磁帶、CD-ROM、CD-RW、DVD或可以是被用來(lái)存儲(chǔ)信息且可以在計(jì)算環(huán)境(100)內(nèi)訪問(wèn)的任何其他介質(zhì)。存儲(chǔ)(140)存儲(chǔ)用于軟件(180)的指令。輸入設(shè)備(150)可以是諸如鍵盤、鼠標(biāo)、筆或跟蹤球等的觸摸輸入設(shè)備;語(yǔ)音輸入設(shè)備;掃描設(shè)備;網(wǎng)絡(luò)適配器;⑶/DVD讀取器;或向計(jì)算環(huán)境(100)提供輸入的另一設(shè)備。輸出設(shè)備(160)可以是顯示器、打印機(jī)、揚(yáng)聲器、CD/DVD刻錄機(jī)、網(wǎng)絡(luò)適配器或從計(jì)算環(huán)境(100)提供輸出的另一設(shè)備。通信連接(170)允許在通信介質(zhì)上與另一計(jì)算實(shí)體通信。因而,計(jì)算環(huán)境(100)可以在使用到諸如個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或另一普通網(wǎng)絡(luò)節(jié)點(diǎn)等的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算設(shè)備的邏輯連接的聯(lián)網(wǎng)環(huán)境中操作。通信介質(zhì)以經(jīng)調(diào)制的數(shù)據(jù)信號(hào)傳送諸如數(shù)據(jù)或計(jì)算機(jī)可執(zhí)行指令或請(qǐng)求等的信息。經(jīng)調(diào)制的數(shù)據(jù)信號(hào)是以在信號(hào)中編碼信息的方式來(lái)設(shè)置或改變其特性中的一個(gè)或多個(gè)的信號(hào)。作為示例而非限制,通信介質(zhì)包括借助于電、光、RF、紅外、聲學(xué)或其他載波來(lái)實(shí)現(xiàn)的有線或無(wú)線技術(shù)??梢栽谟?jì)算機(jī)可讀介質(zhì)的一般上下文中描述工具和技術(shù)。計(jì)算機(jī)可讀介質(zhì)是可以在計(jì)算環(huán)境內(nèi)訪問(wèn)的任何可用的介質(zhì)。作為示例而非限制,對(duì)于計(jì)算環(huán)境(100),計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)器(120)、存儲(chǔ)(140)和以上的組合??梢栽谥T如被包括在程序模塊中的、正在目標(biāo)真實(shí)處理器或虛擬處理器上的計(jì)算環(huán)境中執(zhí)行的那些計(jì)算機(jī)可執(zhí)行指令等的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述工具和技術(shù)。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫(kù)、對(duì)象、類、組件、數(shù)據(jù)結(jié)構(gòu)等等。在各種實(shí)施例中,根據(jù)期望,程序模塊的功能可以被組合起來(lái)或者可以在程序模塊之間分拆。可以在本地計(jì)算環(huán)境或分布式計(jì)算環(huán)境內(nèi)執(zhí)行用于程序模塊的計(jì)算機(jī)可執(zhí)行指令。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地計(jì)算機(jī)存儲(chǔ)介質(zhì)和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)兩者中。為便于呈現(xiàn),詳細(xì)描述使用類似于“確定”、“選擇”、“調(diào)整”、“截取”和“操作”的術(shù)語(yǔ)來(lái)描述計(jì)算環(huán)境中的計(jì)算機(jī)操作。這些和其他類似的術(shù)語(yǔ)是由計(jì)算機(jī)執(zhí)行的操作的高級(jí)抽象,且不應(yīng)與由人類執(zhí)行的動(dòng)作相混淆,除非明確地提到人類(例如“用戶”)的動(dòng)作的執(zhí)行。對(duì)應(yīng)于這些術(shù)語(yǔ)的實(shí)際的計(jì)算機(jī)操作取決于實(shí)現(xiàn)而改變。II.用于從非虛擬請(qǐng)求創(chuàng)建虛擬進(jìn)程的系統(tǒng)和環(huán)境圖2是可以與其結(jié)合實(shí)現(xiàn)所描述的實(shí)施例中的一個(gè)或多個(gè)的虛擬進(jìn)程創(chuàng)建環(huán)境(200)的框圖。虛擬進(jìn)程創(chuàng)建環(huán)境(200)可以包括正在運(yùn)行的非虛擬發(fā)起進(jìn)程010)。非虛擬發(fā)起進(jìn)程(210)可以發(fā)起非虛擬進(jìn)程創(chuàng)建請(qǐng)求012),該非虛擬進(jìn)程創(chuàng)建請(qǐng)求(212)可以是創(chuàng)建非虛擬進(jìn)程的標(biāo)準(zhǔn)請(qǐng)求。在發(fā)起進(jìn)程內(nèi),請(qǐng)求可以采取不同的形式,例如在發(fā)起進(jìn)程O10)的不同的組件之間的握手或調(diào)用。在進(jìn)程創(chuàng)建請(qǐng)求012)離開(kāi)發(fā)起進(jìn)程OlO)之前,可以由進(jìn)程內(nèi)中介模塊(214)(在發(fā)起進(jìn)程O10)中截取進(jìn)程創(chuàng)建請(qǐng)求以便促進(jìn)虛擬應(yīng)用程序的創(chuàng)建的模塊)截取進(jìn)程創(chuàng)建請(qǐng)求012)。例如,在請(qǐng)求012)以進(jìn)程創(chuàng)建API調(diào)用的形式離開(kāi)發(fā)起進(jìn)程Ο ο)之前,可以截取請(qǐng)求012)??梢酝ㄟ^(guò)將進(jìn)程內(nèi)中介模塊(214)包括為發(fā)起進(jìn)程OlO)的調(diào)用堆棧中的組件來(lái)促進(jìn)這一截取,這使得可以在將來(lái)自發(fā)起進(jìn)程的對(duì)其他進(jìn)程的調(diào)用傳送到發(fā)起進(jìn)程(210)外之前由進(jìn)程內(nèi)中介模塊(214)來(lái)傳送這些調(diào)用。通過(guò)將用于進(jìn)程內(nèi)中介模塊014)的代碼包括在通用應(yīng)用程序發(fā)起文件(例如在通常被用于一些版本的微軟Windows 操作系統(tǒng)的AppInit_DLL值中指定的動(dòng)態(tài)鏈接列表文件)中,可以將進(jìn)程內(nèi)中介模塊(214)包括在運(yùn)行在特定的機(jī)器上的多個(gè)不同進(jìn)程中。在進(jìn)程內(nèi)中介模塊(214)截取進(jìn)程創(chuàng)建請(qǐng)求012)時(shí),中介模塊(214)可以將虛擬進(jìn)程查詢(216)發(fā)送給相同的計(jì)算環(huán)境O00)中的虛擬化代理020)。虛擬進(jìn)程查詢(216)可以包括標(biāo)識(shí)進(jìn)程創(chuàng)建請(qǐng)求012)尋求創(chuàng)建的進(jìn)程的信息。例如,虛擬進(jìn)程查詢(216)可以包括諸如進(jìn)程的路徑和文件名等的全局名稱,例如微軟Word字處理軟件的c:\Program Files\Microsoft 0ffice\0fficel2\WINW0RD.exe。除了這樣的全局名稱之外或者代替這樣的全局名稱,可以使用其他類型的標(biāo)識(shí)信息。例如,在對(duì)因特網(wǎng)驗(yàn)證服務(wù)應(yīng)用程序的調(diào)用中,調(diào)用可以包括標(biāo)識(shí)符,例如不是應(yīng)用程序的路徑或文件名的部分的全球唯一標(biāo)識(shí)符(GUID)。無(wú)論標(biāo)識(shí)信息是什么,它都可以被虛擬化代理(220)用來(lái)判斷所請(qǐng)求的進(jìn)程是否對(duì)應(yīng)于可用的虛擬進(jìn)程,并且如果對(duì)應(yīng),則查找(222)對(duì)應(yīng)于該虛擬進(jìn)程的虛擬包。例如,標(biāo)識(shí)信息可以位于提供對(duì)應(yīng)于特定的進(jìn)程的虛擬包的信息的查詢表。虛擬包是包括用于虛擬環(huán)境和在該虛擬環(huán)境中運(yùn)行的一個(gè)或多個(gè)虛擬進(jìn)程的信息的包。然而,可以以某種其他方式封裝用于虛擬環(huán)境和/或虛擬進(jìn)程的信息。虛擬化代理(220)可以包括一個(gè)或多個(gè)虛擬化模塊,例如對(duì)于被虛擬化的每一子系統(tǒng)(例如COM+,Windows Managementhstrumentation (Windows管理工具)等等)有一個(gè)虛擬化模塊。對(duì)于許多子系統(tǒng),關(guān)于子系統(tǒng)進(jìn)程的專門知識(shí)可以被用來(lái)判斷是否應(yīng)該以及在哪個(gè)虛擬環(huán)境中虛擬化該子系統(tǒng)。如果虛擬化代理(220)不能夠?qū)⑦M(jìn)程標(biāo)識(shí)為應(yīng)該被虛擬化的進(jìn)程,則它可以給予每一虛擬化模塊判斷該進(jìn)程是否是應(yīng)該被虛擬化的進(jìn)程的機(jī)會(huì)。如果虛擬化模塊判斷該進(jìn)程是應(yīng)該被虛擬化的進(jìn)程,則該虛擬化模塊可以將適當(dāng)?shù)奶摂M環(huán)境標(biāo)識(shí)符返回給虛擬化代理(220)。如果不存在對(duì)應(yīng)于進(jìn)程創(chuàng)建請(qǐng)求012)的可用的虛擬進(jìn)程,那么,可以向中介模塊(214)告知這一情況,且可以允許創(chuàng)建進(jìn)程(創(chuàng)建所請(qǐng)求的進(jìn)程的進(jìn)程)繼續(xù)進(jìn)行創(chuàng)建非虛擬進(jìn)程。如果可用的虛擬進(jìn)程對(duì)應(yīng)于所請(qǐng)求的進(jìn)程,那么,虛擬化代理(220)可以判斷虛擬環(huán)境(230)是否適于主控已經(jīng)被準(zhǔn)備或創(chuàng)建的虛擬進(jìn)程。如果不是這樣,那么,虛擬化代理(220)可以以標(biāo)準(zhǔn)方式準(zhǔn)備或創(chuàng)建(224)虛擬環(huán)境030)。無(wú)論是否已經(jīng)準(zhǔn)備虛擬環(huán)境(230),或者無(wú)論是否由虛擬化代理Q20)響應(yīng)于虛擬進(jìn)程查詢(216)而準(zhǔn)備虛擬環(huán)境030),虛擬化代理(220)都可以將虛擬環(huán)境標(biāo)識(shí)符(23 返回給發(fā)起進(jìn)程(210)中的中介模塊014)。一旦接收到虛擬環(huán)境標(biāo)識(shí)符(23 ,中介模塊(214)就可以創(chuàng)建和掛起(234)作為非虛擬進(jìn)程036)的所請(qǐng)求的新進(jìn)程。在創(chuàng)建和掛起034)之前,發(fā)起進(jìn)程OlO)和/或底層操作系統(tǒng)可能已經(jīng)采取用于創(chuàng)建的一些預(yù)備性步驟,盡管這樣的步驟將通常不導(dǎo)致所請(qǐng)求的進(jìn)程的創(chuàng)建。在一種實(shí)現(xiàn)中,可以以諸如產(chǎn)生可以由操作系統(tǒng)O80)中的進(jìn)程創(chuàng)建模塊( 處理的進(jìn)程創(chuàng)建API調(diào)用(270)等的標(biāo)準(zhǔn)方式進(jìn)行新的非虛擬進(jìn)程036)的創(chuàng)建和掛起034)??梢詫㈥P(guān)聯(lián)的參數(shù)084)(如果有的話)傳送給新的非虛擬進(jìn)程036)。可以與非虛擬進(jìn)程的創(chuàng)建相同的方式來(lái)實(shí)現(xiàn)參數(shù)的這一創(chuàng)建和傳送。一旦創(chuàng)建,就可以掛起新的非虛擬進(jìn)程036)。在創(chuàng)建并掛起(234)新的非虛擬進(jìn)程(236)之后,中介模塊(214)可以將添加進(jìn)程請(qǐng)求(四0)添加到虛擬化代理020)。添加進(jìn)程請(qǐng)求(四0)可以提示虛擬化代理(220)將新的非虛擬進(jìn)程(236)作為虛擬進(jìn)程(四4)添加( 到適當(dāng)?shù)奶摂M環(huán)境030),例如以當(dāng)前借助于現(xiàn)有的應(yīng)用程序虛擬化軟件來(lái)將應(yīng)用程序添加到虛擬環(huán)境的相同方式。虛擬進(jìn)程(四4)可以已經(jīng)包括先前在它是非虛擬進(jìn)程(236)時(shí)被傳送給它的參數(shù)084),使得在稍后恢復(fù)它時(shí)它可以作用于那些參數(shù)。用于虛擬環(huán)境(230)和虛擬進(jìn)程094)的代碼可以被提供為定義用于虛擬環(huán)境(230)和要在該虛擬環(huán)境中運(yùn)行的一個(gè)或多個(gè)虛擬進(jìn)程(294)的設(shè)置和配置的虛擬包的部分。替代地,可以以某種其他方式提供用于虛擬環(huán)境(230)和虛擬進(jìn)程(四4)的代碼。將虛擬進(jìn)程(四4)添加到虛擬環(huán)境(230)可以使得計(jì)算環(huán)境(200)被配置為使得對(duì)所請(qǐng)求的非虛擬進(jìn)程的調(diào)用被虛擬化軟件重定向到虛擬進(jìn)程094)。這可以借助于諸如微軟的App-V軟件等的可用的應(yīng)用程序虛擬化軟件來(lái)完成。虛擬化代理(220)可以將通知(296)傳送給中介模塊014),通知中介模塊(214)虛擬進(jìn)程(四4)被成功地添加到虛擬環(huán)境(230)。響應(yīng)于通知(296),中介模塊(214)可以恢復(fù)(297)虛擬進(jìn)程(四4),如果需要這樣的恢復(fù)097)的話。例如,如果發(fā)起進(jìn)程OlO)已經(jīng)出于某種其他原因而掛起新進(jìn)程,且發(fā)起進(jìn)程(210)還沒(méi)有準(zhǔn)備好恢復(fù)該新進(jìn)程,則可以不需要虛擬進(jìn)程094)的恢復(fù)097)。在一種實(shí)現(xiàn)中,可以以諸如產(chǎn)生可由操作系統(tǒng)O80)中的進(jìn)程恢復(fù)模塊(四9)處理以便恢復(fù)虛擬環(huán)境O30)中的虛擬進(jìn)程(四4)的進(jìn)程恢復(fù)API調(diào)用(四8)等的標(biāo)準(zhǔn)方式進(jìn)行虛擬進(jìn)程(294)的恢復(fù)(297)。因?yàn)榘l(fā)起進(jìn)程(210)可以做出創(chuàng)建作為虛擬進(jìn)程(四4)而被添加到虛擬環(huán)境(230)的非虛擬進(jìn)程036)的創(chuàng)建API調(diào)用070),而不是做出創(chuàng)建代理的調(diào)用,所以可以避免與這樣的代理相關(guān)聯(lián)的缺陷。例如,發(fā)起進(jìn)程(210)可以與虛擬進(jìn)程(四4)交互,正如在關(guān)聯(lián)的非虛擬進(jìn)程正在運(yùn)行時(shí)它會(huì)這樣做的那樣。發(fā)起進(jìn)程(210)可以對(duì)虛擬進(jìn)程(294)做出其正常調(diào)用,驗(yàn)證數(shù)字簽名或關(guān)于虛擬進(jìn)程094)的其他信息,等等??梢杂商摂M進(jìn)程(四4)正常地處理這樣的調(diào)用和驗(yàn)證,這是因?yàn)樘摂M進(jìn)程(四4)是發(fā)起進(jìn)程(210)預(yù)期調(diào)用的相同進(jìn)程(盡管它正運(yùn)行在虛擬環(huán)境O30)中)。因此,不需要在發(fā)起進(jìn)程(210)和虛擬進(jìn)程(四4)之間的復(fù)雜代理。
在圖2中闡釋并在以上描述的各組件Ο10、220、230、236、294、280等等)中的每一個(gè)可以駐留在諸如以上參考圖1所描述的存儲(chǔ)器(120)等的存儲(chǔ)器中。另外,在圖2中闡釋的各組件Ο10、220、230、236、294、280等等)中的每一個(gè)可以由諸如以上參考圖1所描述的處理單元(110)等的一個(gè)或多個(gè)處理單元執(zhí)行,以便如上所述執(zhí)行。也可以借助于一個(gè)或多個(gè)這樣的處理單元來(lái)執(zhí)行下面討論的技術(shù)。盡管已經(jīng)作為示例描述了特定的環(huán)境000),但應(yīng)明白,也可以使用其他環(huán)境和進(jìn)程創(chuàng)建技術(shù)。例如,環(huán)境(200)可以包括運(yùn)行在單個(gè)操作系統(tǒng)上的多個(gè)虛擬環(huán)境或(各)操作系統(tǒng)和(各)虛擬環(huán)境的某種其他配置。另外,可以不同于上面的描述而排序或排列在環(huán)境O00)內(nèi)的通信和進(jìn)程。作為這種重排序或重排列的示例,虛擬化代理可以創(chuàng)建虛擬環(huán)境并在將用于虛擬環(huán)境的標(biāo)識(shí)符返回給發(fā)起進(jìn)程之前將虛擬進(jìn)程添加到虛擬環(huán)境。III.用于從非虛擬請(qǐng)求創(chuàng)建虛擬進(jìn)程的技術(shù)可以在諸如以上參考圖1和圖2所描述的計(jì)算環(huán)境(100和200)等的環(huán)境或某種其他環(huán)境中執(zhí)行下面討論的圖3和圖4的技術(shù)。參見(jiàn)圖3,將討論虛擬進(jìn)程創(chuàng)建技術(shù)。在非虛擬進(jìn)程創(chuàng)建請(qǐng)求仍然在發(fā)起請(qǐng)求的進(jìn)程中時(shí),可以截取(310)該非虛擬進(jìn)程創(chuàng)建請(qǐng)求。例如,可以由位于發(fā)起進(jìn)程的調(diào)用堆棧的中介模塊截取請(qǐng)求。可以標(biāo)識(shí)(320)對(duì)應(yīng)于由進(jìn)程創(chuàng)建請(qǐng)求所請(qǐng)求的進(jìn)程的虛擬進(jìn)程。例如,這一標(biāo)識(shí)(320)可以包括將進(jìn)程標(biāo)識(shí)符傳送給虛擬化代理并使得該代理在查詢表中查找進(jìn)程標(biāo)識(shí)符。替代地,可以以某種其他方式進(jìn)行標(biāo)識(shí)(320),例如通過(guò)使得發(fā)起進(jìn)程中的中介模塊在查詢表中查找進(jìn)程標(biāo)識(shí)符。可以準(zhǔn)備(330)虛擬環(huán)境。這可以響應(yīng)于進(jìn)程創(chuàng)建請(qǐng)求而進(jìn)行,或者環(huán)境可以已經(jīng)事先準(zhǔn)備好??梢詫⑻摂M進(jìn)程添加(340)到虛擬環(huán)境,使得可以由虛擬進(jìn)程而不是由所請(qǐng)求的非虛擬進(jìn)程履行(350)進(jìn)程創(chuàng)建請(qǐng)求。這一履行(350)可以包括根據(jù)適當(dāng)?shù)膮?shù)在虛擬環(huán)境中運(yùn)行虛擬進(jìn)程,使得虛擬進(jìn)程可以按照從發(fā)起進(jìn)程中的請(qǐng)求的上下文所預(yù)期的運(yùn)轉(zhuǎn)。例如,虛擬進(jìn)程可以加載關(guān)聯(lián)的文檔或文件,或以特定的模式起動(dòng)?,F(xiàn)在參見(jiàn)圖4,將討論另一虛擬進(jìn)程創(chuàng)建技術(shù)。在發(fā)起進(jìn)程中可以發(fā)起(40 對(duì)創(chuàng)建所請(qǐng)求的非虛擬進(jìn)程的進(jìn)程創(chuàng)建請(qǐng)求。在請(qǐng)求仍然在發(fā)起進(jìn)程中時(shí),可以截取(410)該請(qǐng)求,且可以判斷(420)所請(qǐng)求的進(jìn)程是否對(duì)應(yīng)于可用的虛擬進(jìn)程。如果不是這樣,或者如果起動(dòng)非虛擬進(jìn)程比啟動(dòng)虛擬進(jìn)程是更加優(yōu)選的,那么,非虛擬進(jìn)程創(chuàng)建可以繼續(xù)(425)。如果所請(qǐng)求的非虛擬進(jìn)程對(duì)應(yīng)于可用的虛擬進(jìn)程且起動(dòng)該虛擬進(jìn)程是優(yōu)選的,那么,可以判斷(430)是否已經(jīng)準(zhǔn)備好用于虛擬進(jìn)程的適當(dāng)?shù)奶摂M環(huán)境。如果不是這樣,那么,可以準(zhǔn)備(43 虛擬環(huán)境。無(wú)論是在截取(410)進(jìn)程創(chuàng)建請(qǐng)求之前還是之后準(zhǔn)備適當(dāng)?shù)奶摂M環(huán)境,都可以將對(duì)應(yīng)于所請(qǐng)求的進(jìn)程的虛擬進(jìn)程添加(440)到虛擬環(huán)境。另外,可以借助于虛擬環(huán)境中的虛擬進(jìn)程來(lái)履行(450)進(jìn)程創(chuàng)建請(qǐng)求。例如,發(fā)起進(jìn)程可以發(fā)送可以包括關(guān)聯(lián)的參數(shù)的進(jìn)程創(chuàng)建API調(diào)用。虛擬進(jìn)程可以接收到參數(shù),這可以導(dǎo)致虛擬進(jìn)程以特定的方式運(yùn)行,例如加載特定的文件、以特定的模式起動(dòng),等等。在一些情況中,履行(450)可以包括虛擬進(jìn)程僅僅以默認(rèn)的模式運(yùn)行。盡管已經(jīng)用對(duì)結(jié)構(gòu)特征和/或方法論動(dòng)作來(lái)說(shuō)專用的語(yǔ)言描述了本主題,但應(yīng)理解,在所附權(quán)利要求中界定的本主題并不必定限于以上所描述的具體的特征或動(dòng)作。相反,以上所描述的具體的特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開(kāi)的。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括借助于正在運(yùn)行的非虛擬進(jìn)程(210)中的中介模塊(214)來(lái)截取來(lái)自所述正在運(yùn)行的非虛擬進(jìn)程O10)的創(chuàng)建請(qǐng)求的非虛擬進(jìn)程036)的請(qǐng)求012);響應(yīng)于所截取的所述請(qǐng)求012),標(biāo)識(shí)對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程036)的適當(dāng)?shù)奶摂M進(jìn)程(294);準(zhǔn)備被配置為主控所述虛擬進(jìn)程094)的虛擬環(huán)境Q30); 將所述虛擬進(jìn)程(四4)添加到所述虛擬環(huán)境O30);以及借助于所述虛擬進(jìn)程(四4)來(lái)履行所述請(qǐng)求012)。
2.如權(quán)利要求1所述的方法,其特征在于,所述中介模塊、所述正在運(yùn)行的非虛擬進(jìn)程和所述虛擬環(huán)境全部都在計(jì)算環(huán)境中的存儲(chǔ)器上,且所述截取、標(biāo)識(shí)、準(zhǔn)備、添加和履行全部都由所述計(jì)算環(huán)境中的一個(gè)或多個(gè)處理器執(zhí)行,所述一個(gè)或多個(gè)處理器可以訪問(wèn)被存儲(chǔ)在所述存儲(chǔ)器上的信息。
3.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)所述適當(dāng)?shù)奶摂M進(jìn)程包括使用關(guān)于所請(qǐng)求的非虛擬進(jìn)程的標(biāo)識(shí)信息。
4.如權(quán)利要求3所述的方法,其特征在于,所述標(biāo)識(shí)信息包括全局名稱。
5.如權(quán)利要求4所述的方法,其特征在于,所述名稱包括文件名和路徑。
6.如權(quán)利要求1所述的方法,其特征在于,所述中介模塊包括所述正在運(yùn)行的非虛擬進(jìn)程的調(diào)用堆棧中的組件。
7.如權(quán)利要求1所述的方法,其特征在于所述虛擬環(huán)境包括一環(huán)境,所述環(huán)境將該環(huán)境中的一個(gè)或多個(gè)虛擬進(jìn)程與在所述虛擬環(huán)境外的一個(gè)或多個(gè)外部進(jìn)程隔離開(kāi)來(lái),但是所述虛擬環(huán)境促進(jìn)所述環(huán)境中的所述一個(gè)或多個(gè)虛擬進(jìn)程訪問(wèn)由底層操作系統(tǒng)管理的資源;所述中介模塊包括所述正在運(yùn)行的非虛擬進(jìn)程的調(diào)用堆棧中的組件; 標(biāo)識(shí)所述適當(dāng)?shù)奶摂M進(jìn)程包括從所述中介模塊向虛擬化代理傳送對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程的標(biāo)識(shí)符,所述虛擬化代理被配置為管理一個(gè)或多個(gè)虛擬環(huán)境;準(zhǔn)備所述虛擬環(huán)境包括借助于所述虛擬化代理來(lái)準(zhǔn)備所述虛擬環(huán)境;以及添加所述虛擬進(jìn)程包括響應(yīng)于截取所述請(qǐng)求借助于所述虛擬化代理來(lái)添加所述虛擬進(jìn)程。
8.一種計(jì)算機(jī)系統(tǒng),包括 存儲(chǔ)器(120);一個(gè)或多個(gè)處理單元(110),所述一個(gè)或多個(gè)處理單元(110)被配置為訪問(wèn)和處理來(lái)自所述存儲(chǔ)器的信息;所述存儲(chǔ)器(120)上的虛擬化代理Q20);所述存儲(chǔ)器上的正在運(yùn)行的非虛擬進(jìn)程010),所述正在運(yùn)行的非虛擬進(jìn)程(210)被配置為發(fā)起創(chuàng)建所請(qǐng)求的非虛擬進(jìn)程036)的進(jìn)程創(chuàng)建請(qǐng)求012);所述正在運(yùn)行的非虛擬進(jìn)程(210)中的中介模塊014),所述中介模塊(214)被配置為由所述一個(gè)或多個(gè)處理單元(110)處理以便截取所述進(jìn)程創(chuàng)建請(qǐng)求012);所述存儲(chǔ)器(120)上的虛擬化代理O20),所述虛擬化代理(220)被配置為由所述一個(gè)或多個(gè)處理單元(110)處理,以便從所述中介模塊(214)接收所述進(jìn)程創(chuàng)建請(qǐng)求012)的通知; 準(zhǔn)備虛擬環(huán)境O30);以及向所述虛擬環(huán)境(230)添加對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程036)的虛擬進(jìn)程(四4)。
9.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述計(jì)算機(jī)系統(tǒng)被配置為借助于所述虛擬進(jìn)程來(lái)履行所述進(jìn)程創(chuàng)建請(qǐng)求。
10.在其上具有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,在所述計(jì)算機(jī)可執(zhí)行指令被執(zhí)行時(shí),執(zhí)行包括以下的動(dòng)作在計(jì)算環(huán)境(100)中的正在運(yùn)行的非虛擬進(jìn)程(210)中發(fā)起創(chuàng)建非虛擬進(jìn)程(236)的進(jìn)程創(chuàng)建請(qǐng)求012);在從所述正在運(yùn)行的非虛擬進(jìn)程(210)傳送所述進(jìn)程創(chuàng)建請(qǐng)求(21 之前,借助于進(jìn)程內(nèi)中介模塊(214)來(lái)截取所述進(jìn)程創(chuàng)建請(qǐng)求012);判斷所述進(jìn)程創(chuàng)建請(qǐng)求(212)是否對(duì)應(yīng)于可用的虛擬進(jìn)程094); 如果所述進(jìn)程創(chuàng)建請(qǐng)求對(duì)應(yīng)于所述可用的虛擬進(jìn)程094),那么 將所述虛擬進(jìn)程(四4)添加到虛擬環(huán)境Q30);以及借助于所述虛擬進(jìn)程(四4)來(lái)履行所述進(jìn)程創(chuàng)建請(qǐng)求012)。
11.如權(quán)利要求10所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,履行所述進(jìn)程創(chuàng)建請(qǐng)求包括根據(jù)來(lái)自所述正在運(yùn)行的進(jìn)程的進(jìn)程創(chuàng)建應(yīng)用程序編程接口調(diào)用中的一個(gè)或多個(gè)參數(shù)在所述虛擬環(huán)境中運(yùn)行所述虛擬進(jìn)程。
12.如權(quán)利要求10所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,判斷所述進(jìn)程創(chuàng)建請(qǐng)求是否對(duì)應(yīng)于可用的虛擬進(jìn)程包括判斷所述進(jìn)程創(chuàng)建請(qǐng)求中的標(biāo)識(shí)符是否對(duì)應(yīng)于可用的虛擬進(jìn)程。
13.如權(quán)利要求10所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,將所述虛擬進(jìn)程添加到所述虛擬環(huán)境包括使用虛擬化代理來(lái)將所述虛擬進(jìn)程添加到所述虛擬環(huán)境。
14.如權(quán)利要求10所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述動(dòng)作還包括 判斷是否已經(jīng)準(zhǔn)備所述虛擬環(huán)境;如果還沒(méi)有準(zhǔn)備所述虛擬環(huán)境,那么,準(zhǔn)備所述虛擬環(huán)境。
15.如權(quán)利要求10所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,借助于所述虛擬進(jìn)程來(lái)履行所述進(jìn)程創(chuàng)建請(qǐng)求包括根據(jù)一個(gè)或多個(gè)參數(shù)運(yùn)行所述虛擬進(jìn)程。
全文摘要
在一種實(shí)施例中,工具和技術(shù)可以包括借助于在正在運(yùn)行的非虛擬進(jìn)程中的中介模塊來(lái)截取來(lái)自正在運(yùn)行的非虛擬進(jìn)程的創(chuàng)建所請(qǐng)求的非虛擬進(jìn)程的請(qǐng)求。響應(yīng)于所截取的請(qǐng)求,可以標(biāo)識(shí)對(duì)應(yīng)于所請(qǐng)求的非虛擬進(jìn)程的適當(dāng)?shù)奶摂M進(jìn)程。另外,可以準(zhǔn)備被配置為主控該虛擬進(jìn)程的虛擬環(huán)境,且可以將該虛擬進(jìn)程添加到該虛擬環(huán)境。最終,可以借助于該虛擬進(jìn)程來(lái)履行請(qǐng)求。
文檔編號(hào)G06F9/22GK102378964SQ201080016206
公開(kāi)日2012年3月14日 申請(qǐng)日期2010年3月26日 優(yōu)先權(quán)日2009年3月31日
發(fā)明者J·M·希恩, N·雅各布森, R·P·西斯特拉 申請(qǐng)人:微軟公司