将信息从安全虚拟机重定向到不安全虚拟机的制作方法

文档序号:6361134阅读:188来源:国知局

专利名称::将信息从安全虚拟机重定向到不安全虚拟机的制作方法
技术领域
:本文描述的方法和系统总的涉及在虚拟机之间传输信息。该方法和系统尤其涉及将信息从安全虚拟机重定向到不安全虚拟机。
背景技术
:随着移动雇员、远程雇员、客户雇员和基于任务的雇员的数量的增加,对于限制每类雇员可用的信息且将雇员个人数据与工作相关数据隔离的计算系统的需求随之增加。很多公司使用便携电脑向他们的雇员提供对公司内网的远程访问、对雇员所使用应用的远程访问、对雇员文件的远程访问,以及对远程桌面、虚拟机或远程应用的访问。在很多情况下,雇员可以使用任何机器和/或网络从任何地理位置访问公司资源。一些公司可向他们的雇员提供能够用于访问公司资源的机器。在一些情况下,这些机器可执行一个或多个管理程序,所述管理程序可管理专用于执行公司应用以及访问公司资源的虚拟机。通常雇员执行个人任务并从公司应用访问个人的信息。在这些情况下,公司可能希望限制向公司文档、信息和应用暴露的个人信息量。当用户登录到分配给工作的虚拟机或虚拟桌面时,可能限制该用户对个人资源的访问。可以将对个人的信息、URL和应用的访问限制为从不安全的或个人的域进行访问。
发明内容本文描述的是用于将执行应用的请求、访问文件的请求和导航到URL中所识别的网站的请求重定向到安全的或不安全的虚拟机的方法和系统。在一些实施例中,该方法和系统可以包括拦截这样的请求并且将应用、文件夹、文件、域或所指定的其他资源标识为安全的或不安全的。当该请求源自安全虚拟机并且所请求的文件、应用或URL是不安全的时,可以将该请求重定向到不安全虚拟机。当该请求源自不安全虚拟机并且所请求的文件、应用或URL是安全的时,可以将该请求重定向到安全虚拟机。当将请求重定向到合适的虚拟机时,由该虚拟机满足该请求。在一个方面,本发明涉及用于将访问请求重定向到不安全虚拟机的方法。该方法可以应用于执行寄载安全虚拟机和不安全虚拟机的管理程序的计算装置。该方法可包括由通过在计算装置上执行的管理程序所寄载的控制虚拟机拦截访问不安全资源的请求,所述不安全资源包括下列的其中一个文件、应用和统一资源定位符(URL)。控制虚拟机可确定该请求源自在计算装置上执行的安全虚拟机。控制虚拟机响应于所述确定将该请求重定向到在该计算装置上执行的不安全虚拟机。该不安全虚拟机可以提供对所请求的不安全资源的访问。在一些实施例中,控制虚拟机的控制程序拦截该请求。控制程序可以在该计算装置的处理器上执行。由在该计算装置上执行的第一类型管理程序寄载的控制虚拟机可以拦截该请求。在安全虚拟机上执行的应用可以发起对不安全资源的请求。控制虚拟机可以基于下列之一确定虚拟机是否是安全的在该虚拟机上执行的应用、访问该虚拟机的用户的标识、授权给该虚拟机用于访问一个或多个资源的访问级别,以及分配给该虚拟机的风险级别。在一些实施例中,该控制虚拟机可以基于下列之一确定所请求的资源是否是安全的在所请求的文件和应用之间的文件类型关联、资源的配置文件、所请求的资源的安全设置、对应于所请求的资源的网站的标识、对应于所请求的资源的位置的标识,和对应于所请求的资源的主机的标识。在一些实施例中,控制虚拟机将下列之一与所述请求一起进行重定向cookie和安全令牌。可以通过下列之一来访问所请求的资源将所请求的文件下载到所述不安全虚拟机、在所述不安全虚拟机上打开所请求的文件、在所述不安全虚拟机上执行所请求的应用,和从所述不安全虚拟机导航到由所请求的URL识别的网站。在某些实施例中,在所述安全虚拟机上经由在所述不安全虚拟机上执行的窗口来显示所请求的资源。在其他的一些实施例中,在所述不安全虚拟机上显示所请求的资源。在又一个方面,本公开涉及用于将访问请求重定向到不安全虚拟机的系统。该系统可包括计算装置,所述计算装置包括管理程序,所述管理程序寄载控制虚拟机、安全虚拟机和不安全虚拟机。控制虚拟机可以被配置为拦截访问不安全资源的请求,所述不安全资源包括下列之一文件、应用和统一资源定位符(URL)。控制虚拟机可以确定该请求是否源自安全虚拟机。控制虚拟机还可以响应于确定该请求源自安全虚拟机来将该请求重定向到在该计算装置上执行的不安全虚拟机。响应于该重定向,该不安全虚拟机提供对所请求的不安全资源的访问。在一些实施例中,控制虚拟机包括用于拦截该请求的控制程序。控制程序可以在该计算装置的处理器上执行。管理程序可包括第一类型管理程序。该系统还可包括在所述安全虚拟机上执行的应用,其发起对所述不安全资源的请求。控制虚拟机可以基于下列之一确定虚拟机是安全的还是不安全的在该虚拟机上执行的应用、访问该虚拟机的用户的标识、授权给该虚拟机用于访问一个或多个资源的访问级别,和分配给该虚拟机的风险级另IJ。控制虚拟机可以基于下列之一确定所请求的资源是安全的还是不安全的在所请求的文件和应用之间的文件类型关联、资源的配置文件、所请求的资源的安全设置、对应于所请求的资源的网站的标识、对应于所请求的资源的位置的标识,和对应于所请求的资源的主机的标识。在一些实施例中,控制程序还将下列之一与该请求一起进行重定向cookie和安全令牌。可以通过下列之一来访问所请求的资源将所请求的文件下载到所述不安全虚拟机、在所述不安全虚拟机上打开所请求的文件、在所述不安全虚拟机上执行所请求的应用,和从所述不安全虚拟机导航到由所请求的URL识别的网站。在一些实施例中,控制虚拟机还被配置为在安全虚拟机上经由在所述不安全虚拟机上执行的窗口来显示所请求的资源。在又一个方面,本公开涉及用于将访问请求重定向到安全虚拟机的方法。该方法可以应用于执行寄载安全虚拟机和不安全虚拟机的管理程序的计算装置。该方法可包括由通过在计算装置上执行的管理程序所寄载的控制虚拟机拦截访问安全资源的请求。该安全资源可包括下列之一文件、应用和统一资源定位符(URL)。控制虚拟机可确定该请求源自在计算装置上执行的不安全虚拟机。控制虚拟机还可以响应于该确定将该请求重定向到在计算装置上执行的安全虚拟机。该安全虚拟机可以提供对所请求的不安全资源的访问。在附图和下面的描述中将详细阐述本发明的各种实施例的细节。通过参考下述结合附图的描述,本发明的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中图IA是描述包括与远程机器通信的本地机器的网络环境的实施例的框图;图1B-1C是描述用于与本文所述的方法和系统结合的计算机的实施例的框图;图2A和图2B是描述虚拟化环境的实施例的框图;图3A是描述用于在安全和不安全虚拟机之间通信的系统的实施例的框图;图3B是用于在安全和不安全虚拟机之间通信的方法的实施例的流程图;图4A是用于在安全和不安全虚拟机之间重定向访问请求的方法的实施例的图表;图4B是用于在安全和不安全虚拟机之间重定向访问请求的方法的实施例的流程图。从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中指示相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素。具体实施例方式为了阅读下文各种实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的-A部分描述有益于实施本文所述的实施例的网络环境和计算环境;-B部分描述包括有益于实施本文所述的实施例的虚拟化环境的系统的实施例;-C部分描述用于在安全和不安全虚拟机之间重定向访问请求的系统和方法的实施例。A.网络和计算环境现参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或者多个网络104与一个或者多个远程机器106a-106n(其也被总称为服务器106或者远程机器106)通信的一个或者多个本地机器102a-102n(其也被总称为本地机器102、客户机102、客户节点102、客户机器102、客户计算机102、客户机装置102、端点102或端点节点102)。在一些实施例中,本地机器102既有作为客户节点寻求访问服务器所提供资源的能力,也有作为服务器向其他客户机102a-102n提供对所寄载的资源的访问的能力。虽然图IA示出了在本地机器102和远程机器106之间的网络104,本地机器102和远程机器106可以位于相同的网络104上。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如因特网或万维网)。在一些实施例中,在本地机器102和远程机器106之间可以有多个网络104。在这些实施例的一个中,网络104’(未示出)可为专用网并且网络104可为公网。在这些实施例的另一个中,网络104可为专用网并且网络104’可为公网。在又一个实施例中,网络104和104’可都为专用网。而在另一个实施例中,网络104和104,可都为公网。网络104可以是任何类型和/或形式的网络,并且可包括任意下述网络点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104可以具有对于本领域普通技术人员所熟知的、能够支持本文描述的操作的任何这样的网络拓扑。网络可包括利用用于移动装置间通信的任一或一些协议的移动电话网络,这些协议包括AMPS、TDMA,CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。在一些实施例中,系统可包括多个逻辑分组的远程机器106。在这些实施例的一个中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的又一个中,远程机器106可为地理上分散的。在其他实施例中,服务器群38可以作为单个实体被管理。仍在其他实施例中,服务器群38包括多个服务器群38。每个服务器群38内的远程机器106可能是异构的一一个或多个远程机器106可根据一种类型的操作系统平台(例如,WINDOWSNT、WINDOWS2003、WINDOWS2008、WINDOWS7和WINDOWServer2008R2,所有这些都是由华盛顿州Redmond的Microsoft公司出品的)操作,而一个或多个其它远程机器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个服务器群38的远程机器106不必与同一服务器群38中的另一个远程机器106在物理上接近。因此,逻辑上分组为服务器群38的远程机器106组可以是使用广域网(WAN)连接或城域网(MAN)连接来互联的。例如,服务器群38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的远程机器106。如果远程机器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加服务器群38中的远程机器106间的数据传输速度。远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSLVPN服务器,或防火墙。在一些实施例中,远程机器106提供远程认证拨入用户服务,并且可被称为RADIUS服务器。在其他实施例中,远程机器106可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,远程机器106是刀片服务器。在其他实施例中,远程机器106执行向用户或客户计算机102提供对计算环境访问的虚拟机。在一个实施例中,远程机器106可包括活动目录。远程机器106可以是应用加速设备。对于其中远程机器106是应用加速设备的实施例,远程机器106可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,远程机器106包括诸如由位于美国加州SanJose的Citrix应用网络组、位于美国加州MountainView的SilverPeakSystems公司、位于美国加州SanFrancisco的RiverbedTechnology公司、位于美国华盛顿州Seattle的F5Networks公司或位于美国加州Sunnyvale的JuniperNetworks公司制造的设备系列的其中一个的设备。在一些实施例中,远程机器106代表本地机器102的用户执行应用。在其他实施例中,远程机器106执行虚拟机,该虚拟机提供执行会话,在该执行会话中应用代表本地机器102的用户来执行。在这些实施例的一个中,该执行会话是所寄载的桌面会话。在这些实施例的另一个中,该执行会话提供对计算环境的访问,该计算环境包括如下的一个或多个应用、多个应用、桌面应用、以及在其中可执行一个或多个应用的桌面会话。在一些实施例中,本地机器102与远程机器106通信。在一个实施例中,本地机器102与服务器群38中的远程机器106之一直接通信。在又一个实施例中,本地机器102执行程序邻近应用(aprogramneighborhoodapplication)以与服务器群38内的远程机器106通信。在又一个实施例中,远程机器106提供主节点的功能。在一些实施例中,本地机器102通过网络104与服务器群38中的远程机器106通信。例如通过网络104,本地机器102可以请求执行服务器群38中的远程机器106a-106n所寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供这样的功能,即识别和提供与远程机器106b相关的地址信息所需的功能,所述远程机器106b寄载所请求的应用。在一个实施例中,远程机器106提供web服务器的功能。在又一个实施例中,远程机器106a接收来自本地机器102的请求,将该请求转发到第二远程机器106b,并用远程机器106b对该请求的响应来对本地机器102的请求进行响应。在又一个实施例中,远程机器106a获得对本地机器102可用的应用的列举,以及与寄载由该应用的列举所识别的应用的远程机器106b相关联的地址信息。在又一个实施例中,远程机器106使用web接口提供对本地机器102的请求的响应。在一个实施例中,本地机器102直接与远程机器106通信以访问所识别的应用。在又一个实施例中,本地机器102接收通过执行远程机器106上所识别的应用而产生的输出数据,例如显示数据。在一些实施例中,远程机器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算的应用或远程显示表示应用。在一个实施例中,远程机器106或服务器群38作为应用来执行CitrixSystems有限公司的CITRIXACCESSSHTE的任一部分(例如METAFRAME或CITRIXPRESENTATIONSERVER产品),由CitrixSystems有限公司出品的任何下列产品CITRIXXENAPP,CITRIXXENDESKT0P,CITRIXACCESSGATEWAY,和/或微软公司出品的MICROSOFTWINDOWS终端服务中的任意一个。在又一个实施例中,该应用是由位于美国佛罗里达州FortLauderdale的CitrixSystems有限公司开发的ICA客户机。仍在又一个实施例中,远程机器106可以运行应用,例如,该应用可以是提供诸如由位于美国华盛顿州Redmond的微软公司制造的MICROSOFTEXCHANGE的电子邮件服务的应用服务器、web或Internet服务器,或桌面共享服务器,或协同服务器。在又一个实施例中,任何应用可以包括任何类型的所寄载的服务或产品,例如位于美国加利福尼亚州SantaBarbara的CitrixOnlineDivision公司提供的G0T0MEETING,位于美国加利福尼亚州SantaClara的WebEx有限公司提供的WEBEX,或者位于美国华盛顿州Redmond的微软公司提供的MicrosoftOfficeLIVEMEETING。本地机器102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机一服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java小应用程序、或者可以在本地机器102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,该应用可以是代表本地机器102在远程机器106上执行的基于服务器或者基于远程的应用。在其他实施例中,远程机器106可以使用任意瘦-客户端协议、表示层协议或远程显示协议来显示输出到本地机器102,所述协议例如由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems有限公司出品的独立计算架构(ICA)协议;由位于美国华盛顿州Redmond的微软公司出品的远程桌面协议(RDP)5Xll协议;由AT&T贝尔实验室出品的虚拟网络计算(VNC)协议;由位于美国加里福尼亚州Sunnyvale和位于以色列Raanana的Qumranet有限公司出品的SPICE协议;由加里福尼亚州Milpitas的VESA公司出品的Net2Display协议;由位于加拿大不列颠哥伦比亚省的Burnaby的Teradici公司出品的PC-over-IP协议;由加里福尼亚州SanJose的WyseTechnology有限公司出品的TCX协议;由纽约州纽约市的哥伦比亚大学开发的THINC协议;或由马萨诸塞州Chelmsford的Desktone有限公司开发的Virtual-D协议。该应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,该应用包括与互联网协议电话(VoIP)通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,该应用包括与实时数据通信相关的任一应用,例如用于流式传输视频和/或音频的应用。本地机器102和远程机器106可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行本文所描述的操作的计算机、网络装置或设备。图IB和IC描述了用于实施本地机器102或远程机器106的实施例的计算装置100的框图。如图IB和IC所示,每个计算装置100包括中央处理单元121和主存储器单元122。如图IB所示,计算装置100可包括存储装置128、安装装置116、网络接口118、1/0控制器123、显示装置124a-124n、键盘126和诸如鼠标的指示装置127。存储装置128可包括但不限于操作系统、软件和客户机代理120。如图IC所示,每个计算装置100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出装置130a—130η(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。中央处理单元121是响应并处理从主存储器单元122取出的指令的任一逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如由位于美国加利福尼亚州MountainView的Intel公司制造的微处理器单元;由位于美国伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州SantaClara的Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州WhitePlains的InternationalBusinessMachines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的AdvancedMicroDevices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任意一种,或者能够如本文所述方式运行的任意其它处理器。主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPMDRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发扩展数据输出DRAM(BED0DRAM)、增强DRAM(EDRAM)、同步DRAM(SDRAM),JEDECSRAM、PC100SDRAM、双倍数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)或铁电RAM(FRAM)0主存储器122可以基于上述存储器芯片的任意一种,或者能够如本文所述方式运行的任意其它可用存储器芯片。在图IB所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图IC描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图IC中主存储器122可以是DRDRAM。图IC描述在其中主处理器121通过有时被称为后端总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IB所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/o装置130,包括VESAVL总线、ISA总线、EISA总线、微信道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示器124通信。图IC描述了在其中主处理器121通过HYPERTRANSP0RT、RAPIDI0、或INFINIBAND通信技术直接与I/O装置130b通信的计算机100的实施例。图IC也描述了在其中本地总线和直接通信相混合的实施例处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。计算装置100中可以有多种I/O装置130a_130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图IB所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未示出)以接纳手持USB存储装置,例如由位于美国加利福尼亚州LosAlamitos的TwintechIndustry有限公司生产的USB闪存驱动系列装置。再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接纳诸如3.5英寸、5.25英寸磁盘或ZIP磁盘的软盘的软盘驱动器、⑶-ROM驱动器、⑶-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装软件和程序的任意其它装置。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导CD,诸如ΚΝ0ΡΡΙΧ,其为一种用于GNU/Linux的可引导CD,可自knoppix.net作为GNU/Linux—个发行版获得。此外,计算装置100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11、Tl、T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、基于SONET的以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.lib、IEEE802.llg、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或由位于美国佛罗里达州Ft.Lauderdale的CitrixSystems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它装置。在一些实施例中,计算装置100可以包括多个显示装置124a_124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任何类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或以其他方式使用显示装置124a_124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a_124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置IOOa和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员应认识和意识到可以将计算装置100配置成拥有多个显示装置124a-124n的各种方式和实施例。在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、Fireffire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线。图IB和IC中所描述类型的计算装置100通常地在操作系统的控制下运行,所述操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任何操作系统,诸如任意版本的MICROSOFTWINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MACOS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行本文所描述的操作的任意其它操作系统。典型的操作系统包括但不限于WINDOWS3.x,WINDOWS95,WINDOWS98,WINDOWS2000,WINDOWSNT3.51,WINDOWSNT4.0、WINDOWS7、WINDOWSCE、WINDOWSXP和WINDOWSVISTA,所有这些均由位于美国华盛顿州Redmond的微软公司出品;由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的MACOS;由位于美国纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于美国犹他州SaltLakeCity的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。计算装置100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话或其他便携电信装置、媒体播放装置、游戏系统、移动计算装置,或能够通信并有足够的处理器能力和存储容量以执行本文所述的操作的任意其它类型和/或形式的计算、电信或者媒体装置。例如,计算机装置100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列装置、由位于日本东京的索尼公司出品的PLAYSTATI0N2、PLAYSTATI0N3或PERSONALPLAYSTATIONPORTABLE(PSP)装置,由位于日本京都的Nintendo有限公司出品的NINTENDODS、NINTENDOGAMEBOY、NINTENDOGAMEBOYADVANCED或NINTENDOREVOLUTION装置,或者由位于美国华盛顿州Redmond的微软公司出品的XBOX或XBOX360装置。在一些实施例中,计算装置100可以有不同的处理器、操作系统以及符合该装置的输入装置。例如,在一个实施例中,计算装置100是由Palm有限公司出品的TRE0180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或Pro智能电话。在这些实施例的一些中,TERO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入装置以及五向导航装置。在其他实施例中,计算装置100是移动装置,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr、i58sr、i85s、i88s、i90c、i95cl、i335、i365、i570、1576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、776或imllOO,以上这些均由位于美国伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本京都的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的SonyEricssonMobileCommunicationsAB公司制造的移动装置。在其他实施例中,计算装置100是黑莓(Blackberry)手持或智能电话,诸如由ResearchInMotion有限公司制造的装置,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520、黑莓PEARL8100,8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve8900、黑莓PearlFlip。在其他实施例中,计算装置100是智能电话、PocketPC、PocketPC电话,或支持MicrosoftWindowsMobileSoftware的其它手持移动装置。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行本文所述操作的其它形式的计算或者电信装置。在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的AppleIPOD、IPODTouch、IPODNANO和IP0DSHUFFLE系列装置的数字音频播放器。在这些实施例的另一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置100是诸如由位于美国新泽西州RidgefieldPark的SamsungElectronicsAmerica公司制造的DigitalAudioPlayerSelectMP3播放器,或由位于美国伊利诺伊州Schaumburg的Motorola公司制造的Motorolam500或m25的数字音频播放器。在其他实施例中,计算装置100是便携媒体播放器,诸如由CreativeTechnologies有限公司制造的ZenVisionW、ZenVision系列、ZenPortableMediaCenter装置或DigitalMP3系列的MP3播放器。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括但不限于MP3、WAV、M4A/AAC、WMAProtectedAAC、AIFF、Audible有声读物、AppleLossless音频文件格式和·mov、·m4v以及·mp4MPEG_4(H.264/MPEG-4AVC)视频文件格式。在一些实施例中,计算装置100包括装置的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算装置100是组合数字音频播放器和移动电话的MotorolaRAZR或MotorolaROKR系列。在这些实施例的又一个中,计算装置100是由位于加利福尼亚州Cupertino的苹果公司制造的iPhone系列智能电话中的装直。在一个实施例中,计算装置102a可从远程机器106请求资源,同时向客户机102b提供远程机器106的功能。在这样的实施例中,就从远程机器106(其可以被称为服务器)接收数据而言,计算装置102a可以被称为客户机,而就第二客户机102b而言,计算装置102a可以被称为服务器。在又一个实施例中,客户机102可代表客户机102上的用户从远程机器106请求资源。如图ID所示,计算装置100可以包括多个处理器,并且可以提供用于对不只一个数据片同时执行多个指令或者同时执行一个指令的功能。在一些实施例中,计算装置100可包括具有一个或多个核的并行处理器。在这些实施例的一个中,计算装置100是共享内存并行装置,具有多个处理器和/或多个处理器核,将所有可用内存作为一个全局地址空间进行访问。在这些实施例的又一个中,计算装置100是分布式存储器并行装置,具有多个处理器,每个处理器仅访问本地存储器。在这些实施例的又一个中,计算装置100既有共享的存储器又有仅由特定处理器或处理器子集访问的存储器。在这些实施例的又一个中,如多核微处理器的计算装置100将两个或多个独立处理器组合在一个封装中,通常在一个集成电路(IC)中。在这些实施例的又一个中,计算装置100包括具有单元宽带引擎(CELLBROADBANDENGINE)架构的芯片,并包括高能处理器单元以及多个协同处理单元,高能处理器单元和多个协同处理单元通过内部高速总线连接在一起,可以将内部高速总线称为单元互连总线。在一些实施例中,处理器提供用于对多个数据片同时执行单个指令(SMD)的功能。其他实施例中,处理器提供用于对多个数据片同时执行多个指令(MMD)的功能。又一个实施例中,处理器可以在单个装置中使用SMD和MMD核的任意组合。在一些实施例中,计算装置100可包括图形处理单元。图IE所示的这些实施例的一个中,计算装置100包括至少一个中央处理单元121和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括至少一个并行处理单元和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括任意类型的多个处理单元,多个处理单元中的一个包括图形处理单元。在一个实施例中,资源可以是程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对本地计算装置102的用户可用的其他资源。可以经由多种访问方法将资源传送到本地计算装置102,所述访问方法包括但不限于传统的直接安装在本地计算装置102上,经由应用流式传输的方法传送到本地计算装置102、将经由第三计算装置106b上的资源的执行所产生的并且经由表示层协议向本地计算装置102传输的输出数据传送到本地计算装置102,将通过经由在远程计算装置106上执行的虚拟机执行资源所产生的输出数据传送到本地计算装置102,或者从连接到本地计算装置102的可移动存储装置(例如USB装置)执行并产生输出数据,或经由在本地计算装置102上执行的虚拟机执行并产生输出数据。在一些实施例中,本地计算装置102将通过资源的执行所产生的输出数据传输到另一个客户计算装置102b。在一些实施例中,本地计算装置102的用户连接到远程计算装置106并且在本地计算装置102上查看在远程计算装置106上生成的远程桌面环境的本地版本的显示,其包括多个数据对象。在这些实施例的一个中,通过远程计算装置106(或通过第二远程计算装置106b)将至少一个资源提供给用户并且将其显示在远程桌面环境中。然而,可以存在用户在本地计算装置102上通过选择或者由于策略或者技术需求而执行的资源。在另一个这样的实施例中,本地计算装置102的用户更愿意使用提供对用户可用的所有资源的访问的集成桌面环境,而不是用于单独机器提供的资源的单独桌面环境。例如,用户会发现在多个图像显示器之间导航令人困惑并且难以有效使用。或者用户可能期望结合不同机器所提供的另一个资源来使用一个机器所提供的一个应用程序所产生的数据。在另一个这样的实施例中,通过和集成了远程资源和本地资源显示的远程桌面环境交互,可以控制对于执行资源、窗口移动、应用程序最大化/最小化、调整窗口大小和终止执行资源的请求。在另一个这样的实施例中,将应用或其他经由集成桌面环境可访问的资源(包括那些在本地计算装置102上执行的资源和那些在远程计算装置106上执行的资源)显示在单个桌面环境中。在一个实施例中,将来自远程计算装置106的数据对象集成到本地计算装置102所产生的桌面环境中。在另一个实施例中,远程计算装置106维护集成桌面。在另一个实施例中,本地计算装置102维护集成桌面。在一些实施例中,显示单个远程桌面环境204。在其中一个这样的实施例中,远程桌面环境204显示为全屏桌面。在其他实施例中,显示多个远程桌面环境204。在其中一个这样的实施例中,在一个或者多个显示装置124上以非全屏模式显示远程桌面环境中的一个或者多个远程桌面环境。在另一个这样的实施例中,在单独显示装置上以全屏模式显示远程桌面环境。在另一个这样的实施例中,在一个或者多个显示装置124上以全屏模式显示远程桌面环境中的一个或者多个远程桌面环境。B.包括虚拟化环境的系统图2A示出虚拟化环境的一个实施例。被包括在计算装置201中的硬件层可包括一个或多个物理盘204、一个或多个物理设备206、一个或多个物理处理器208和物理存储器216。在一些实施例中,固件212可被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。计算设备210还可包括被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行的操作系统214。进一步,管理程序202可被储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。一个或多个虚拟机232A-C(总称为232)在一个或多个物理处理器208上执行。每个虚拟机232可以有虚拟盘226A-C和虚拟处理器228A-C。在一些实施例中,第一虚拟机232A可在虚拟处理器228A上执行包括工具堆栈224的控制程序220。在其他实施例中,一个或多个虚拟机232B-C可在虚拟处理器228B-C上执行客户操作系统230A-B。进一步参考图2A,在一个实施例的更多细节中,所描述的虚拟化环境包括Type2管理程序202,或执行在计算装置201上的操作系统214中的管理程序。在一些实施例中,Type2管理程序在操作系统214环境中执行并且虚拟机在管理程序之上的层次执行。在许多实施例中,Type2管理程序在用户的操作系统的上下文中执行,这样Type2管理程序与用户操作系统进行交互。在一些实施例中,虚拟化环境包括计算装置201。计算装置201可以是任何计算设备,在一些实施例中计算装置201可以是本文描述的任何计算机、设备或计算机器。尽管图2A示出了单个计算装置201,在一些实施例中由计算装置201存储和执行的模块、程序、虚拟机和命令可以被不只一个计算装置201执行。仍在其他实施例中,计算装置201可以是服务器群。在一个实施例中,计算装置201可包括硬件层210,该硬件层包括与计算装置201通信的一个或多个硬件。在一些实施例中,硬件层210可包括被包含在计算装置201中的任意硬件。在一些实施例中,硬件层210可包括一个或多个物理盘204、一个或多个物理设备206、一个或多个物理处理器208和存储器216。在一些实施例中,硬件层210可包括一个或多个物理盘204。物理盘204可以是任何硬盘,而在一些实施例中物理盘204可以是本文描述的任何硬盘。在一些实施例中,硬件层210可包括一个物理盘204。在其他实施例中,硬件层210可包括不只一个物理盘204。在一些实施例中,计算装置201可与被包含在硬件层210中作为物理盘204的外部硬盘通目。在其他实施例中,硬件层210可包括处理器208。在一些实施例中,处理器208可以是任何处理器,而其他实施例中处理器208可以是本文描述的任何处理器。处理器208可包括一个或多个处理核。在其他实施例中计算装置201可包括一个或多个处理器208。在一些实施例中,计算装置201可包括一个或多个不同处理器,例如处理单元、图形处理单元或物理引擎。在一些实施例中,物理设备206可以是被包含在计算装置201中的任何设备。在一些实施例中,物理设备206可以是在计算装置201中所包含的设备和与计算装置201通信的外部设备的任何组合。在一些实施例中,计算装置201可包括一个或多个物理设备206。物理设备206可以是下列设备中的任何一个网络接口卡、视频卡、键盘、鼠标、输入装置、显示器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、连接到计算装置201的任何设备、与计算装置201通信的任何设备、打印机、扫描仪或任何其他设备或本文所描述的任何设备。在本文提供的各个其他附图中,为了清楚而非限制或暗示内部和外部装置之间的区别,可以将物理装置206显示在计算装置201的外部。硬件层210还可包括可包含任何类型存储器的物理存储器216。在一些实施例中物理存储器216可包括本文描述的任何存储器类型。物理存储器216可存储数据,以及在一些实施例中可存储一个或多个程序或可执行指令集。图2Α所示固件212被存储在计算装置201的物理存储器216中的实施例。被存储在物理存储器216中的程序或可执行指令可由计算装置201上的一个或多个处理器208所执行。在一些实施例中,固件212可以是可执行指令和硬件的任一组合,其控制与计算装置201通信的硬件或被包含在计算装置201内的硬件。在一些实施例中,固件212可控制硬件层210内的一个或多个硬件。在多个实施例中,固件212可被计算装置201内的一个或多个处理器208所执行。在一些实施例中,固件212可以是诸如基本输入/输出系统(BIOS)的启动固件。在计算装置201上执行的额外的固件212可以与BIOS相接口。在一个实施例中,计算装置201可包括由一个或多个物理处理器208执行的操作系统214。在一些实施例中,操作系统214是能直接访问硬件层210中硬件设备的用户操作系统。操作系统214可以是任何操作系统并且在一些实施例中,操作系统214可以是本文所述的任何操作系统。图2A示出了一个实施例,其中管理程序202在计算装置201上执行的操作系统214的上下文中执行。在这个实施例中,操作系统214可被称为宿主(host)操作系统214,而其他操作系统可被称为客户(guest)操作系统。客户操作系统可包括执行在虚拟机232上的客户操作系统230A-B,和/或控制程序220。在一些实施例中,计算装置201可包括管理程序202。在一些实施例中,管理程序202可以是在计算装置201上由处理器208执行以便管理任一数量的虚拟机的程序。管理程序202可以被称为虚拟机监控器,或平台虚拟化软件。在一些实施例中,管理程序202可以是监控执行在计算设备上的虚拟机的可执行指令和硬件的任何组合。尽管图2A示出了包括Type2管理程序202的虚拟化环境,计算装置201可执行任何其他类型的管理程序。例如,计算装置201可以执行包括Typel管理程序202的虚拟化环境。在一些实施例中,计算装置201可执行一个或多个管理程序202。这些一个或多个管理程序202可以是相同类型的管理程序,或在其他实施例中可以是不同类型的管理程序。在一些实施例中,管理程序202可以以模拟直接访问系统资源的操作系统230或控制程序220的任何方式向在虚拟机232上执行的操作系统230或控制程序220提供虚拟资源。系统资源可包括物理设备、物理盘、物理处理器、物理存储器216和被包含在计算装置201硬件层210中的任何其他组件。在这些实施例中,管理程序202可被用来仿真虚拟硬件、划分物理硬件、虚拟化物理硬件和执行提供对计算环境的访问的虚拟机。仍在其他实施例中,管理程序202为在计算装置201上执行的虚拟机232控制处理器调度和存储器分区。管理程序202可包括由位于加利福尼亚州PaloAlto的VMWare公司制造的管理程序;XEN管理程序,其开发由开源Xen.org团体监督的开源产品;由微软公司提供的HyperV、虚拟服务器和虚拟PC管理程序,或其他。在一些实施例中,计算装置201执行管理程序202,该管理程序创建客户操作系统可在其上执行的虚拟机平台。在这些实施例中,计算装置201可被称为宿主服务器。这样的计算设备的例子是由位于佛罗里达州FortLauderdale的CitrixSystems公司提供的XENSERVER。在一个实施例中,管理程序202创建操作系统230在其中执行的虚拟机232A-B(总的表示为232)。例如,在这些实施例的一个中,管理程序202加载虚拟机映像以创建虚拟机232。在这些实施例的另一个中,管理程序202在虚拟机232中执行操作系统230。仍在这些实施例的另一个中,虚拟机232执行操作系统230。在一个实施例中,管理程序202控制至少一个虚拟机232的执行。在又一个实施例中,管理程序202将由计算装置201提供的至少一个硬件资源的抽象提供给至少一个虚拟机232。这个抽象还可被称为计算装置201上可利用的硬件、内存、处理器和其他系统资源的虚拟化或虚拟视图。在一些实施例中,硬件或硬件资源可以是在硬件层210中可利用的任何硬件资源。在其他实施例中,管理程序202控制虚拟机232访问计算装置201中可利用的物理处理器208的方式。控制对物理处理器208的访问可包括确定虚拟机232是否应该访问处理器208以及物理处理器性能如何呈现给虚拟机232。在一些实施例中,计算装置201可寄载或执行一个或多个虚拟机232。虚拟机232可被称为域、客户和/或DOMAINU。虚拟机232是一组可执行指令,当其被处理器208执行时,模拟物理计算机的操作,从而虚拟机232可类似物理计算设备执行程序或进程。尽管图2A计算装置201寄载3个虚拟机232的实施例,在其他实施例中,计算装置201可寄载任何数量的虚拟机232。在一些实施例中,管理程序202为每个虚拟机232提供物理硬件、内存、处理器和对该虚拟机可利用的其他系统资源的唯一的虚拟视图。在一些实施例中,该唯一的虚拟视图可以基于下列的任何一个虚拟机许可;向一个或多个虚拟机标识符应用的策略引擎;访问虚拟机的用户;在虚拟机上执行的应用;被虚拟机访问的网络;或任何其他类似标准。在其他实施例中,管理程序202向每个虚拟机232提供物理硬件、存储器、处理器和对该虚拟机可利用的其他系统资源的基本上类似的虚拟视图。每个虚拟机232可包括虚拟盘226A-C(总称为226)和虚拟处理器228A-C(总称为228)。在一些实施例中,虚拟盘226是计算装置201的一个或多个物理盘204的虚拟化视图,或计算装置201的一个或多个物理盘204的一部分的虚拟化视图。物理盘204的虚拟化视图可由管理程序202产生、提供和管理。在一些实施例中,管理程序202可为每个虚拟机232提供物理盘204的唯一视图。因此,在这些实施例中,当与其他虚拟盘226相比较时,被包含在每个虚拟机232中的虚拟盘226可以是唯一的。虚拟处理器228可以是计算装置201的一个或多个物理处理器208的虚拟化视图。在一些实施例中,物理处理器208的虚拟化视图可由管理程序202产生、提供和管理。在一些实施例中,虚拟处理器228基本上具有至少一个物理处理器208的所有相同特征。在其他实施例中,虚拟处理器228提供物理处理器208的经修改的视图,从而虚拟处理器228的至少一些特征可以不同于相应的物理处理器208。控制程序220可执行至少一个应用来管理和配置在虚拟机232以及在一些实施例中计算设备上执行的客户操作系统。在一些实施例中,控制程序220可被称为控制操作系统、控制域、域O或domO。在一些实施例中,控制程序220可以是XEN管理程序的DOMAINO或DOMO。控制程序220可以执行管理应用或程序以进一步显示可被管理员用来访问每个虚拟机232的功能和/或管理虚拟机232的用户接口。在一些实施例中,由管理程序产生的用户接口可被用于终止虚拟机232的执行、为虚拟机232分配资源、为虚拟机232指派权限或者管理与虚拟机232相关的安全证书。在一些实施例中,控制程序220可启动新的虚拟机232或终止正在执行的虚拟机232。在其他实施例中,控制程序220可直接访问硬件层210内的硬件和/或资源。仍在又一个实施例中,控制程序220可与在计算设备210上且在虚拟机232的上下文之外执行的程序和应用相接口。类似地,控制程序220可与在虚拟机232的上下文内执行的程序和应用相接口。在一个实施例中,管理程序202可执行虚拟机232内的控制程序220。管理程序202可创建和启动虚拟机232。在管理程序202执行虚拟机232内的控制程序220的实施例中,该虚拟机232也可被称为控制虚拟机232。仍在又一个实施例中,控制程序220执行在被授权直接访问计算装置201上物理资源的虚拟机232中。在一些实施例中,在第一计算装置201A(未示出)上的控制程序220A(未示出)可与在第二计算装置201B(未示出)上的控制程序220B(未示出)交换数据。在这些实施例中,第一计算装置201A可远离第二计算装置201B。控制程序220A-B可通过在第一计算装置20IA上执行的管理程序202A(未示出)和在第二计算装置20IB上执行的管理程序202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算装置201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过管理程序202A-B之间的连接,管理程序202A-B可管理分布在一个或多个计算装置201A-B上的资源池,例如在第一计算装置201A和第二计算装置201B上的可利用资源。管理程序202A-B还可虚拟化这些资源并使它们对于在计算装置201A-B上执行的虚拟机232成为可利用的。在本实施例的又一情况下,单个管理程序202可管理和控制在两个计算装置20IA-B上执行的虚拟机232。在一些实施例中,控制程序220与一个或多个客户操作系统230A-B(总称为230)交互。控制程序220可通过管理程序202与客户操作系统230通信。通过管理程序202,客户操作系统230可请求访问物理盘204、物理处理器208、存储器216、物理设备206和硬件层210中的任何其他组件。仍在其他实施例中,客户操作系统230可通过由管理程序202建立的通信信道与控制程序220通信,诸如,例如通过由管理程序202使之可用的多个共享内存页。在一些实施例中,控制程序220包括用于与计算装置201所提供的网络硬件直接通信的网络后端驱动程序。在这些实施例中的一个,网络后端驱动程序处理来自至少一个客户操作系统230的至少一个虚拟机请求。在其他实施例中,控制程序220包括用于与计算装置201上存储单元通信的块后端驱动程序。在这些实施例的一个,块后端驱动程序根据从客户操作系统230接收到的至少一个请求从存储单元中读数据和写数据。在又一个实施例中,控制程序220包括工具堆栈224。在又一个实施例中,工具堆栈224提供用于与管理程序202交互、与其他控制程序220(例如,在第二计算装置20IB上)通信或管理计算装置201上的虚拟机232的功能。在又一个实施例中,工具堆栈224包括用于向虚拟机群的管理员提供改善的管理功能的经定制的应用。在一些实施例中,工具堆栈224和控制程序220的至少一个包括提供接口的管理API,所述接口用于远程配置和控制在计算装置201上运行的虚拟机。在其他实施例中,控制程序220通过工具堆栈224与管理程序202通信。在一个实施例中,管理程序202在由管理程序202创建的虚拟机232内执行客户操作系统230。在又一个实施例中,客户操作系统230向计算装置201的用户提供对计算环境中的资源的访问。仍在又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境和对计算装置201的用户可用的其他资源。仍在又一个实施例中,资源可以通过多种访问方法传送到计算装置201,这些访问方法包括但不限于以下方法传统直接在计算装置201上安装、通过应用流的方法传送到计算装置201上、将第二计算装置201’上资源的执行所产生的输出数据传送到计算装置201且通过表示层协议传达给计算装置201、将通过在第二计算装置201’上执行的虚拟机执行资源所产生的输出数据传送到计算装置201,或者从连接到计算装置201上的诸如USB设备的可移动存储设备上执行或通过在设备201上执行的虚拟机执行并且产生输出数据。在一些实施例中,计算装置201传输由资源的执行所产生的输出数据到另一个计算装置201’。在一个实施例中,客户操作系统230与该客户操作系统230在其上执行的虚拟机结合在一起,形成意识不到其是虚拟机的完全虚拟化的虚拟机;这样的机器可被称为“DomainUHVM(硬件虚拟机)虚拟机”。在又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。仍在又一个实施例中,完全虚拟化机可包括通过与管理程序202通信提供功能的驱动程序。在这样的实施例中,驱动程序典型地意识到自己执行在虚拟化环境中。在又一个实施例中,客户操作系统230与该客户操作系统230在其上所执行的虚拟机结合在一起,形成意识到其是虚拟机的半虚拟化(paravirtualized)的虚拟机;这样的机器可被称为“DomainUPV虚拟机”。在又一个实施例中,超虚拟化机包括完全虚拟化机中所不包含的额外的驱动程序。仍在又一个实施例中,超虚拟化机包括如上所述的被包含在控制程序220中的网络后端驱动程序和块驱动程序。图2B中所示的是说明Typel管理程序202的虚拟化环境的又一个实施例。在计算装置201上执行的管理程序202可以直接访问硬件层210中的硬件和资源。由管理程序202管理的虚拟机232可以是不安全的虚拟机232B和/或安全的虚拟机232C。尽管图2A所描述的虚拟化环境中图示了宿主操作系统214,图2B中的虚拟化环境的实施例不执行宿主操作系统。进一步参考图2B,更详细地,虚拟化环境包括Typel管理程序202。在一些实施例中Typel管理程序202执行在“裸金属”上,从而管理程序202可以直接访问计算装置201上执行的所有应用和进程、计算装置201上所有资源和计算装置201上所有硬件或与计算装置201通信的所有硬件。尽管Type2管理程序202通过宿主操作系统214访问系统资源,Typel管理程序202可直接访问所有系统资源。Typel管理程序202可直接执行在计算装置201的一个或多个物理处理器上,并且可包括存储在物理存储器216中的程序数据。在采用Typel管理程序202配置的虚拟化环境中,宿主操作系统可被一个或多个虚拟机232所执行。这样计算装置201的用户可以指派一个或多个虚拟机232作为该用户的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作系统214与计算装置201交互的基本上相同方式来与计算装置201交互来模拟宿主操作系统。C.用于在安全和不安全虚拟机之间重定向访问请求的系统和方法虚拟机232可以是不安全虚拟机232B和安全虚拟机232C。在一些实施例中,可基于虚拟机与在同一虚拟化环境中执行的其他虚拟机的比较来确定该虚拟机的安全性。例如,如果第一虚拟机能够访问资源池且第二虚拟机不能够访问同样的资源池,则第二虚拟机可被认为是不安全虚拟机232B而第一虚拟机被认为是安全虚拟机232A。在一些实施例中,虚拟机323访问一个或多个系统资源的能力可使用由控制程序220或管理程序202产生的配置接口来配置。在其他实施例中,提供给虚拟机232的访问等级可以是检查任何下列标准的集合的结果访问虚拟机的用户、在虚拟机上执行的一个或多个应用、虚拟机标识符、基于一个或多个因素给虚拟机指定的风险等级、或任何其他类似标准。例如,在一个实施例中,如果虚拟机的磁盘映像被加密或是只读映像、如果虚拟机的操作系统包括反病毒程序或主动式防火墙,或者任何其他标准,虚拟机可被认为安全或可信的。在一些实施例中,在主机上执行的虚拟机的环境是互相隔离的、分离的或防护的。例如,管理这些虚拟机的管理程序或控制虚拟机232A可以限制这些虚拟机之间的通信。可以相应地将每个存储器分配、盘分区和分配给每个虚拟机的其他资源的分配相对于其他虚拟机进行锁定或加密。在一些实施例中,在某些时间段内分配给每个虚拟机的硬件资源部分可以在重新分配给又一个虚拟机之前被刷新或清空。在一些其他实施例中,某些虚拟机可以访问相同的资源或对相同的资源具有类似的访问级别。共享相同或相似访问权限的虚拟机可以共享相同的分类或者相对于虚拟机的其他组被分类为安全的或不安全的。例如,具有对特定受保护公司数据的共享访问的虚拟机可以被指定为安全的,而不能访问这些受保护的公司数据的虚拟机可以被指定为不安全的。在某些实施例中,安全虚拟机能够与另一个安全虚拟机共享数据或应用。相反,不安全虚拟机的环境可以被单独地相对于外部通信进行锁定,并且可受限地访问其他虚拟机,以例如将这些虚拟机与其他虚拟机相隔离。在其他实施例中,不安全虚拟机可以有一定的自由以与互相共享数据或应用。在一些实施例中,安全虚拟机是响应提供认证证书的用户而启动的虚拟机。在其他实施例中,安全虚拟机是响应于相对于启动或访问又一个虚拟机所需的证书提供额外的认证证书的用户而启动或访问的虚拟机。在一个实施例中,安全虚拟机是当用户提供所需的认证证书时引导的盘上的加密映像。认证证书可包括用户姓名、真实姓名、登录名、账户、密码、序列号、加密密钥、SecurID或识别用户的任何其他信息项。在许多实施例中,可以响应于根据授权的用户数据库验证认证证书而引导该安全虚拟机。该数据库可由诸如控制虚拟机的另一虚拟机、由宿主虚拟机、由管理程序或另一计算装置所寄载。例如在一个这样的实施例中,用户可以给控制程序220提供认证证书以发起对安全虚拟机的引导,并且该控制程序220可建立与远程计算装置的网络通信以及传输认证证书到该远程计算装置。远程计算装置可验证所述证书并使用对用户是否被授权引导该安全虚拟机的指示来进行响应。在许多实施例中,虚拟机是否被认为安全可以等同于引导该虚拟机的用户是否有来自安全构件的许可来引导该机器。在一些实施例中,安全虚拟机可被称为是可信虚拟机,因而这些术语可交换地使用。在一些实施例中,不安全或不安全的虚拟机232B可被阻止访问安全虚拟机232A可以访问的资源、硬件、存储单元和程序。例如安全虚拟机232C能够访问一个或多个公司资源,而不安全虚拟机232B不能被允许访问某些公司资源。在许多实施例中,计算装置可寄载多个虚拟机,包括安全和不安全虚拟机。例如,用户可使用不安全虚拟机播放个人音乐文件,而同时使用安全虚拟机访问公司网络。可能期望分开这些行为以保持公司网络安全而同时仍允许用户自由访问个人数据或操作个人装置和应用。虽然从安全角度出发,分割这些行为是理想的,但在许多实施例中,不安全和安全虚拟机可能需要通信。例如,如果用户具有在第一虚拟机中打开第一窗口的第一应用,以及在第二虚拟机中具有第二窗口的第二应用,该用户可期待仅一个窗口具有焦点、接收鼠标和键盘输入,或在任何时刻居于Z轴顺序最前面。因此,这两个虚拟机可能需要协调焦点并传送其他信息。在安全的、公司特定的虚拟机和不安全的、个人虚拟机之间进行通信可能很困难。在一些实施例中,通过传统网络连接建立安全和不安全的虚拟机之间的通信。这些解决方案可能对虚拟机造成安全风险,这是因为虚拟机时常需要被隔离在不同网段。在一些实施例中,可将安全和不安全虚拟机之间的通信称为虚拟到虚拟或V2V技术。此机制可提供用于在管理程序下运行的特权域和非特权域之间的域间通信的系统。在一个实施例中,该机制包括提供可用于内核和用户模式两者的API(应用程序接口)。该API可存在于在管理程序下作为域运行的任何操作系统中,包括Windows和Linux,或者其他任何操作系统。在一个实施例中,V2VAPI允许两个域或虚拟机建立通信信道。简要的说,该信道的一端作为侦听端点启动。接着,另一端可连接到该侦听端点。一旦信道被建立,这两个域能在该信道上来回发送消息。当任何一端被结束通信,它可以断开信道且释放相关的资源。在一些实施例中,API的消息传输部分可以是允许任何数据块被发送或接收的底层程序。在一些实施例中,V2V不提供传输层语义或更高层的功能。因而,在许多实施例中且不同于使用网络接口在虚拟机之间进行通信,不需要使用地址或其他头部来封装消息。在其他实施例中,在V2VAPI之上可建立其他协议以提供更高层服务。在一些实施例中,可在前端和后端半虚拟驱动程序对之间使用底层事件信道和共享存储器结构。在一些实施例中,V2V在这些驱动程序对上建立API使得这些驱动程序对通用且可重用。V2V是特别的,因为其提供基于底层管理程序功能的域间通信的方法。特别地,V2V使用CITRIXXen设施来共享域与域之间的存储页面以及允许域通过中断发送事件到其他域的功能。V2V使用、安全和访问控制也可被上述控制程序或控制程序工具堆栈中的部件所控制。尽管这里主要讨论关于具有不同安全或特权等级的虚拟机之间的通信,这些系统和方法可被用于两个不安全虚拟机之间、两个安全虚拟机之间、domO或控制虚拟机和安全或不安全domU虚拟机之间,或任何其他虚拟机组合之间的通信。现简单参考图3A,示出了用于在安全和不安全虚拟机之间通信的系统的实施例的框图。除上文结合图2A和2B讨论的特征之外,计算装置201可包含不安全虚拟机232B和安全虚拟机232C。计算装置201还可包含第三虚拟机232D,其可以是控制虚拟机。如下面将详细描述的,物理存储器216可包含由安全虚拟机232C保留的存储区域300。在一些实施例中,一个或多个虚拟机可执行通信代理(未示出),该通信代理可包含程序、应用、服务、守护进程、子例程、逻辑,或用于建立安全信道并经由安全信道通信的其他可执行指令。现参考图3B,示出了用于在不安全虚拟机和安全虚拟机之间建立安全通信信道的方法的一个实施例的流程图。总的来说,诸如安全虚拟机的第一虚拟机或由第一虚拟机执行的通信代理,可通过在步骤320选择要监控的存储区域300来将其自身建立为侦听端点。在步骤322,诸如不安全虚拟机的第二虚拟机可将数据串写到所选的区域。在步骤324,安全虚拟机可在所选区域中检测该数据串。在步骤326,安全虚拟机可锁定该存储区域以排除第三虚拟机或者其他虚拟机对该存储区域进行读或写,而同时允许该安全虚拟机和不安全虚拟机对该存储区域进行读或写。在步骤328,安全虚拟机可以向不安全虚拟机发送中断。在步骤330,不安全虚拟机可以写数据到该区域,或者随着通信的进行还可以从该区域读取数据。在步骤332,不安全虚拟机可以向安全虚拟机发送中断。在步骤334,安全虚拟机可从该区域读取数据和/或向该区域写入数据。可重复步骤328-334直到通信完成。在步骤336,安全虚拟机可对该存储区域进行解锁,以允许第三虚拟机访问该存储区域。仍参考图3B以及更详细地,在一个实施例中,虚拟机通过选择要监控的存储区域来将其自身建立为通信端点。在一些实施例中,虚拟机可以是安全或可信虚拟机,而在其他实施例中虚拟机可以是不安全虚拟机或不可信虚拟机。在一个实施例中,虚拟机可将其自身建立为侦听端点。在其他实施例中,虚拟机可将其自身建立为传输端点。在其他实施例中,虚拟机可将其自身建立为能够在通信信道上发送或接收数据的通信端点。在一个实施例中,虚拟机能够响应于从另一虚拟机向该虚拟机传输数据的请求而将其自身建立为侦听端点。在一些实施例中,在步骤320,虚拟机通过选择物理存储器216的一组存储地址、一个或更多存储页面、或者另外部分作为用于侦听虚拟机和传输虚拟机的公共存储区域300,来将其自身建立为侦听端点。在其他实施例中,虚拟机可经由在虚拟机中执行的通信代理将其自身建立为侦听端点。该通信代理响应于指示器能够选择一个或更多存储单元并标记它们,或以其他方式将它们划分为由虚拟机以及与该虚拟机相连的任何传输端点专用的存储器。在一些实施例中,虚拟机可定期地针对新数据来监控该存储区域,或者可以在新数据被写入该存储区域时接收中断。在一些实施例中,在步骤322,另一虚拟机连接到最初的虚拟机的侦听端点以创建通信信道。在某些实施例中,虚拟机在连接到最初的虚拟机的侦听端点时将其自身建立为传输端点。在一个实施例中,传输端点可通过将预定的数据串写到侦听端点所选择的存储区域从而连接到该侦听端点。这种预定字符串可包含传输端点的或想要将其自身建立为传输端点的虚拟机的标识符,以允许侦听端点排除其他虚拟机使用该通信信道。在步骤324,此数据可被侦听端点检测到。在又一个实施例中,其中存在其他不安全的通信路径,传输端点可使用这些通信路径的其中一个发送消息到侦听端点,指示该传输端点希望与该侦听端点建立安全的通信信道。在一些实施例中,传输端点上的通信代理发送消息到侦听端点上的通信代理,指示该传输端点想要与该侦听端点通信。在一些实施例中,传输到侦听端点的消息是可被该侦听端点虚拟机接收和处理的中断。在一些实施例中,在步骤326,当接收到传输端点想要与侦听端点通信的通知时,虚拟机上的通信代理会标记所保留的存储器使其只能被该侦听端点和该传输端点访问。在该侦听端点和该传输端点之间建立的通信信道可包括只能被该侦听端点和该传输端点访问的共享的存储页面或存储地址。在其他实施例中,通信信道可包括在传输端点和侦听端点之间的安全通信连接。在另外的实施例中,此安全通信信道可包括编码、加密或以其他方式封装数据,使得只有该侦听端点能解码、解密或以其他方式解封(un-encapsulate)所传输的数据。当在侦听端点和传输端点之间创建了通信信道后,在一些实施例中在步骤328,该侦听端点可向传输端点发送中断以指示通信信道已建立且准备好安全传送数据。在步骤330,传输端点可以将数据复制到共享存储页面。当将数据复制到共享存储页面时,传输端点虚拟机可在步骤332向侦听虚拟机发出中断以指示该数据已被复制到了共享存储器中。在一些实施例中,该中断可由通信代理发出。在其他实施例中,该中断可由物理装置或网卡发出。在步骤334,当确定数据被复制到了共享存储页面时,侦听端点可以从该共享存储页面检索被复制的数据。确定数据被复制到了共享存储页面可包括接收由传输虚拟机发出的中断,且可以响应于该中断的接收而执行该检索。在一些实施例中,所述方法可包括当数据被复制到共享存储页面时以及当传输虚拟机耗尽空间以发送更多数据时,传输虚拟机向侦听虚拟机发出中断。在一些实施例中,侦听虚拟机接收该中断且以检索数据或给共享存储库分配额外的存储地址或存储页面的方式进行响应。当给共享存储库分配额外存储器时,侦听虚拟机可向传输虚拟机发出中断,以指示已经将额外存储器增加到共享存储库。在一些实施例中,侦听虚拟机可通过从共享存储页面清除数据来释放空间以响应关于有限存储器的中断。在一些实施例中,在通信持续期间可重复步骤328-334,其中这两个端点中的任何一个写数据到共享存储区域并且读取由另一个端点写入的数据。当通信事务或会话结束时,在步骤336,在一些实施例中,侦听端点可对存储区域进行解锁,使得第三虚拟机可访问该存储区域。在其他实施例中,传输端点可对该存储区域进行解锁。在许多实施例中,在对存储区域进行解锁之前,端点可首先擦除该存储区域或者写空(null)或随机数据到该区域以移除任何敏感信息。通过上述方法,可以在安全和不安全虚拟机之间传输不同大小和内容的数据,而其他虚拟机不能够拦截或以其他方式读取通信。在一些实施例中,可以在安全和不安全虚拟机之间传输数据,而不必要求加密或封装。在诸如公司的组织中,用户可以具有对用于访问该组织的资源的一个或多个机器的访问权。这些机器中的一些可以执行一个或多个管理程序,所述管理程序可以管理用于执行公司应用和访问公司资源的虚拟机。随着云计算和虚拟化的普及,用户可以访问在(例如,分配给用户的)客户机器上或在(例如,由多个用户访问的)远程服务器机器上寄载的一个或多个虚拟机。通常,用户可以在这些虚拟机中的任何一个的环境内执行个人任务或访问个人信息。为了保护公司应用和资源,公司可能希望限制公司文档、信息和应用从个人行为或潜在的不安全行为而暴露在一些实施例中,用户可以访问个人的或不安全的资源,例如个人的信息、URL和应用。例如,用户可以从个人电子邮件账户下载个人文件、下载诸如音乐、流式视频的文件、接收来自个人订阅的RSS订阅。在一些实施例中,用户可以经由浏览器或其他应用访问外部网络或网站,这可能将该用户的虚拟机环境暴露给该外部网络。例如,在该外部网络中运行的应用可以访问该用户的虚拟机环境的文件系统。在一些情况下,用户可以有意地或无意地下载和安装对于公司网络没有屏蔽的应用。这些应用可能包括计算机病毒、间谍软件或其他恶意软件。其他示例可包括web浏览器小部件或附加组件、邮箱和即时消息传输应用。在一些实施例中,用户可以将个人的或不安全的外围装置(例如,存储装置)附接到公司机器。该外围装置还可包括可在主机机器(其可以是虚拟机)上自安装的、在该主机机器上执行的、在该主机机器上访问信息的或在该主机机器上激活应用的程序、驱动程序或应用。在又一个示例中,用户可以从例如便携电脑的个人装置访问公司网络,并且使用公司应用来访问来自该个人装置的潜在地不安全的文件。鉴于这些示例情景,组织可能想要识别这样的行为,并且将这些行为限制到与该组织受保护的资源分开的虚拟机环境。如上文所述,用户或程序可以发起例如执行应用、访问文件或导航到由URL识别的域的请求。本文公开的方法和系统可以提供对这样的请求的拦截。在管理程序上寄载的控制虚拟机可以被用于识别应用、文件夹、文件或域是被指定为安全的还是不安全的。当请求源自安全虚拟机并且所请求的文件、应用或URL是不安全的时,可以将该请求重定向到不安全虚拟机。当请求源自不安全虚拟机并且所请求的文件、应用或URL是安全的时,可以将该请求重定向到安全虚拟机。当将请求重定向到合适的虚拟机时,该虚拟机可以提供对所请求的资源的访问。在各个实施例中,管理程序、控制虚拟机或控制程序可以拦截来自用户或程序的访问资源的请求。该管理程序、控制虚拟机和/或控制程序有时被称为DomainO或domO实体。管理程序可以寄载控制虚拟机以及一个或多个安全虚拟机和/或不安全虚拟机。管理程序或控制虚拟机可以提供控制程序,所述控制程序可以在寄载该管理程序的物理机器的处理器上执行。在一些实施例中,控制程序是在控制虚拟机的虚拟处理器上执行的虚拟化程序。举例来说而非旨在以任何方式进行限制,下面讨论的部分可以将控制虚拟机232A总的称为拦截请求的实体。在各个实施例中,控制虚拟机232A可以将来自安全虚拟机、不安全虚拟机或二者的请求作为目标来进行拦截。来自安全或不安全虚拟机内的应用或程序可以发起请求。该请求可包括或者可以被转换成一个或多个系统调用、超级调用(hypercall)、中断或其他消息。这些消息中的一些消息可以被传递到底层管理程序或硬件层以进行处理。在一些实施例中,虚拟机被配置为通过控制虚拟机232A或管理程序传递所有类型或特定类型的请求,于是,控制虚拟机232A可以至少拦截这些请求中的一些请求。在某些实施例中,虚拟机被配置为将所有或特定类型的请求发送到控制虚拟机232A。在其他实施例中,当来自虚拟机的请求转换成用于例如由管理程序或硬件层处理的超级调用、系统调用或中断时,控制虚拟机232A检测或拦截该请求。可以将请求发起为,或转换成如上文结合图3A和3B所述的V2V通信。在一些实施例中,用户通过例如远程控制、轨迹球、鼠标、触控板、触摸屏和键盘的输入装置来发起请求。虚拟化环境可以提供支持输入装置的额外的组成。因为管理程序位于虚拟机和硬件层之间,所以事件通知可能没有被正确地转发到一个或多个虚拟机。控制虚拟机232A可包括从输入装置接收输入数据的控制程序或输入管理器。输入数据可包括任何类型或形式的用户动作(例如,对应于鼠标点击的用户动作)、命令、指令或数据。在一些实施例中,在硬件层210内,可以由在主机装置201上执行的驱动程序接收输入数据。在一个实施例中,当接收该输入数据时,该驱动程序可以将该输入数据的格式化版本转发给在计算装置201上执行的控制程序220。在一些实施例中,输入管理器在控制程序220内执行,使得当该控制程序接收到该输入数据时,该输入管理器也接收到该输入数据。在一些实施例中,输入管理器可以确定当输入装置被激活时哪个虚拟机具有焦点。当特定的虚拟机接收焦点时,可以将改变焦点事件转发到输入管理器,使得输入管理器在大体上所有时间都知道该安全虚拟机是否具有焦点。当驱动输入装置时,对应的驱动程序可以发出事件通知,例如系统调用或中断。输入管理器可以拦截该系统调用或中断,并且通常将该系统调用或终端定向到具有焦点的虚拟机。然而,如随后将讨论的,控制虚拟机232A可以将对应于特定资源请求的任一系统调用或中断重定向到另一个虚拟机。控制虚拟机232A可以识别所请求的资源是安全的还是不安全的。控制虚拟机232A可以确定在虚拟机中执行的应用发出了打开不安全文件、执行不安全的应用或导航到不安全的站点的命令。控制虚拟机232A可以通过参考列出不安全和/或安全的应用、文件、文件夹、域、资源或行为的配置文件、记录或数据库来确定该应用、文件或URL是否是安全的。例如,控制虚拟机232A可以拦截打开具有文件扩展名*.vsd的文件的请求。控制虚拟机232A可确定具有特定文件扩展名(例如vsd)的所有文件被指定为不安全的。控制虚拟机232A可以替代地或进一步使用文件类型关联来确定所请求的文件为Visio文件,并且可以确定Visio被指定为不安全的应用。在一些实施例中,控制虚拟机232A可确定所请求的文件是不安全的,因为该文件驻留在不安全的文件结构、数据库、外围装置或文件服务器中。控制虚拟机232A还可由于所请求的文件的某些属性来确定该文件是不安全的。例如,所请求的文件可能是不安全的,因为该文件是可执行文件,该文件可以是尚未进行病毒扫描的新文件、该文件类型可能是未知的,或者为该文件配置的所有权或权限可能是可疑的。类似地,控制虚拟机232A可以基于文件类型关联、文件属性、文件源和所有权等来确定所请求的文件是安全的。此外,控制虚拟机232A可以确定所请求的文件是安全的,因为该文件被加密或受密码保护。控制虚拟机232A可以拦截访问应用的请求。某些应用对于病毒或恶意软件攻击可能显得比较脆弱。由于成本和/或有限数量的使用许可的可用性,一些应用资源可能是受限的。某些应用可能是对敏感信息或受保护信息的访问点。由此,这些应用中的一些应用可以被指定为不安全的或受限制的。而且,如文件一样,应用可以驻留在不安全的位置,例如外围装置。某些所请求的应用可能是不安全的或未授权的web应用。应用也可能由于内在的、配置的或未知的属性而是不安全的。例如,由于应用是未知的应用类型或者具有可疑的可执行权限,所以该应用可能是不安全的。在一些实施例中,当所请求的应用被调用以经由可疑的或受限的文件类型关联来打开文件时,该应用被指定为不安全的。举例来说,下面讨论用于确定外围设备上的文件或应用是否是安全的还是不安全的一种方法。这允许控制虚拟机232A确定是否重定向访问该外围装置的请求,以及确定是将该请求重定向到安全虚拟机还是不安全虚拟机。外围装置可以例如是USB装置。USB装置是即插即用装置,并且由此通常可包括固件和ACPI表格。计算装置201可经由USB端口连接到USB装置,或者与USB装置通信。该USB装置可以具有一个或多个属性,例如序列号、装置类型、存在加密或其他特征。在一些实施例中,控制虚拟机232A的控制程序可以在对该控制程序220可访问的存储单元或存储库中包含或访问在计算装置201上存储的一组安全策略。在一些实施例中,可以将该安全策略存储在计算装置201上的数据库中。在一些实施例中,该安全策略可以是由控制程序220、控制虚拟机232A或管理程序202的策略引擎或任何其他程序用来确定下列中的任何一个的一组策略虚拟机323是否可以访问一个或多个存储单元、装置、处理器或盘;用户是否可以访问一个或多个存储单元、装置、处理器或盘;是否应该使装置对一个或多个虚拟机232可用;是否应将由在虚拟机232内执行的应用所产生的一个或多个命令或请求转发到计算装置201上的装置;以及是否应将由在虚拟机232内执行的应用所产生的一个或多个请求转发到计算装置201上的装置。策略引擎可包括使用安全策略来确定是否允许一个或多个动作的代理、服务、程序、应用、例程、逻辑或其他可执行代码。在一些实施例中,在虚拟化环境中的计算装置上执行的控制程序可以接收指示已经将装置插到该计算装置的USB端口中的数据。在一些实施例中,接收指示已经将装置插到USB端口中的数据可以包括接收响应于将装置插到该USB端口中而产生的中断。该中断可以由固件提供并且可以被转发到控制程序。在某些实施例中,该数据可包括由控制程序或在该控制虚拟机上执行的操作系统产生的即插即用事件通知。控制程序可识别该装置的一个或多个属性。识别该装置属性可包括向该USB端口查询关于该装置的信息。这种信息可包括任何下列信息序列号、装置标识符、装置类型、该装置的装置驱动程序、该装置上存在加密数据,或者该装置的数据被锁定或只读。响应于将一个或多个安全策略应用到该一个或多个所识别的属性,控制虚拟机232A可以确定该USB装置及其内容是否是安全的。在一些实施例中,控制程序可以从多个虚拟机中选择一个虚拟机来授权对外围装置的访问。控制程序可以通过将该装置安装或映射到所选择的虚拟机来将对该USB装置的内容的访问限制于该所选择的虚拟机。可以基于控制程序确定虚拟盘驱动器的内容是安全的还是不安全的来类似地限制对虚拟盘驱动器的内容的访问(其可以对虚拟机可见)。在一些实施例中,该内容可以在事务基础上被指定为安全或不安全,即取决于由发起虚拟机关于该内容所请求的事务类型。例如,对于只读事务,可以将内容指定为安全的。可以将虚拟盘驱动器映射到一个或多个物理盘驱动器。当虚拟机的客户操作系统230向虚拟机盘驱动器发出读和写命令时,在控制程序220的上下文中执行的驱动器管理器可以拦截这些读/写命令。控制程序可以基于所请求的资源和发起虚拟机是否是安全的来确定是否代表该发起虚拟机将这些读/写请求传递到硬件层210。除了拦截访问文件和应用的请求之外,控制虚拟机232A可以拦截访问通信接口、通信网络堆栈、URL、域或网络的请求。用户可以经由URL或超链接来请求访问网页或文件,以进行下载。在一些实施例中,用户或程序可以请求对文件或应用的远程访问。用户或程序还可以经由浏览器或者例如ftp或网络邮箱的通信实用程序来请求对网络、网站或其他远程目的地的访问。可以从某些机器或虚拟机调用某些远程登录或访问实用程序,例如“ssh”或“rsync”。这些访问行为中的一部分可对通过无控制的访问引入的恶意程序开放本地网络。正因如此,有时可将与某些访问行为关联的URL、域、网络、远程服务器、远程目的地指定为不安全的。在一些实施例中,可以将可由虚拟机通过特定网络接口(例如,使用特定的网络接口驱动程序)或网络堆栈访问的网络或物理机器认为是不安全的。在一些实施例中,基于请求者的标识将所请求的资源指定为安全或不安全的。例如,如果未知应用经由虚拟机请求公司文件,则该未知应用可能在本质上是恶意的。因此,可以将该所请求的文件或资源指定为不安全的。在一些情况下,在特定虚拟机环境中的用户或用户会话可能没有访问特定资源的权限或特权。相应地,在这些或其他情况下,可以将所请求的资源指定为不安全的。相反,控制虚拟机232A可以将源自一个虚拟机的请求重定向到另一个虚拟机。图4A描述了显示用于确定是否将请求从一个虚拟机重定向到另一个虚拟机的方法的一个实施例的流程图。总的来说,如果所请求的资源是不安全的,控制虚拟机232A可以将源自安全虚拟机的请求重定向到不安全虚拟机。在又一个情景中,如果所请求的资源是安全的资源,控制虚拟机232A可以将源自不安全虚拟机的请求重定向到安全虚拟机。在某些情况下,控制虚拟机232A可以确定由请求所源自的虚拟机适当地处理该请求。在这样的情况下,控制虚拟机232A可以确定不将该请求重定向到另一个虚拟机。例如,控制虚拟机232A可以确定对于安全应用的请求源自安全的虚拟桌面环境,并且该安全虚拟机可以满足该请求。在一些实施例中,控制虚拟机232A可以确定没有任何合适的虚拟机以向其重定向请求。控制虚拟机232A或管理程序可以建立新的虚拟机以启动重定向。例如,控制虚拟机232A可以在管理程序上配置和执行新的安全虚拟机以重定向对安全资源的请求。在某些实施例中,控制虚拟机232A可能缺乏建立新的虚拟机以向其重定向请求的资源或能力。通过访问主机的硬件层,控制虚拟机232A例如可以确定它不能在该主机上分配足够的资源以建立额外的虚拟机。在一些实施例中,出于各种其他原因,控制虚拟机232A可以确定不建立新的虚拟机来向其重定向请求。例如,控制虚拟机232A可以确定该请求涉及从安全虚拟机和不安全虚拟机都不应被允许的高风险的动作。在这样的情况下,控制虚拟机232A可以拒绝该请求。在一些实施例中,控制虚拟机232A可以通过如上文结合图3A和3B所述的V2V通信来重定向请求。控制虚拟机232A可以将请求重定向或传送到合适的安全虚拟机或不安全虚拟机。在某些实施例中,控制虚拟机232A、控制程序或管理程序指示请求者(例如,请求应用)将该请求者的请求重定向到合适的虚拟机,例如,使用V2V通信。控制虚拟机232A、控制程序或管理程序可以替代地指示请求者例如经由V2V通信直接向合适的虚拟机发送新的请求。控制虚拟机232A可以将请求的任何部分或转换版本重定向到合适的虚拟机。例如,控制虚拟机232A可以拦截并定向系统调用、超级调用、中断或与请求关联的其他消息到合适的虚拟机。这些中的一部分可以被传递到底层管理程序或硬件层进行处理。例如,控制虚拟机232A可以在硬件层中拦截由请求触发的软件和/或硬件中断。控制虚拟机232A还可以在进行处理之前修改这些中断,使得在重定向的虚拟机的上下文中满足该请求。在一些实施例中,控制虚拟机232A修改对这些中断的响应,使得通过重定向的虚拟机完成该请求。类似地,可以对系统调用和其他消息进行类似地处理,使得通过由控制虚拟机指定的安全或不安全虚拟机满足该请求。在一些实施例中,为了向响应于硬件的启动生成的请求提供服务,可以使用虚拟固件在该装置固件和所寄载的一个或多个操作系统之间来回传送请求。例如管理程序或控制虚拟机的domO实体可直接访问计算装置的硬件。因此,当用户通过启动输入装置发出请求时,该装置驱动程序或固件生成中断,并且该domO实体可以拦截该中断或请求。该domO实体可以将该中断转发或重定向到指定的(例如,重定向的)虚拟机的虚拟固件,该虚拟固件可以将该中断转发到该指定的虚拟机的客户操作系统,就好像该指定的虚拟机是原始的硬件装置一样。响应于从该虚拟固件接收该中断,该客户操作系统可以向该虚拟固件发送对与该中断关联的对象或例程的请求。该虚拟固件可以将该请求转发到该domO实体,该domO实体可以将该请求转发到该硬件装置的固件。在一些实施例中,该硬件装置的固件可以从存储器(例如,高级配置和电源接口(ACPI)表格)检索与该中断关联的对象和例程,并且将这些对象和例程转发给该domO实体。该domO实体可以将对象和例程转发到合适的虚拟固件,该虚拟固件可对相应的客户操作系统进行响应,提供关于如何处理通过该输入装置发起的请求的信息。相应地,可以将对资源的请求重定向到指定虚拟机的虚拟固件以完成该请求。图4B中所示的是用于将不安全内容从安全虚拟机重定向到不安全虚拟机的方法的实施例。该方法可以应用于执行寄载了安全虚拟机和不安全虚拟机的管理程序的计算装置。该方法包括通过由管理程序寄载的控制虚拟机拦截访问不安全资源的请求,该不安全资源包括下列之一文件、应用和统一资源定位符(URL)(401)。控制虚拟机确定该请求源自在该计算装置上执行的安全虚拟机(403)。控制虚拟机可响应于所述确定将该请求重定向到在该计算装置上执行的不安全虚拟机(405)。该不安全虚拟机可以提供对所请求的不安全资源的访问(407)。进一步参考图4B,更具体地,由管理程序所寄载的控制虚拟机拦截访问不安全资源的请求(步骤401)。不安全资源可以包括下列之一文件、应用、网络接口、存储装置、存储器位置、盘、远程服务器、URL、网站、域或网络,然而并不限于这些示例的资源。控制虚拟机可以包括或执行用于拦截请求的控制程序。控制程序可以在该计算装置的一个或多个处理器上执行。在一些实施例中,管理程序包括第一类型管理程序。在一些其他的实施例中,管理程序包括第二类型管理程序。控制虚拟机232A可以拦截从一个虚拟机的上下文或环境发起的请求。用户或在该虚拟机内执行的应用可以发起对资源的请求。在一些实施例中,拦截请求可包括拦截任何类型的命令或指令,例如,进行下列动作的命令执行应用、打开文件、对文件进行读/写、导航到URL中识别的网站、建立通信堆栈、或者发起与诸如另一个虚拟机、网络、服务器或数据库的另一个实体的连接。拦截请求例如可包括确定在虚拟机中执行的应用发出了打开不安全文件、执行不安全的应用或导航到不安全的网站的命令。在一些实施例中,如上文结合图3A和3B所讨论的,控制虚拟机232A经由V2V通信协议拦截或接收请求。如之前所讨论的,控制虚拟机232A可以通过拦截由请求触发的或从请求转换的的中断、系统调用、超级调用、事件通知或其他信号或命令来拦截该请求。控制虚拟机232A可以在硬件层访问这些消息中的一些消息,例如中断。控制虚拟机232A可以经由管理程序访问这些消息中的某些消息。在一些实施例中,控制虚拟机232A可以拦截在发起虚拟机的上下文中生成的虚拟中断、系统调用、超级调用、事件通知或其他信号。例如,控制虚拟机232A可以拦截由物理的或虚拟的装置驱动器发出的、对应于请求的事件通知。拦截请求的控制虚拟机232A还可以确定所请求的资源是安全的还是不安全的。在一些实施例中,控制虚拟机232A可以基于在所请求的文件和应用之间的文件类型关联来确定所请求的资源是否是安全的。例如,控制虚拟机232A可以拦截打开具有文件扩展名*.vsd的文件的请求。控制虚拟机232A可以使用文件类型关联确定这个文件是Visio文件并且还可以确定Vision在安全的或不安全的应用的列表上。在一些实施例中,控制虚拟机232A可以确定由文件类型关联所标识的应用是受限制的应用或者具有有限数量的许可。在其他实施例中,控制虚拟机232A可以确定在发起应用中的应用副本是与所请求的文件不兼容或不匹配的版本。控制虚拟机232A还可以检测在发起应用中的应用副本是不正确的安装或者包括可疑的文件权限。相应地,控制虚拟机232A可以确定该应用是不安全的并且确定所关联的文件对于访问是不安全的。相反,如果控制虚拟机232A确定该应用是安全的(例如,是可访问的、兼容的和/或正确地安装的版本),由于与该应用的关联,所请求的文件可以被认为是安全的。在一些实施例中,控制虚拟机232A基于预先确定的安全和/或不安全资源的列表来确定所请求的资源是否是安全的。例如,控制虚拟机232A可以通过参考列出所有不安全的应用、文件、文件夹、域和其他资源的配置文件来确定所请求的应用、文件、URL或域是不安全的。在又一个示例中,应用可以拦截导航到URLwww.cnn.com的请求。该应用可以确定cnn.com在不安全域的列表中,并且可能想要将导航到该URL的请求重定向到不安全虚拟机。在一些实施例中,配置文件可列出安全的和/或不安全的资源主机、提供者或位置,例如应用服务器、数据库、盘驱动器、目录、文件夹、web服务器和网站。当没有预先确定所请求的资源是安全的或不安全的时,控制虚拟机232A可以默认地将该资源看作是不安全的。在某些实施例中,控制虚拟机232A可以应用一个或多个安全策略以确定资源是否是安全的。在一些实施例中,控制虚拟机232A可以基于所请求资源的安全设置确定所请求的资源是否是安全的。例如,所请求的文件的文件权限可能相对于分配给该文件的请求者的文件夹权限或访问级别是不正确的或可疑的。本文讨论的方法还可以依赖应用设置来确定所请求的资源的安全性。应用设置可以包括安全设置,例如web浏览器的安全设置。控制虚拟机232A可以确定所请求的应用缺少用于打开或下载文件的安全特征。例如,由于缺少附加的恶意软件监控器或过滤器,所请求的浏览器(例如,INTERNETEXPLORER)的副本可能被认为是不安全的。控制虚拟机可确定请求是否源自在计算装置上执行的安全虚拟机(403)。在一些实施例中,控制虚拟机232A可以确定请求源自安全虚拟机。在其他实施例中,控制虚拟机232A可以确定请求源自不安全虚拟机。控制虚拟机232A可以基于在虚拟机上执行的应用来确定该虚拟机是否是安全的。例如,控制虚拟机232A的代理可以检测对虚拟机的浏览器的非法附加组件、或者在虚拟机上驻留的间谍软件,所述附加非法组件或间谍软件可能危害该虚拟机的安全。这样的虚拟机可以被标识为不安全的。控制虚拟机232A可以确定由于安装不受控制的应用,在没有适当授权的情况下该发起虚拟机的盘映像已经被修改,并且可以相应地将这个虚拟机标识为不安全的。在一些实施例中,控制虚拟机232A可以确定该发起虚拟机具有正确的或更新的应用集合,并且由此确定其是安全的。在一些实施例中,控制虚拟机232A可以基于访问虚拟机的用户的标识来确定该虚拟机是否是安全的。控制虚拟机232A可以识别该用户缺少对所请求资源的权限,或者该用户的权限与由该虚拟机会话提供的权限不匹配。在某些实施例中,控制虚拟机232A可以识别该用户具有不正确地访问个人的或不安全的资源的历史。在这些情况下,控制虚拟机232A可以将所关联的虚拟机标识为不安全的。因此,基于用户的分配的权限、对虚拟机的使用历史,或其他因素,控制虚拟机232A可以确定该用户的虚拟机是安全的或不安全的。在一些实施例中,控制虚拟机232A可以基于授权给虚拟机访问一个或多个资源的访问级别来确定该虚拟机是否是安全的。在一个实施例中,可以将限制对资源的访问的虚拟机指定为安全的。在又一个实施例中,可以将具有对资源的高访问级别的虚拟机标识为安全的,例如,这是由于在该虚拟机环境中包含的额外的安全特征。在又一个实施例中,可以将访问敏感数据或受保护资源的虚拟机标识为不安全的,因为存在暴露这些资源使得该虚拟机非法使用这些资源的风险。控制虚拟机232A可以基于授权给每个虚拟机的相对访问级别来比较由管理程序寄载的一个或多个虚拟机并将一些虚拟机分类为安全的或不安全的。控制虚拟机232A还可以基于分配给虚拟机的风险级别来确定该虚拟机是否是安全的。如上文所讨论的,可以基于与虚拟机关联的用户或应用来确定风险级别。此外,虚拟机可以是高风险的并且因此是不安全的,因为它缺少适于访问所请求的资源的安全特征。参考步骤405,响应于所述确定,控制虚拟机232A将请求重定向到在计算装置上执行的不安全虚拟机。如果所请求的资源是不安全的,控制虚拟机232A可以将源自安全虚拟机的请求重定向到不安全虚拟机。在一些实施例中,如果所请求的资源是安全的资源,控制虚拟机232A将该请求从不安全虚拟机重定向到安全虚拟机。在某些情况下,控制虚拟机232A可以确定由该请求所源自的虚拟机适当地处理该请求。在这样的情况下,控制虚拟机232A可以确定不将该请求重定向到另一个虚拟机。例如,控制虚拟机232A可以确定对于安全文件的请求源自安全的虚拟桌面环境,并且在该环境中可以满足该请求。在一些实施例中,控制虚拟机232A可以确定没有任何合适的虚拟机以向其重定向请求。控制虚拟机232A或管理程序可以建立新的虚拟机以启动该重定向。在某些实施例中,控制虚拟机232A可能缺乏建立新的虚拟机以向其重定向请求的资源或能力。在一些实施例中,控制虚拟机232A可以确定不建立新的虚拟机来向其重定向例如涉及高风险动作的请求。相应地,控制虚拟机232A可以拒绝这些请求中的一些请求。当选择虚拟机以重定向该请求时,可以选择至少能够支持在该发起虚拟机中的某些动作的候选虚拟机。在一些实施例中,控制虚拟机232A可以用发起虚拟机的特定配置来更新目标虚拟机。在某些实施例中,控制虚拟机232A可以经由虚拟机迁移来重定向或处理请求。控制虚拟机232A可以执行下列的一个或多个为建立用于向其进行迁移的新的虚拟机的分配资源、克隆或复制发起虚拟机的配置,以及将该新的虚拟机配置为另外地支持该请求。在一些实施例中,该迁移对于请求者来说可能看起来是透明的或无缝的。控制虚拟机232A可以将焦点切换到迁移后的虚拟机,于是在一些实施例中,控制虚拟机232A可以终止该发起虚拟机。在一些实施例中,控制虚拟机232A可以通过如上文结合图3A和3B所述的V2V通信来重定向请求。控制虚拟机232A可以指示请求者例如经由V2V通信直接向合适的虚拟机发送新的请求。控制虚拟机232A可以将请求的任何部分或该请求的转换版本重定向到合适的虚拟机。例如,控制虚拟机232A可以拦截并定向对应于该请求的系统调用、超级调用、中断或其他消息到合适的虚拟机。这些消息中的一些消息可以在它们向或自底层的管理程序或硬件层传递时被拦截以进行处理。例如,控制虚拟机232A可以在硬件层中进行处理之前修改所拦截的中断,使得在重定向的虚拟机的上下文中满足该请求。在一些实施例中,控制虚拟机232A修改对这些中断的响应,使得通过重定向的虚拟机完成该请求。可以对系统调用和其他消息进行类似处理,使得通过由控制虚拟机232A指定的安全虚拟机或不安全虚拟机来满足该请求。在一个实施例中,重定向可包括在安全虚拟机环境中生成或显示窗口,其中,该窗口实际上是在不安全虚拟机中执行的窗口。在这个实施例中,该窗口对于端用户而言看起来就好像它在安全虚拟机中执行。然而,该窗口实际上可以在不安全虚拟机的上下文中执行。例如,该打开的窗口可以执行互联网浏览器的实例,并且可向该互联网浏览器传递所请求的URL或链接以及任何相关cookie、表单信息或缓存的信息。在又一个示例中,该打开的窗口可以寄载从不安全虚拟机执行的应用的实例,并且可以使用该不安全应用打开所请求的文件。重定向可包括重定向cookie、优选项、使用历史、应用设置、配置和/或安全令牌。安全令牌可包括证书、凭据、票据和加密密钥。因此,当重定向URL或应用访问请求时,所需的cookie或安全令牌可以被用于访问域或者其他web或应用内容。目标虚拟机或重定向的虚拟机可以提供对所请求的资源的访问(407)。如之前例如结合图4A所讨论的,目标虚拟机根据不同情况可以是安全的或不安全的虚拟机。响应于控制虚拟机232A的重定向,该目标或重定向的虚拟机可以提供对所请求的资源的访问。当重定向请求时,其可包括例如配置数据或安全令牌的额外信息,在另一个虚拟机中执行的应用可以处理该请求。处理该请求可包括打开文件、下载文件、修改文件、映射到文件结构、挂载驱动器、安装应用、执行应用、发起连接、建立通信堆栈或者导航到由URL或链接识别的站点。在一些实施例中,随着请求的重定向,控制虚拟机232A传送向该目标虚拟机挂载或映射信息的盘或文件结构。相应地,可以将该目标虚拟机配置为在重定向请求之后看到和访问所请求的文件或应用。在一些实施例中,该方法和系统可以被用于重定向虚拟机之间的文件类型关联,所述虚拟机可以包括虚拟机桌面和其他虚拟机环境。当重定向URL或文件类型关联时,系统托盘图标、快捷方式或其他图标可以被创建或复制到目标虚拟机(例如,虚拟桌面),使得这些资源可以与该原始虚拟机无缝地集成。举例来说,如果将对WINDOWSMEDIAPLAYER的请求重定向到不安全虚拟机,可以在该发起的安全虚拟机中显现到该不安全的WINDOWSMEDIAPLAYER的快捷方式。当选择该快捷方式时,该不安全虚拟机可以在该不安全虚拟机的环境中执行该不安全的WINDOWSMEDIAPLAYER应用。在一些实施例中,发起虚拟机丢失对目标虚拟机的焦点,并且甚至可以终止该发起虚拟机。接收焦点的目标虚拟机可以通过显示所请求的内容或应用输出来满足该请求或对该请求进行响应。在某些实施例中,该重定向、对新虚拟机的焦点改变、和/或显示对于用户来说看起来是无缝和透明的。在上面的示例中,响应于快捷方式的选择,在一些实施例中,发起的安全虚拟机可以创建窗口,用于显示来自在不安全虚拟机中执行的不安全的WINDOWSMEDIAPLAYER的应用输出。发起虚拟机可以生成或提供用于显示所请求的内容或应用输出的窗口或区域。在一些实施例中,发起虚拟机指定显示所请求的内容或应用输出的区域。控制虚拟机232A例如可以向目标虚拟机传送或同步该指定的区域或窗口的位置、大小和/或形状。在一些实施例中,该新的虚拟机经由虚拟ICA连接将所请求的内容或应用的显示定向到发起虚拟机。在一个实施例中,该新的虚拟机通过控制虚拟机232A定向该显示。在又一个实施例中,控制虚拟机232A拦截该显示并且将该显示重定向到发起虚拟机或该控制虚拟机232A放置焦点的虚拟机。如上文所讨论的,在一些情况下,不安全虚拟机可以请求由在安全虚拟机中执行的应用生成的屏幕图形。反之,安全虚拟机可以请求由在不安全虚拟机中执行的应用生成的屏幕图形。通常,每个虚拟机可以访问一个或多个图形处理单元(GPU),因此,每个虚拟机通常可访问该一个或多个GPU的大多数方面。特别地,在许多情况下,每个虚拟机可以对由该GPU使用的存储器进行读/写访问以存储所呈现的图像和其他图形数据。因此,一个虚拟机可以通过从GPU存储器中进行读取来读取由另一个虚拟机生成的图形。在一些实施例中,控制虚拟机232A、控制程序或管理程序可以提供图形管理器。可以由可信的domO实体来执行该图形管理器。该图形管理器可以充当虚拟机之间的层,使得该图形管理器可以拦截由虚拟机232向物理GPU发出的请求。在一些实施例中,图形管理器将图形存储器位置分配给在计算装置201上执行的虚拟机232。在其他实施例中,图形管理器将GPU存储器分成一个或多个安全的或不安全的存储区。在其他实施例中,图形管理器将分配给GPU的物理存储器分成一个或多个安全的或不安全的存储区。图形管理器可以从第一虚拟机接收使用计算装置的图形处理单元呈现图形数据的请求。图形数据可包括窗口、工具栏、按钮、视频、图像或其他数据。图形管理器可以选择图形处理单元的安全的存储区并将其分配给第一虚拟机。图形管理器可以将来自由第一虚拟机生成的图形数据的图形提供到图形处理单元存储器的安全区域。在一些实施例中,第一虚拟机可以执行远程访问应用,例如ICA或远程桌面协议客户端,并且可以连接到服务器并将所生成的图形数据远程缓冲到图形处理单元存储器的安全区域。如果图形管理器接收第二虚拟机读取根据第一虚拟机图形数据呈现的图形的请求或指令,该图形管理器可以将第二虚拟机定向到图形处理单元存储器的该安全区域。图形管理器可以基于确定该请求或指令是由控制虚拟机232A或domO实体发出的或者是以其他方式被授权的,来确定是否将第二虚拟机定向到图形处理单元存储器的安全区域。相应地,图形管理器的使用提供了用于将所请求的内容或应用的显示从一个虚拟机重定向到另一个虚拟机的一种方法。尽管在图4B中的实施例描述识别在安全虚拟机中访问不安全信息的请求,从上述讨论可以明显地看出,该方法可以包括识别在不安全虚拟机中访问安全信息的请求。在这些其他实施例中,可以将请求从不安全虚拟机重定向到安全虚拟机。此外,上文描述的各种实施例是为了举例说明的目的而非旨在以任何方式进行限制。应该理解,上文描述的系统可提供这些组件的任意多个或每一个并且这些组件可以在独立机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。可以使用编程和/或工程技术将上文所描述的系统和方法实现为方法、装置或产品以提供软件、固件、硬件或上述的任何组合。此外,上述系统和方法可作为在一件或多件产品上实现或在其中实现的一个或多个计算机可读程序而被提供。本文使用的术语“产品”旨在包括从一个或多个计算机可读的装置、固件、可编程逻辑、存储器装置(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子装置、计算机可读的非易失存储单元(例如,CD-ROM、软盘、硬盘等)可访问的或嵌入其中的代码或逻辑。所述产品可以是从经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等提供对计算机可读程序的访问的文件服务器可访问的。所述产品可以是闪存卡或磁带。所述产品包括硬件逻辑以及嵌入在计算机可读介质中由处理器执行的软件或可编程代码。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。已经描述了用于将访问请求从一个虚拟机重定向到另一个虚拟机的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含本发明的概念的其他实施例。权利要求1.一种在执行寄载安全虚拟机和不安全虚拟机的管理程序的计算装置中,用于将访问请求重定向到不安全虚拟机的方法,所述方法包括由通过在计算装置上执行的管理程序寄载的控制虚拟机拦截访问不安全的资源的请求,所述不安全的资源包括下列的其中一种文件、应用和统一资源定位符(URL);由控制虚拟机确定所述请求源自在所述计算装置上执行的安全虚拟机;由控制虚拟机响应于所述确定将所述请求重定向到在所述计算装置上执行的不安全虚拟机;以及经由所述不安全虚拟机访问所请求的不安全的资源。2.根据权利要求I所述的方法,其中,拦截所述请求包括由所述控制虚拟机的控制程序拦截所述请求,所述控制程序在所述计算装置的处理器上执行。3.根据权利要求I所述的方法,其中,由所述控制虚拟机进行拦截包括由通过在所述计算装置上执行的第一类型管理程序寄载的控制虚拟机拦截所述请求。4.根据权利要求I所述的方法,还包括由在所述安全虚拟机上执行的应用发起对不安全的资源的请求。5.根据权利要求I所述的方法,还包括基于下列之一确定虚拟机是否是安全的在该虚拟机上执行的应用、访问该虚拟机的用户的标识、授权给该虚拟机访问一个或多个资源的访问级别,和分配给该虚拟机的风险级别。6.根据权利要求I所述的方法,还包括基于下列之一确定所请求的资源是否是安全的在所请求的文件和应用之间的文件类型关联、资源的配置文件、所请求的资源的安全设置、对应于所请求的资源的网站的标识、对应于所请求的资源的位置的标识,和对应于所请求的资源的主机的标识。7.根据权利要求I所述的方法,其中,重定向所述请求还包括将下列之一与所述请求一起进行重定向cookie和安全令牌。8.根据权利要求I所述的方法,其中,访问所请求的资源包括下列之一将所请求的文件下载到所述不安全虚拟机、在所述不安全虚拟机上打开所请求的文件、在所述不安全虚拟机上执行所请求的应用,和从所述不安全虚拟机导航到由所请求的URL识别的网站。9.根据权利要求I所述的方法,其中,访问所请求的资源还包括在所述安全虚拟机上经由在所述不安全虚拟机上执行的窗口来显示所请求的资源。10.根据权利要求I所述的方法,其中,访问所请求的资源还包括在所述不安全虚拟机上显示所请求的资源。11.一种在执行寄载安全虚拟机和不安全虚拟机的管理程序的计算装置中,用于将访问请求重定向到不安全虚拟机的系统,所述系统包括管理程序,在计算装置上执行并且寄载控制虚拟机、安全虚拟机和不安全虚拟机;其中,所述控制虚拟机被配置为拦截访问不安全的资源的请求,所述不安全的资源包括下列之一文件、应用和统一资源定位符(URL),确定所述请求是否源自所述安全虚拟机,以及响应于所述请求源自所述安全虚拟机的确定,将所述请求重定向到在所述计算装置上执行的不安全虚拟机,然后,所述不安全虚拟机提供对所请求的不安全的资源的访问。12.根据权利要求11所述的系统,其中,所述控制虚拟机包括用于拦截所述请求的控制程序,所述控制程序在所述计算装置的处理器上执行。13.根据权利要求11所述的系统,其中,所述管理程序包括第一类型管理程序。14.根据权利要求11所述的系统,还包括在所述安全虚拟机上执行的应用,该应用发起对所述不安全的资源的请求。15.根据权利要求11所述的系统,其中,所述控制虚拟机基于下列之一将虚拟机标识为安全的或不安全的在该虚拟机上执行的应用、访问该虚拟机的用户的标识、授权给该虚拟机访问一个或多个资源的访问级别,和分配给该虚拟机的风险级别。16.根据权利要求11所述的系统,其中,所述控制虚拟机基于下列之一将所请求的资源标识为安全的或不安全的在所请求的文件和应用之间的文件类型关联、资源的配置文件、所请求的资源的安全设置、对应于所请求的资源的网站的标识、对应于所请求的资源的位置的标识,和对应于所请求的资源的主机的标识。17.根据权利要求11所述的系统,其中,所述控制虚拟机还将下列之一与所述请求一起进行重定向cookie和安全令牌。18.根据权利要求11所述的系统,其中,所述不安全虚拟机通过下列之一提供对所请求的资源的访问将所请求的文件下载到所述不安全虚拟机、在所述不安全虚拟机上打开所请求的文件、在所述不安全虚拟机上执行所请求的应用,和从所述不安全虚拟机导航到由所请求的URL识别的网站。19.根据权利要求11所述的系统,其中,所述安全虚拟机经由在所述不安全虚拟机上执行的窗口显示所请求的资源。20.一种在执行寄载安全虚拟机和不安全虚拟机的管理程序的计算装置中,用于将访问请求重定向到不安全虚拟机的方法,所述方法包括由通过在计算装置上执行的管理程序寄载的控制虚拟机拦截访问安全的资源的请求,所述安全的资源包括下列的其中一种文件、应用和统一资源定位符(URL);由所述控制虚拟机确定所述请求源自在所述计算装置上执行的不安全虚拟机;由所述控制虚拟机响应于所述确定将所述请求重定向到在所述计算装置上执行的安全虚拟机;以及经由所述安全虚拟机访问所请求的不安全的资源。全文摘要本发明涉及用于将访问请求重定向到不安全虚拟机的方法和系统。计算装置可以执行寄载安全虚拟机和不安全虚拟机的管理程序。由在计算装置上执行的管理程序寄载的控制虚拟机可以拦截访问不安全的资源的请求。该不安全的资源包括下列之一文件、应用和统一资源定位符(URL)。控制虚拟机还可确定该请求源自在计算装置上执行的安全虚拟机。该控制虚拟机可以响应于所述确定将该请求重定向到在该计算装置上执行的不安全虚拟机,然后,该不安全虚拟机可以提供对所请求的不安全的资源的访问。文档编号G06F15/16GK102971706SQ201180033719公开日2013年3月13日申请日期2011年5月9日优先权日2010年5月10日发明者M·P·辛格,I·穆罕默德,I·普拉特申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1