CN102754077A - 可从外部媒体装置引导的安全虚拟化环境 - Google Patents

可从外部媒体装置引导的安全虚拟化环境 Download PDF

Info

Publication number
CN102754077A
CN102754077A CN2010800637753A CN201080063775A CN102754077A CN 102754077 A CN102754077 A CN 102754077A CN 2010800637753 A CN2010800637753 A CN 2010800637753A CN 201080063775 A CN201080063775 A CN 201080063775A CN 102754077 A CN102754077 A CN 102754077A
Authority
CN
China
Prior art keywords
calculation element
reflection
operation system
certain embodiments
system image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010800637753A
Other languages
English (en)
Other versions
CN102754077B (zh
Inventor
Z·吴
D·奥特韦
R·范德林登
J·瑞比
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102754077A publication Critical patent/CN102754077A/zh
Application granted granted Critical
Publication of CN102754077B publication Critical patent/CN102754077B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

用于在主机装置上创建安全虚拟化环境而无需更改该主机装置的方法和系统,所述安全虚拟化环境可从外部媒体装置引导。主机计算装置加载和引导存储在所述外部媒体装置上的普通的操作系统映像。存储在所述外部媒体装置上且在所述普通的操作系统映像中执行的客户机代理通过复制所述主机计算装置的操作系统、排除所有不必要的文件和数据,以及将适配的操作系统映像存储到所述外部媒体装置来创建适配的操作系统映像。所述主机计算装置通过引导所述适配的操作系统映像来提供安全虚拟化环境。

Description

可从外部媒体装置引导的安全虚拟化环境
相关申请的交叉引用
本申请要求2009年12月14日提交的、标题为“Secure VirtualizationEnvironment Bootable from an External Media Device”序列号为61/286210的美国临时申请的优先权,出于各种目的该申请的全部公开内容通过引用被包含在此。
技术领域
本申请总的涉及流式应用。更具体地,本申请涉及可从外部媒体装置引导的安全计算环境。
背景技术
随着移动雇员、远程雇员、客户雇员和基于任务的雇员的数量的增加,对于限制每种类型雇员可用信息且将雇员个人数据与工作相关数据隔离的计算系统的需求随之增加。很多公司向他们自己的雇员提供便携电脑、对公司内部网的远程访问、对雇员所使用应用的远程访问、雇员文件的远程访问,以及对远程桌面、虚拟机或远程应用的访问。在很多情况下,雇员可以通过使用任一机器和/或网络从任一地理位置访问公司资源。
针对向用户提供跨越不同端点和访问场景的相同计算体验的高度可移植计算环境的日益增加的需求,目前已经产生多个不同的解决方案。这些解决方案中包含一些在服务器环境中执行虚拟机、然后将那些虚拟机在没有关机或丢失数据的情况下从一个物理主机迁移到另一物理主机的方案。其他解决方案包括提供可移植引导映像(portable boot image)的可移植虚拟机。因为通常存在应用和驱动程序的兼容性问题,这些解决方案面临很多挑战,并且系统痕迹通常保留在个人桌面机器上从而危及安全性。
发明内容
在一个方面,此处描述了用于创建可移植计算环境且具体是可移植虚拟机的方法和系统。其他可移植虚拟化环境可包括在可移植虚拟化环境中的可移植虚拟机或利用应用重新打包的可移植引导映像。这些方法可能遇到驱动不兼容的问题和安全漏洞。特别地,这些方法可在主机机器上留下虚拟化环境的痕迹,因而潜在地泄露了安全信息。由于应用的兼容性问题应用重新打包可能是不利的。
此处描述的方法和系统从来源于主机机器OS的适配的OS映像创建可移植虚拟化环境。由于适配的OS映像来源于已经与主机机器的装置一起工作的OS,所以只有很少的兼容性问题或没有兼容性问题。此外,此处描述的虚拟化系统是完全的功能虚拟化环境,应用可被安装其中因此只有很少的应用兼容性问题。
通过允许计算装置从适配的OS映像而不是主机操作系统引导,该虚拟化环境是安全的环境。该环境不会暴露给在主机0S或主机应用中执行的病毒,因而只暴露很少或没有暴露给病毒。此外,在使用适配的OS映像时产生的信息被存储在外部媒体装置上,从而保证没有安全信息被复制到或者留在主机计算装置上。
虚拟环境基本完全存储在外部媒体装置上,因而外部媒体装置上的适配的OS映像和外部媒体上的应用都不能访问主机机器的硬盘驱动器。用户文件存储于外部媒体装置上的虚拟文件系统中,该虚拟文件系统保证用户可以将他们的工作从一个机器携带到另一个机器,但也保证了没有用户OS或用户文件的痕迹被保留在该主机机器上。
在其最宽泛的解释中,本公开描述了用于从外部媒体装置可引导的安全虚拟化环境的方法和系统。在一个方面,本发明涉及用于在主机装置上创建安全虚拟化环境而无需更改主机装置的方法和系统,所述安全虚拟化环境可从外部媒体装置引导。主机计算装置加载存储在外部媒体装置上的普通的操作系统映像。该主机计算装置引导被加载的普通的操作系统映像。在普通的操作系统映像中执行的客户机代理通过复制主机计算装置的操作系统、排除不必要的文件和数据以及在外部媒体装置上存储适配的操作系统映像来创建适配的操作系统映像。该主机计算装置通过引导适配的操作系统映像来提供安全虚拟化环境。
在一些实施例中客户机代理将流客户机安装到适配的操作系统映像中。所述客户机代理产生虚拟文件系统。所述流客户机从安全虚拟化环境流式传输应用。
在一些实施例中,所述客户机代理将虚拟文件系统存储到外部媒体装置上,在适配的操作系统映像和普通的操作系统映像之外。在一些实施例中,流式传输的应用利用存储在外部媒体装置上的虚拟文件系统中所存储的用户数据。在一些实施例中,所述客户机代理分析主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于主机计算装置上。在一些实施例中,所述客户机代理更新适配的操作系统映像以将外部媒体装置映射为主硬盘。在一些实施例中,所述客户机代理确定现有的适配的操作系统映像不是来源于主机计算装置的操作系统并且从外部媒体装置排除现有的适配的操作系统映像。
在另一个方面,本发明涉及用于在主机装置上创建安全虚拟化环境而无需更改主机装置的方法,所述安全虚拟化环境可从外部媒体装置引导。主机计算装置加载存储在外部媒体装置上的普通的操作系统映像。该主机计算装置引导被加载的普通的操作系统映像。在普通的OS映像中执行的客户机代理确定在外部媒体装置上的适配的操作系统映像来源于主机计算装置的操作系统。该客户机代理识别主机计算装置的操作系统与适配的操作系统映像之间的区别。该客户机代理修改适配的操作系统映像以与主机计算装置的操作系统相符合。主机计算装置通过引导适配的操作系统映像来提供安全虚拟化环境。
在一些实施例中,所述客户机代理将流客户机安装到适配的操作系统映像中。所述客户机代理产生虚拟文件系统且该流客户机从安全虚拟化环境流式传输应用。
在一些实施例中,客户机代理将虚拟文件系统存储到外部媒体装置上,在适配的操作系统映像和普通的操作系统映像之外。在一些实施例中,流式传输的应用利用存储在外部媒体装置上的虚拟文件系统中所存储的用户数据。在一些实施例中,客户机代理分析主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于主机计算装置上。在一些实施例中,所述客户机代理更新适配的操作系统映像以将外部媒体装置映射为主硬盘。
在另一个方面,本发明涉及用于在主机装置上创建安全虚拟化环境而无需更改主机装置的系统,所述安全虚拟化环境可从外部媒体装置引导。所述系统还包括主机计算装置和外部媒体装置。所述主机装置加载和引导存储在外部媒体装置上的普通的操作系统映像且通过引导适配的操作系统映像来提供安全虚拟化环境。所述外部媒体装置包括映像生成器。所述映像生成器确定所述适配的操作系统映像来源于主机计算装置的操作系统、识别主机计算装置的操作系统与适配的操作系统之间的区别,以及响应于该识别更新所述适配的操作系统映像。
在一些实施例中,映像生成器将流客户机安装到适配的操作系统映像中。所述客户机代理或映像生成器产生虚拟文件系统并且流客户机从安全虚拟化环境流式传输应用。在一些实施例中,所述映像生成器确定适配的操作系统映像不是来源于主机计算装置的操作系统、通过使用主机计算装置的操作系统创建新的操作系统映像来更新适配的操作系统映像,并且用新的操作系统映像替换所述适配的操作系统映像。
在一些实施例中,映像生成器将虚拟文件系统存储到外部媒体装置上,在适配的操作系统映像和普通的操作系统映像之外。在一些实施例中,该流式传输的应用利用存储在外部媒体装置上的虚拟文件系统中所存储的用户数据。在一些实施例中,所述映像生成器分析主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于主机计算装置上。在一些实施例中,所述映像生成器更新所述适配的操作系统映像以将外部媒体装置映射为主硬盘。
在附图和下面的描述中将详细阐述本发明的各种实施例的细节。
附图说明
下面的附图描述了此处描述的方法和方系统的某些示意性实施例,其中相似的附图标记表示相似的元件。这些所描述的实施例应被理解为对所公开的方法和系统的示意性说明,而不以任何方式进行限定。
图1A描述了提供对可执行应用程序的计算装置的远程访问的网络环境的实施例;
图1B和图1C是描述计算装置的实施例的框图;
图2A和图2B是描述虚拟化环境的实施例的框图;
图3A和图3B是描述虚拟化环境的实施例的框图;
图4是描述从外部媒体装置引导的虚拟化环境的实施例的框图;
图5A和图5B是描述产生可从外部媒体装置引导而无需更改主机装置的安全虚拟化环境的方法的实施例的流程图。
具体实施方式
图1A描述了计算环境101的一个实施例,该计算环境包括与一个或多个服务器106A-106N(此处总的被称为“服务器106”)通信的一个或多个客户机102A-102N(此处总的被称为“客户机102”)。在客户机102与服务器106之间安装的是网络。
在一个实施例中,计算环境101可包括在服务器106和客户机102之间安装的设备(未示出)。该设备可管理客户机/服务器连接,并且在某些情况下能够在多个后端服务器之间负载平衡客户机连接。
在一些实施例中,客户机102可被认为是单个客户机102或客户机102的单个组,而服务器106可被认为是单个服务器106或服务器106的单个组。在一个实施例中,单个客户机102与不只一个服务器106通信,而在另一个实施例中,单个服务器106与不只一个客户机102通信,而在又一个实施例中,单个客户机102与单个服务器106通信。
在一些实施例中,客户机102可被称为下面术语中的任何一个:客户机102、客户端、客户计算机、客户装置、客户计算装置、本地机器、远程机器、客户节点、端点、端节点或第二机器。在一些实施例中,服务器106可被称为下列术语中的任何一个:服务器、本地机器、远程机器、服务器群、主机计算装置或第一机器。
在一个实施例中,客户机102可以是虚拟机102C。虚拟机102C可以是任何虚拟机,而在一些实施例中,虚拟机102C可以是由XenSolution、Citrix Systems、IBM、VMware公司开发的管理程序或任何其他管理程序管理的任何虚拟机。在其他实施例中,虚拟机102C可以由任何管理程序管理,而在其他实施例中,虚拟机102C可以由在服务器106上执行的管理程序或在客户机102上执行的管理程序管理。
在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个:软件、程序、可执行指令、虚拟机、管理程序、web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的互联网协议电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、便于实时数据通信的应用、HTTP客户端、FTP客户端、Oscar客户端、Telnet客户端或任何其他可执行指令集。在其他实施例中包括显示由在服务器106或其他位于远程的机器上远程地执行的应用产生的应用输出的客户装置102。在这些实施例中,客户装置102能在应用窗口、浏览器或其他输出窗口中显示该应用输出。在一个实施例中,该应用是桌面,而在其他实施例中,该应用是产生桌面的应用。
在一些实施例中,服务器106执行远程呈现客户端或其他客户端或程序,其使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用产生的显示输出并且将该应用显示输出传输到客户机102。所述瘦客户端或远程显示协议可以是下列协议的任何一个:由位于佛罗里达州Ft.Lauderdale的Citrix Systems有限公司制造的独立计算架构(ICA)协议;或由位于华盛顿州Redmond的微软公司制造的远程桌面协议(RDP)。
在一些实施例中,计算环境101可包括不只一个服务器106A-106N使得服务器106A-106N逻辑上一起聚合到服务器群106中。服务器群106可包括地理上分散并且逻辑上一起聚合到服务器群106中的服务器106,或者可包括互相之间位置接近的且逻辑上一起聚合到服务器群106的服务器106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用WAN、MAN或LAN通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任一组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。
在一些实施例中,服务器群106可包括执行大体上相似类型的操作系统平台(例如,由美国华盛顿州Redmond的Microsoft公司制造的WINDOWS NT、UNIX、LINUX或SNOW LEOPARD)的服务器106。在其他实施例中,服务器群106可包括执行第一类型的操作系统平台的第一组服务器106和执行第二类型的操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型的操作系统平台的服务器106。
在一些实施例中,服务器106可以是任何服务器类型。在其他实施例中,服务器106可以是下列服务器类型的任何一个:文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器或主应用服务器、执行活动目录的服务器106、执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器106。在一些实施例中,服务器106可以是包含远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由下列制造商的任何一个制造的设备:Citrix应用网络组、Silver PeakSystems公司、Riverbed Thechnology公司、F5 Networks公司、或JuniperNetWorks公司。一些实施例中包括第一服务器106A,该第一服务器106A接收来自客户机102的请求、将该请求转发到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机102所产生的请求进行响应。第一服务器106A能获得对客户机102可用的应用列举以及与寄载由该应用列举所识别的应用的服务器106关联的地址信息。第一服务器106A使用web接口提供对客户机请求的响应;并直接与客户机102通信以向客户机102提供对所识别应用的访问。
在一些实施例中,服务器106可执行下列应用中的任何一个:使用瘦客户端协议来向客户机传输应用显示数据的瘦客户端应用;远程显示展示(presentation)应用;Citrix Systems公司的CITRIX ACCESS SUITE的任何部分,诸如METAFRAM或者CITRIX PRESENTATION SERVER;Microsoft公司制造的MICROSOFT WINDOWS终端服务;或由CitrixSystems公司开发的ICA客户端。又一个实施例中包括作为应用服务器的服务器106,例如:提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFT EXCHANGE;web或Internet服务器;桌面共享服务器;协同服务器;或任何其他类型的应用服务器。在其他实施例中服务器106执行下列类型的所寄载的服务器应用的任何一个:Citrix OnlineDivision公司提供的GOTOMEETING、位于加利福尼亚州Santa Clara的WebEx公司提供的WEBEX,或者Microsoft公司提供的Microsoft OfficeLIVE MEETING。
在一些实施例中,客户机102可以是寻求对服务器106提供的资源进行访问的客户端节点。在其他实施例中,服务器106可向客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器充当主节点,使得其与一个或多个客户机102或服务器106通信。在一些实施例中,主节点可识别与寄载所请求的应用的服务器106相关联的地址信息并且将其提供给一个或多个客户机102或服务器106。在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群或者设备。
一个或多个客户机102和/或一个或多个服务器106能通过在计算环境101中的机器和设备之间安装的网络104传输数据。网络104可包括一个或多个子网,并且可以被安装在计算环境101中所包含的客户机102、服务器106、计算机器和设备的任何组合之间。在一些实施例中,网络104可以是:局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104的主网104、具有专用子网104的主公共网104、具有公共子网104的主专用网104或者具有专用子网104的主专用网104。在进一步的实施例中,网络104可以是任何的下列网络类型:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络、包括可能是红外信道或者卫星频带的无线链路的网络104。网络104的网络拓扑在不同的实施例中可以不同,可能的网络拓扑包括:总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑、分层星型网络拓扑。另外的实施例可包括使用协议在移动装置间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个:AMPS、TDMA、CDMA、GSM、GPRS UMTS或能在移动装置间传输数据的其他任何协议。
图1B所示是计算装置100的实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:中央处理单元121、主存储器122、存储装置128、输入输出(I/O)控制器123、显示装置124A-124N、安装装置116和网络接口118。在一个实施例中存储装置128包括:操作系统、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和指示装置127。其他实施例中可包括连接到不只一个输入/输出装置130A-130N的I/O控制器123。
图1C描述了计算装置100的一个实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:桥170和第一I/O装置130A。在又一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二I/O装置130B、主存储器122和高速缓冲存储器140通信。I/O端口、存储器端口103和主处理器被包含在中央处理单元121中。
在计算装置100的实施例中可包括被下列组件配置的任何一个所表征的中央处理单元121:响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如:由Intel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公司(International BussinessMachines)制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或逻辑电路的任何其他组合。中央处理单元122的其他实施例可包括下列任何组合:微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。
尽管图1C描述了包括单个中央处理单元121的计算设备100,但在一些实施例中计算设备100可包括一个或多个处理单元121。在这些实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121来同时执行指令或同时在一个数据片上执行指令。在其他实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元的每个执行一组指令的一部分。例如每个处理单元121可被指示执行程序的一部分或者程序中的特定模块。
在一些实施例中,处理单元121可包括一个或多个处理核。例如,处理单元121可具有两核、四核、八核等。在一个实施例中,处理单元121可包括一个或多个并行处理核。在一些实施例中处理单元121的处理核可访问作为全局地址空间的可用内存、或在其他实施例中,计算设备100的存储器可被分段并分配到处理单元121中的特定核。在一个实施例中,计算设备100中的一个或多个处理核或处理器的每个可访问本地存储器。在又一个实施例中,计算设备100的存储器可在一个或多个处理器或处理核之间共享,而其他存储器可被特定处理器或处理器子集访问。在计算设备100包括不只一个处理单元的实施例中,多个处理单元可被包含在单个集成电路(IC)中。在一些实施例中,这些多个处理器可通过内部高速总线连接在一起,该总线可被称为元件互联总线。
在计算设备100包括一个或多个处理单元121,或处理单元121包括一个或多个处理核的实施例中,处理器可同时在多片数据上执行单个指令(SIMD),或在其他实施例中处理器可同时在多片数据上执行多个指令(MIMD)。在一些实施例中,计算设备100可包括任意数量的SIMD和MIMD处理器。
在一些实施例中,计算设备100可包括图形处理器或图形处理单元(未示出)。图形处理单元可包括软件和硬件的任何组合,并且还可输入图形数据和图形指令、从所输入的数据和指令呈现图形和输出所呈现的图形。在一些实施例中,图形处理单元可被包含在处理单元121的内部。在其他实施例中,计算设备100可包括一个或多个处理单元121,其中至少一个处理单元121被专用于处理和呈现图形。
在计算装置100的一个实施例中包括通过也称为后端总线的第二总线与高速缓冲存储器140通信的中央处理单元121,而在计算机器100的又一个实施例中包括使用系统总线150与高速缓冲存储器通信的中央处理单元121。在一些实施例中,本地系统总线150也被中央处理单元所使用来与不只一种类型的I/O装置130A-130N进行通信。在一些实施例中,本地系统总线150可以是下列类型总线的任何一个:VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算装置100的其他实施例中包括为通过高级图形端口(AGP)与中央处理单元121通信的视频显示器124的I/O装置130A-130N。在计算装置100的其他形式中包括通过下列连接的任何一个连接到I/O装置130A-130N的处理器121,这些连接如下:超传输(HyperTransport)、快速I/O或者InfiniBand。计算装置100的进一步的实施例包括通信连接,其中处理器121使用本地互连总线与一个I/O装置BOA进行通信并使用直接连接与第二I/O装置BOB进行通信。
在一些实施例中,计算装置100包括主存储器单元122和高速缓存存储器140。高速缓存存储器140可以在一些实施例中可以是下列类型存储器的任何一个:SRAM、BSRAM或EDRAM。其他实施例中包括的高速缓存存储器140和主存储器单元122,可以是下列类型存储器的任何一个:静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、增强DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双倍数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)、铁电RAM(FRAM)或任何其他类型的存储器装置。进一步的实施例包括可通过下列之一访问主存储器122的中央处理单元121:系统总线150、存储器端口103、或允许处理器121访问存储器122的任何其他连接、总线或端口。
计算装置100的一个实施例支持下列安装装置116的任何一个:CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如
Figure BDA00002006118700111
的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或软件的任意其它装置。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算装置100还可以包括可以为一个或多个硬盘驱动器或者一个或多个独立磁盘冗余阵列的存储装置128,这里存储装置被配置为存储操作系统、软件、程序应用、或者客户机代理120的至少一部分。计算装置100的另一个实施例中包括用作存储装置128的安装装置116。
计算装置100还可包括网络接口118以通过多种连接来接口到局域网(LAN)、广域网(WAN)或因特网,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、基于SONET的以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某个组合。也可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。计算装置100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信的网络接口118。网络接口118的形式可以包括下列的任何一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它装置。
计算装置100的实施例包括下列I/O装置130A-130N的任何一个:键盘126、指示装置127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出装置。在一些实施例中I/O控制器123可连接多个I/O装置130A-130N以便控制一个或多个I/O装置。I/O装置130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可以为接纳诸如由Twintech Industry公司制造的USB闪存驱动系列装置的USB存储装置提供通用串行总线(USB)接口。在其他实施例中I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行连接的小型计算机系统接口总线。
在一些实施例中,计算装置100可以连接多个显示装置124A-124N,在其他实施例中计算装置100可以连接单个显示装置124,而在其他实施例中计算装置100可以连接相同类型或形式的显示装置124A-124N或不同的类型或形式的显示装置。显示装置124A-124N的实施例可被下列方式支持和实现:一个或多个I/O装置130A-130N、I/O控制器123、I/O装置130A-130N和I/O控制器123的组合、能支持显示装置124A-124N的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以便与显示装置124A-124N相接口、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可被配置为使用一个或多个显示装置124A-124N,这些配置包括:有多个连接器以与多个显示装置124A-124N相接口;多个视频适配器且每个视频适配器与显示装置124A-124N中的一个或多个连接;有操作系统被配置用于支持多个显示装置124A-124N;使用被包含在计算装置100内部的电路和软件来连接并使用多个显示装置124A-124N;和在主计算装置100和多个次级计算装置上的执行软件来使主计算装置100能使用次级计算装置的显示装置作为用于主计算装置100的显示装置124A-124N。计算装置100的其它实施例可包括由多个次级计算装置提供的多个显示装置124A-124N,所述多个显示装置124A-124N通过网络连接到主计算装置100。
在一些实施例中,计算机器100可以执行任何操作系统,而在其他实施例中,计算机器100可执行下列操作系统的任何一个:诸如WINDOWS3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作系统;和不同发行版本的Unix和Linux操作系统;由苹果计算机公司出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者任意其它操作系统。在又一个实施例中,计算机器100可执行多种操作系统。例如,计算机器100可执行能执行或管理执行第一操作系统的虚拟机的PARALLELS或另一个虚拟化平台,而计算机器100执行不同于第一操作系统的第二操作系统。
计算机器100可以体现为下列计算装置的任何一个:计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信装置、媒体播放装置、游戏系统、移动计算装置、上网本、由苹果计算机公司出品的IPOD系列装置、由索尼公司出品的PLAYSTATION系列装置的任何一个、由Nintendo公司出品的Nintendo系列装置的任何一个;由微软公司出品的XBOX系列装置的任何一个,或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体装置。在其它实施例中,计算装置100可以是诸如下列移动装置的任何一个的移动装置:JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135;由Samsung电子有限公司制造的i300或i330;由Palm公司出品的TREO180、270、600、650、680、700p、700w或750智能电话;或具有符合该装置的不同的处理器、操作系统和输入装置的任何计算装置;或能执行此处所述的方法和系统的任何其他移动计算装置。计算环境101的其他实施例包括移动计算装置100,所述移动计算装置100可以是下列的任何一个:黑莓(Blackberry)的任一系列,或由Research In Motion有限公司出品的其他手持装置;由苹果计算机公司出品的iPhone;PlamPre;掌上电脑;掌上电脑电话或任何其他手持移动装置。
图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通信的任何设备、打印机、扫描仪或任何其他设备或此处所描述的任何设备。
硬件层210还可包括可包含任何类型存储器的物理存储器216。在一些实施例中物理存储器216可包括此处描述的任何存储器类型。物理存储器216可存储数据,以及在一些实施例中可存储一个或多个程序或可执行指令集。图2A所示固件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可以执行包括Type1管理程序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可被称为宿主服务器。这样的计算设备的例子是由位于佛罗里达州Fort Lauderdale的Citrix Systems公司提供的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可被称为域、客户和/或DOMAIN U。虚拟机232是一组可执行指令,当其被处理器208执行时,模拟物理计算机的操作,从而虚拟机232可类似物理计算设备执行程序或进程。尽管图2A计算装置201寄载3个虚拟机232的实施例,在其他实施例中,计算装置201可寄载任何数量的虚拟机232。在一些实施例中,管理程序202为每个虚拟机232提供物理硬件、内存、处理器和对该虚拟机可利用的其他系统资源的唯一的虚拟视图。在一些实施例中,该唯一的虚拟视图可以基于下列的任何一个:虚拟机许可;向一个或多个虚拟机标识符应用的策略引擎;访问虚拟机的用户;在虚拟机上执行的应用;被虚拟机访问的网络;或任何其他类似标准。在其他实施例中,管理程序202向每个虚拟机232提供物理硬件、存储器、处理器和对该虚拟机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可被称为控制操作系统、控制域、域0或dom 0。在一些实施例中,控制程序220可以是XEN管理程序的DOMAIN 0或DOM 0。控制程序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可通过在第一计算装置201A上执行的管理程序202A(未示出)和在第二计算装置201B上执行的管理程序202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算装置201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过管理程序202A-B之间的连接,管理程序202A-B可管理分布在一个或多个计算装置201A-B上的资源池,例如在第一计算装置201A和第二计算装置201B上的可利用资源。管理程序202A-B还可虚拟化这些资源并使它们对于在计算装置201A-B上执行的虚拟机232成为可利用的。在本实施例的又一情况下,单个管理程序202可管理和控制在两个计算装置201A-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(例如,在第二计算装置201B上)通信或管理计算装置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在其上执行的虚拟机结合在一起,形成意识不到其是虚拟机的完全虚拟化的虚拟机;这样的机器可被称为“Domain U HVM(硬件虚拟机)虚拟机”。在又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。仍在又一个实施例中,完全虚拟化机可包括通过与管理程序202通信提供功能的驱动程序。在这样的实施例中,驱动程序典型地意识到自己执行在虚拟化的环境中。
在又一个实施例中,客户操作系统230与该客户操作系统230在其上所执行的虚拟机结合在一起,形成意识到其是虚拟机的超虚拟化(paravirtualized)的虚拟机;这样的机器可被称为“Domain U PV虚拟机”。在又一个实施例中,超虚拟化机包括完全虚拟化机中所不包含的额外的驱动程序。仍在又一个实施例中,超虚拟化机包括如上所述的被包含在控制程序220中的网络后端驱动程序和块驱动程序。
图2B中所示的是说明Type1管理程序202的虚拟化环境的又一个实施例。在计算装置201上执行的管理程序202可以直接访问硬件层210中的硬件和资源。由管理程序202管理的虚拟机232可以是不安全的虚拟机232B和/或安全的虚拟机232C。尽管图2A所描述的虚拟化环境中图示了宿主操作系统214,图2B中的虚拟化环境的实施例不执行宿主操作系统。
进一步参考图2B,更详细地,虚拟化环境包括Type1管理程序202。在一些实施例中Type1管理程序202执行在“裸金属”上,从而管理程序202可以直接访问计算装置201上执行的所有应用和进程、计算装置201上所有资源和计算装置201上所有硬件或与计算装置201通信的所有硬件。尽管Type2管理程序202通过宿主操作系统214访问系统资源,Type1管理程序202可直接访问所有系统资源。Type1管理程序202可直接执行在计算装置201的一个或多个物理处理器上,并且可包括存储在物理存储器216中的程序数据。
在采用Type1管理程序202配置的虚拟化环境中,宿主操作系统可被一个或多个虚拟机232所执行。这样计算装置201的用户可以指派一个或多个虚拟机232作为该用户的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作系统214与计算装置201交互的基本上相同方式来与计算装置201交互来模拟宿主操作系统。
虚拟机232可以是不安全的虚拟机232B和安全的虚拟机232C。尽管图2B示出了安全的虚拟机和不安全的虚拟机,有时它们也被称为有特权的和无特权的虚拟机。在一些实施例中,可基于虚拟机与在相同虚拟化环境中执行的其他虚拟机的比较来确定虚拟机的安全。例如,要是第一虚拟机访问资源池则第二虚拟机不访问同样的资源池;当第一虚拟机被认为是安全虚拟机232A时第二虚拟机可被认为是不安全的虚拟机232B。在一些实施例中,虚拟机323访问一个或多个系统资源的能力可使用由控制程序220或管理程序202产生的配置接口来进行配置。在其他实施例中,虚拟机232可承受的访问量可以是查看下列标准的集合的任意的结果:访问虚拟机的用户、在虚拟机上执行的一个或多个应用、虚拟机标识符、基于一个或多个因素指派给虚拟机的风险等级或任何其他类似标准。
在一些实施例中,不安全虚拟机232B可被阻止访问安全虚拟机232A可以访问的资源、硬件、存储器位置和应用。例如安全虚拟机232C可访问一个或多个公司资源,而不安全虚拟机232B不能访问任何公司资源。
图3A描述可处理响应于由计算机器201从输入装置接收的输入而产生的中断的虚拟化环境的一个实施例。所述计算机器可与一个或多个输入装置或诸如此处所描述的任何装置进行通信。在一个实施例中,计算装置201可与键盘320通信。计算装置201的固件212可包括高级配置与电源接口(ACPI)层310,而控制程序220可包括管理接口306A。每个虚拟机232可包括虚拟固件302A-B(总的称为302),同时每个虚拟固件可包括ACPI层304A-B(总的称为304)。每个客户操作系统230或控制程序220可包括管理接口306A-B(总的称为306)。
继续参考图3A,具体而言,在一个实施例中计算装置201可与一个或多个装置通信。在一些实施例中,这些装置可包括具有按键的键盘320。在一些实施例中,键盘320可被认为是物理装置206,使得键盘320被逻辑地包含在硬件层210中。键盘320可通过硬件驱动程序与计算装置201通信,该硬件驱动程序可从键盘320接收原始数据并且解释该原始数据为命令和数据,该命令和数据能被操作机器或控制程序220解释。
在一些实施例中,在计算装置201上、或更具体地说在计算装置201中的处理器208上执行的固件212可包括高级配置与电源接口(ACPI)层310。ACPI层310可以是提供一个或多个方法、对象以及其他用于计算装置201中的装置的管理规范和配置。ACPI层310可进一步包括用于管理计算装置201中电源的对象、方法和规范。在一些实施例中,ACPI层310可具有关于计算装置201中电源管理的所有方面的专门控件,且还可以配置计算装置201中的装置。在一些实施例中,ACPI层310可包括列举一个或多个操作状态的ACPI规范。这些操作状态可描述系统配置,诸如:计算装置201中的哪个装置应该接收电力、应该传送多少电力到计算装置201中的装置、是否配置计算装置201中的装置来终止或启动一个或多个服务或进程,以及其他此类配置。
在一个实施例中,ACPI层310可包括多个表,该多个表包括了用于将固件212和请求关于装置或装置所产生的中断的信息的操作系统相接口的对象和方法。例如,如果装置连接到或者包含在计算装置201中以产生中断,操作系统、控制程序220或其他在计算装置201上执行的程序可查询ACPI层201的表关于该装置的信息且因而查询关于中断的信息。该信息可包括在固件212中,因而ACPI层310的表可用于获取关于该装置的信息。该信息可从固件212擦去或从固件212获得,或者该信息可包括与装置相关的对象或方法。
在一些实施例中,固件212可包括计算装置201中包括的每个装置的对象和方法。例如,固件212可包括用于具有特定于键盘320的装置ID的键盘320的对象。在这个示例中,固件212中的键盘对象还可具有特定于该键盘320的方法。这些方法可包括用于接收来自键盘320的输入的函数和过程,以及用于发送命令到键盘320的函数和过程。在一些实施例中,通过充当固件212和操作系统或程序之间的接口,ACPI层310允许操作系统、控制程序以及其他应用和过程访问固件212中的键盘对象,且进一步访问固件212中的键盘方法。
由于计算装置201包括固件212,在计算装置201上执行的虚拟机232也包括该固件。在一个实施例中,在计算装置201上执行的多个虚拟机232可包括虚拟固件302A-B(总的称为302)。虚拟固件302可以是在计算装置201上执行的固件212的虚拟化视图。在一个实施例中,控制程序220可通过分析计算装置201上的固件212中的装置对象以及将该装置对象列举在虚拟固件302中的表中来产生虚拟固件302。在一些实施例中,控制程序220可响应于生命周期事件来产生虚拟固件302,该生命周期事件诸如:控制程序220的启动、虚拟机232的启动、虚拟机232的迁移、控制程序220的关闭、虚拟机232的关闭、计算装置201的启动,或者任何其他类似的生命周期事件。在一些实施例中,虚拟固件302中包括的表与固件212相似,因为该虚拟固件302列举了由固件212管理的每个装置以及该装置的标识符。
在一些实施例中,虚拟固件302包括虚拟ACPI层304A-B(总的称为304)。在一些实施例中,该虚拟ACPI层304的作用与计算装置201的ACPI层310基本类似之处在于虚拟ACPI层304可在客户操作系统230、控制程序220及其他应用,和机器232上的虚拟固件302之间充当接口作用。
在其他实施例中,在虚拟机232中执行的客户操作系统230、控制程序220及其他应用或服务可包括管理接口306A-B(总的称为306)。在一些实施例中,该管理接口306A-B可以是直接与固件中的ACPI层相接口来接收关于装置的信息的窗口管理接口。在一个实施例中,管理接口306可直接与虚拟ACPI层304相接口以获得与固件212中的装置相关的或被分配到固件212中的装置的对象信息和方法。例如,管理接口306可与虚拟ACPI层304通信以获得关于当用户激活键盘上的按键时所产生的键盘中断的信息。
尽管图3A描述了使用Type1管理程序的计算装置,在其他实施例中,计算装置201可使用Type2管理程序。类似地,在一些实施例中计算装置201可包括此处描述的任何虚拟化环境。
图3B描述了配置为隔离安全屏幕图形、执行USB策略守护进程、分配光盘驱动器,和执行其他虚拟化任务的虚拟化环境的实施例。在一个实施例中,计算装置201可与装置336通信。在其他实施例中,硬件层210可包括图形处理单元(GPU)330,该图形处理单元可包括图形处理存储器328、USB端口332和至少一个光盘驱动器344。在一些实施例中,控制程序220可执行或管理一个或多个包括图形管理器324、驱动管理器342和策略引擎334的附加模块或程序。此外,控制程序220可访问存储的安全策略326。在一些实施例中,在计算装置201上执行的虚拟机323可包括一个或多个虚拟光盘驱动器340A-B(总的称为340),并且可执行一个或多个应用322A-B(总的称为322)。
继续参考图3B,具体而言,尽管图3B中描述的计算装置201具有使用了Type1管理程序的虚拟化环境,在其他实施例中,计算装置201可使用Type2管理程序。类似地,在一些实施例中该计算装置201可包括此处描述的任何虚拟化环境。
在一些实施例中,计算装置201可与一个或多个外部装置336通信。装置336可以是此处描述的任何装置。在一些实施例中,装置336可经USB端口332与计算装置201通信。在其他实施例中,装置336可经计算装置201上的其他端口与计算装置201通信。
在一些实施例中,硬件层210可包括光盘驱动器344。该光盘驱动器344可以是任何光盘驱动器,而在其他实施例中该光盘驱动器344可以是此处描述的任何盘驱动器。在一些实施例中,光盘驱动器344可以是DVD驱动器、CD驱动器、CDR/W驱动器,或任何其他盘驱动器。尽管图3B描述了光盘驱动器344,在一些实施例中该盘驱动器可以是磁盘驱动器。
硬件层210还可以包括诸如任何使用通用串行总线规范在装置和计算装置201之间建立通信的端口的USB端口332。
在一些实施例中,图形处理单元(GPU)330可包括在计算装置201的硬件层210中。该图形处理单元330可以是能够呈现图形的任何处理器。在一些实施例中,该图形处理单元330包括图形处理单元330可用来存储呈现的图形和其他图形数据的存储器328。在其他实施例中,将图形处理单元330可用于存储图形信息和呈现的图形的物理存储器216的一部分分配给图形处理单元330。
在一些实施例中,虚拟机232可包括一个或多个虚拟光盘驱动器340A-B(总的称为340)。在一些实施例中,这些虚拟光盘驱动器340可以是计算装置201上的物理盘驱动器344的虚拟化视图。在虚拟机232上执行的客户操作系统230可与虚拟盘驱动器340交互,其交互方式与客户操作系统230与物理盘驱动器344的交互方式大致相同。因而,客户操作系统230可发出读和写命令到虚拟盘驱动器340。在一些实施例中,在控制程序220的上下文中执行的驱动管理器342,可以拦截这些读/写命令并且可以将它们发送到物理盘驱动器344。
在一些实施例中,虚拟机232可执行一个或多个应用322A-B(总的称为322)。这些应用可以是任何应用,或此处描述的任何应用。应用322可与客户操作系统230交互,并且可以产生图形和其他应用输出。
在一些实施例中,控制程序220可包括图形管理器324。该图形管理器324可充当虚拟机232之间的层,使得图形管理器324可拦截由虚拟机232上执行的应用322发到物理GPU330的请求。尽管图3B描述了在控制程序220的上下文中执行的图形管理器324,在一些实施例中该图形管理器324可以被包括在工具堆栈224中。在一些实施例中,该图形管理器324分配图形存储位置给应用322和/或在计算装置201上执行的虚拟机232。在其他实施例中,图形管理器324将GPU存储器328划分为安全和不安全存储器部分。在其他实施例中,图形管理器324将分配给GPU330的物理存储器216划分为安全和不安全存储器部分。
在一些实施例中,当应用322发出请求或命令给GPU330时,图形管理器324可拦截该请求且确定该命令或请求是否应被转发到GPU330。在一些实施例中,该图形管理器324可通过检查一个或多个安全策略326来确定应用322是否有权向存储器写或从存储器的特定区域读,从而做出确定。在一些实施例中,图形管理器324转发关于应用322和应用322在其上执行的虚拟机232的识别信息到策略引擎334。基于所接收的信息以及一个或多个安全策略326,策略引擎334确定该命令或请求是否应被送交GPU330,并且转发该确定到图形管理器324。
在一些实施例中,驱动管理器342可在控制程序220中执行。在一些实施例中,驱动管理器342可拦截由在虚拟机232中执行的应用发出的读/写请求,并且确定是否传送那些读/写请求到硬件层210中的光盘驱动器344。驱动管理器342还可从盘驱动器344接收事务流,并且可从该事务流得知该盘驱动器344的当前操作。在一些实施例中,驱动管理器342将事务流转换为命令流并且分析所产生的命令流。通过这种分析,驱动管理器342可确定该盘驱动器344是否正在从盘读、向盘写、弹出(eject)盘、接纳盘、闲置等。因而,驱动管理器342可从该事务流得知盘驱动器344的状态。
在一些实施例中,安全策略的组326可存储在计算装置201上在控制程序220可访问的存储单元或存储库中。在一些实施例中,安全策略326可存储在计算装置201上的数据库中。在一些实施例中,该安全策略326可以是一组策略,由控制程序220、策略引擎334、图形管理器324,或者用于确定下面任何一个的任何其他程序所使用:虚拟机323是否可以访问一个或多个存储单元、装置、处理器或盘;用户是否可以访问一个或多个存储单元、装置、处理器或盘;装置是否应对一个或多个虚拟机232可用;在虚拟机232中执行的应用所产生的一个或多个命令是否应被转发到计算装置201上的装置;以及虚拟机232中执行的应用所产生的一个或多个请求是否应被转发到计算装置201上的装置。
类似地,在一些实施例中,在计算装置201上执行的策略引擎334可使用安全策略326来确定一个或多个操作是否被允许。在一些实施例中,该策略引擎334可以代替在控制程序220的上下文中执行的其他程序进行操作。在其他实施例中,该策略引擎334可结合其他程序进行操作。
图4描述了可从外部媒体装置405引导安全虚拟化环境的虚拟化系统401的一个实施例。该系统401包括执行至少一个操作系统214/230的计算装置201,该计算装置包括硬件层210,该硬件层包括至少一个或多个物理盘204、一个或多个物理装置206、一个或多个物理处理器208和物理存储器216。该计算装置201可通过在计算装置201和外部媒体装置405之间的通信连接435与外部媒体装置405通信。外部媒体装置405可包括普通的操作系统映像410、适配的操作系统映像470、流客户机425和映像生成器(image creator)415。该外部媒体装置405可存储用户数据420和一个或多个应用文件430。虚拟化环境401还可包括虚拟文件系统440。
继续参考图4,具体而言,该虚拟化环境401可包括诸如任何计算装置的计算装置201。在一些实施例中该虚拟化环境401可包括此处描述的任何计算装置201。尽管图4描述了包括单个计算装置201的虚拟化环境401,在其他实施例中该虚拟化环境401可包括一个或多个计算装置201。
在一些实施例中,硬件层210可包括任何硬件装置。在其他实施例中,硬件层210可包括一个或多个物理盘204、一个或多个物理装置206、一个或多个物理处理器208以及物理存储器216。物理盘204可以是此处描述的任何物理盘,物理装置206可以是此处描述的任何物理装置,物理处理器208可以是此处描述的任何处理器,且物理存储器216可以是此处描述的任何存储单元。
在一些实施例中,计算装置201可在包含在计算装置201中的一个或多个处理器208上直接执行操作系统214。在其他实施例中,主机操作系统230可以是在计算装置201上的虚拟机232上执行的客户操作系统230。在本实施例中,可通过在计算装置201上执行的控制程序220访问操作系统230。
外部媒体装置405可以是任何媒体装置。在一些实施例中,外部媒体装置405是USB外部存储装置(例如,USB记忆棒)。在其他实施例中,外部媒体装置405可以是:外接硬盘驱动器、可写高密度盘(CD)、可写数字多用盘(DVD)、网络盘驱动器,或任何其他外部媒体装置。
在一些实施例中,外部媒体装置405可经由通信连接435与计算装置201通信。在一些实施例中,该通信连接435可以是诸如此处描述的任何网络104的网络。在其他实施例中,该通信连接435可以是通过计算装置201上的USB端口创建的连接。在其他实施例中,该通信连接435可以是通过计算装置201上的任何通信端口创建的连接。
外部媒体装置405可包括操作系统的映像410。OS映像410可以是可从外部媒体装置引导并且可在外部媒体装置405上执行映像生成器415的普通的OS映像410。在一些实施例中,普通的OS映像410可以是包括允许OS映像410在外部媒体装置405上引导的引导程序的基本操作系统映像。在一个实施例中,普通的OS映像410可包括包含了通用串行总线(USB)驱动程序、网络驱动程序以及在外部媒体装置405和计算装置201之间建立通信连接所需的任何其他驱动程序的一套基础标准驱动程序。在一些实施例中,外部媒体装置405上的程序、应用和可执行指令可由计算装置201上的一个或多个处理器208执行。在一些实施例中,OS映像410是包括可访问硬件层210中装置的最宽泛组合(widest array for devices)的通用基础驱动程序的基础映像。在一些实施例中,普通的OS映像410具有足够的功能以允许映像生成器415在任何类型的主机计算装置201上执行。
普通的OS映像410可以只有足以在主机计算装置201上引导和执行映像生成器415的功能。在一些实施例中,该普通的OS映像410可以是包括用户个性化设置和应用的全功能的OS映像。在一些实施例中,普通的OS映像410可包括映像410中的映像生成器415。在其他实施例中,该映像生成器可存在于外部媒体装置405上但在普通的OS映像410之外。在其他实施例中,该映像生成器可存储于服务器上且OS映像410将会通过网络执行该映像生成器。
在一些实施例中,适配的OS映像470可包括在计算装置201上执行的操作系统214/230的映像的部分。一旦外部媒体装置405使用映像生成器程序415来更新适配的OS映像470以包括在计算装置201上执行的操作系统214/230的属性,该被更新的适配的OS映像470于是可包括在计算装置201上执行的操作系统214/230的属性和单元。因而,在一些实施例中,适配的OS映像470可包括至少一部分驱动程序、配置、应用文件,和在计算装置201上执行的操作系统214/230的其他属性。
映像生成器程序415在由主机计算装置201加载和引导的普通的OS映像410中执行。在一些实施例中,映像生成器415在普通的OS映像410的上下文中执行,使得当普通的OS 410引导时该普通的OS实例化映像生成器415的实例。在其他实施例中,该映像生成器程序415可从在计算装置201上执行的操作系统214/230产生适配的OS映像470。在一些实施例中,该适配的OS映像470可以是包括主机计算装置201的OS 214的映像的OS映像,该OS映像根据在计算装置201上执行的操作系统214/230的文件、程序、配置和服务来更新。生成器程序415在执行时可访问计算装置201的硬件层210中的硬件资源。因而,映像生成器415可访问计算装置201上的物理存储器216并且可以从物理存储器216复制一个或多个文件到外部媒体装置405。
在一些实施例中,映像生成器415可分析计算装置201的操作系统214/230以确定在外部媒体装置405上的适配的OS映像470是否与计算装置201的操作系统214/230相匹配。在一些实施例中,当映像生成器415确定了外部媒体装置405的适配的OS映像470与计算装置201的操作系统214/230相匹配时,映像生成器415将不更新外部媒体装置405的适配的OS映像470。在其他实施例中,当映像生成器415确定外部媒体装置405的适配的OS映像470与计算装置201的操作系统214/230不相匹配时,该映像生成器415可用计算装置201的操作系统214/230的映像来更新外部媒体装置405的适配的OS映像470。在其他实施例中,一旦确定适配的OS映像470不匹配计算装置201的操作系统214/230,则映像生成器415可删除该适配的OS映像470,且复制计算装置201的操作系统214/230的映像。在一些实施例中,如果外部媒体装置405上不存在来源于主机计算装置201的OS的适配的OS映像,则映像生成器415创建新的适配的OS映像470。在一些实施例中,对于不同计算装置的多个适配的OS映像470存储在外部媒体装置405上。在其他实施例中,对于不同计算装置的多个适配的OS映像470存储在服务器上且由客户机代理415通过网络访问。
在一些实施例中,外部媒体装置405可包括流客户机425,该流式客户机425可用于从外部存储库或计算机流式传输应用,或可用于从外部媒体装置405向计算装置201流式传输适配的OS映像470和/或应用文件和数据。在一些实施例中,流客户机425可将流式传输的应用互相隔开。在另一个实施例中,该流客户机425可存储用户数据。在一些实施例中,映像生成器415可将流客户机425安装到外部媒体装置405的适配的OS映像470中。
在一些实施例中,外部媒体装置405可包括一个或多个现有的适配的OS映像470。该适配的OS映像470可以是先前会话期间来源于主机计算装置201的映像。在其他实施例中,该适配的OS映像470可以是从不同计算装置的OS所创建的映像。在一些实施例中,来源于非主机计算装置的计算装置的适配的OS映像470存储在外部媒体装置405上。在其他实施例中,只有预设数量的适配的OS映像470来源于非主机计算装置的计算装置。一旦达到阈值,客户机代理415可从外部媒体装置删除最老的适配的OS映像。在一些实施例中,适配的OS映像470在预定天数后从外部媒体装置清除。在一些实施例中,该天数由用户制定。在其他实施例中,该天数由管理员预定。在一些实施例中,用户可“锁定”适配的OS映像以使其不能从外部媒体装置删除。在一些实施例中,客户机代理可允许仅固定数量的适配的OS映像被存储在外部媒体装置上。在一些实施例中,适配的OS映像470可包括映像中的流客户机425。在其它实施例中,流客户机425被存储在适配的OS映像470之外。在一些实施例中,由映像生成器415将流客户机425安装到适配的OS映像470中。
一旦将流客户机425安装到适配的OS映像中,客户机代理415客户机425可在外部媒体装置上但在适配的OS映像470之外创建文件系统440。在一些实施例中,虚拟文件系统440存储于普通的OS映像410之外。在一些实施例中,该外部文件系统440可以是用于存储用户数据420的文件系统。在其他实施例中,该文件系统440可用于存储应用文件430。
在一些实施例中,用户数据420可以是用于存储用户数据的虚拟文件系统440。在一些实施例中,应用数据可与用户数据420一起存储于文件系统440中。在其他实施例中,用户数据420可包括用户配置、用户设定、用户应用文件、用户数据和其他用户信息。
在一些实施例中,外部媒体装置405可包括流式传输的应用430。虽然图4描述了包括流式传输的应用430的外部媒体装置405,在一些实施例中外部媒体装置405可以不包括流式传输的应用430。该流式传输的应用可包括残桩(stub)应用文件或主干应用(skeleton application)、完整应用程序,或执行应用所需的应用文件的部分。在一些实施例中,流式传输的应用430可与流式传输的应用数据结合用来执行特定应用。
在一些实施例中,虚拟化环境可包括用户数据420、流式传输的应用430、适配的OS映像410、虚拟文件系统440和主机计算装置201的硬件210的任何组合。
图5A描述了用于创建可从外部媒体装置405引导的安全虚拟化环境的方法500的实施例。在外部媒体装置405上的普通的0S映像410引导和执行主机计算装置201上的映像生成器415(步骤502)。该映像生成器415运行对主机计算装置201的分析来确定在内部物理盘204上的OS版本(步骤504)。基于该分析,映像生成器415更新适配的OS映像470(步骤506),并将流客户机425安装到适配的OS映像470中(步骤508)。客户机代理415产生虚拟文件系统(步骤510)。适配的OS映像470执行且计算装置201的用户可开始流式传输应用(步骤512)。
继续参考图5A,具体而言,在一个实施例中由计算装置201上的处理器208执行在外部媒体装置405上的普通的OS映像410,继而引发映像生成器415开始执行(步骤502)。在一些实施例中,一旦建立起外部媒体装置405和计算装置201之间的连接,计算装置201上的处理器208执行在外部媒体装置405上的OS映像410。在其他实施例中,一旦接收开始命令或其他来自用户的初始化命令,该处理器208开始执行OS映像410。一旦开始引导程序,OS映像410可引发映像生成器415开始执行。因而,在执行OS映像410时,处理器208也可以执行映像生成器415。在一些实施例中,当映像生成器415开始执行时,该映像生成器415访问计算装置201的硬盘204。
在一些实施例中,映像生成器415执行对于计算装置201的硬盘204的分析(步骤504)。在一些实施例中,该主机计算装置分析可确定在主机计算装置201上执行的OS 214/230是否基本与外部媒体装置405上的适配的OS映像470一致。在一些实施例中,映像生成器415将该操作系统的版本与适配的OS映像470的操作系统版本进行比较。在其他实施例中,在映像生成器415确定了操作系统214的版本对于主机计算装置201和适配的OS映像470是相同的之后,映像生成器415将主机操作系统的注册表和/或文件与OS映像410进行比较以识别应用或者软件或硬件组件的添加与删除。在一些实施例中,如果客户机代理415识别主机装置201的操作系统已经新安装了软件或硬件,该客户机代理记录那些添加的软件或硬件并且确定是否更改适配的OS映像470使其与主机装置的OS相一致。在一些实施例中,响应于经由对话框、命令提示符、或其他从用户接受信息的方式接收用户指令来更新适配的OS映像470。在其他实施例中,如果映像生成器415识别主机装置201已经从它的系统移除了软件或硬件,客户机代理415会从适配的OS映像470移除相应的数据。在一些实施例中,客户机代理415可自动地从适配的OS映像470移除数据。在其他实施例中,客户机代理415可以仅在接收到来自用户的指令(通过显式的命令或其他来自用户的输入)后从适配的OS映像470移除数据。在一些实施例中,客户机代理415可将由客户机代理415识别的数据移动到在外部媒体装置405上的虚拟文件系统440中的不同文件夹,或移动到诸如网络服务器或数据库的位于外部媒体装置405之外的位置。
在一个实施例中,在先前使用外部媒体装置405引导安全虚拟化环境的情况下,适配的OS映像470由映像生成器415已经进行更新以包括在计算装置201上执行的OS 214/230的映像。在该情况下,外部媒体装置405的适配的OS映像470包括在计算装置201上执行的OS 214/230的映像的一部分。而且,在该情况下,映像生成器415不对适配的OS映像470进行更新。在另一情况下,适配的OS映像470可以不包括在主机计算装置201上执行的OS 214/230的映像。因而,该适配的OS映像470可被替换或更新以包括这样的映像。在计算装置201的硬盘204上运行该分析可允许映像生成器415确定在适配的OS映像470中映射哪个版本的OS。OS的版本可进一步允许映像生成器415确定是否更新外部媒体装置405的适配的OS映像470。在一些实施例中,该分析可包括确定是否有病毒、间谍软件,或损坏的文件存在于计算装置201上。在一些实施例中,客户机代理415自动地移除计算装置201上的病毒、间谍软件,或损坏的文件。在其他实施例中,客户机代理415仅在接收来自用户的指令后移除或更改所识别的文件。在其他实施例中,客户机代理415不更改主机机器201但存储与病毒、间谍软件,或损坏的文件相关的数据到数据库或其他存储装置中。在一些实施例中,客户机代理415自动地移除任何无关的或过时的文件以进一步减少适配的OS映像470的大小。在其他实施例中,在对适配的OS映像470进行任何更改之前,客户机代理415提示用户确定是否要移除或删除任何数据或文件。
在一些实施例中,当映像生成器415确定适配的OS映像470应被更新,映像生成器415可根据在计算装置201上执行的OS 214/230来更新适配的OS映像470(步骤506)。在一个实施例中,更新适配的OS映像470包括删除在外部媒体装置405上的适配的OS映像470的实例并用计算装置201的OS 214/230的映像将其替换。在一些实施例中,删除OS映像470可包括保留用户数据420。在其他实施例中,更新适配的OS映像470可包括用计算装置201的OS 214/230的映像更新基础OS映像410。在一个实施例中,映像生成器415可减少或排除来自计算装置201的OS 214/230的OS映像的文件从而移除重复和不必要的文件。通过这种方式,映像生成器415可减少OS映像的大小。而且,减少文件可包括排除病毒、间谍软件或任何损坏的文件。在其他实施例中,更新适配的OS映像470可包括使普通的OS映像470成为虚拟环境的C驱动器或者主驱动器。
在更新适配的OS映像470以包括计算装置201的OS的映像时,映像生成器415可将流客户机425安装到适配的OS映像470中(步骤508)。在一些实施例中,映像生成器415在安装流客户机425之前引导更新的、适配的OS映像470。在一些实施例中,该流客户机425可被直接安装到适配的OS映像470中。在其他实施例中,该流式客户机425可从外部媒体装置405或从其他位置通过网络104流式的传输。
在一些实施例中,客户机代理415可产生虚拟文件系统从而在外部媒体装置405上存储用户数据420(步骤510)。在一些实施例中,流客户机425可产生虚拟文件系统,而在其他实施例中,映像生成器415可产生虚拟文件系统。在一些实施例中,该虚拟文件系统可产生于外部媒体装置405上但在普通的OS映像410之外。在一些实施例中,该虚拟文件系统通过网络与存储在不同装置的现有虚拟文件系统440同步。在一些实施例中,该虚拟文件系统在外部媒体装置405上创建时就与现有虚拟文件系统同步。在其他实施例中,虚拟文件系统在连接到具有网络和互联网功能的主机装置时,就与现有虚拟文件系统同步。
在产生适配的OS映像470时,该OS映像470可被引导且应用可被流式传输到所创建的虚拟化环境(步骤512)。在一些实施例中,流式应用可包括使用至少一部分用户数据420和/或流式应用数据430以及流式传输到外部媒体装置405的应用文件的组合来执行应用。在其他实施例中,流式应用文件可进一步包括将应用文件流式传输到计算装置201的处理器208。在一些实施例中,流式应用可包括执行来自网络服务器的应用。在其他实施例中,流客户机可通过网络从另一位置流式的传输应用。在一些实施例中,流客户机使用此处所述的技术和方法的任何组合流式传输应用。
在其中外部媒体装置405已经包括了在计算装置201上执行的OS214/230的映像470的实施例中,映像生成器可首先确定该映像是否创建于主机201的OS,并且随后可以从外部媒体装置405上的适配的OS映像470引导。从外部媒体装置405引导且执行分析可减少将应用文件和适配的OS映像470暴露给可能存在于计算装置201上的病毒的危险。在一些实施例中,客户机代理415更新适配的OS映像470以将外部媒体装置405映射为主驱动(home drive)或主硬盘。在一些实施例中,映射外部媒体驱动405的更新是响应于用户请求的。在其他实施例中,将外部媒体驱动405映射为主驱动的更新是响应于预定策略的。在其他实施例中,用户可指示如何表示外部媒体装置405,或者通过使用字母数字字符串命名该外部媒体驱动。在一些实施例中,所有的主机计算装置201存储装置和驱动对用户是隐藏的。在其他实施例中,用户被给予对主机计算装置文件的读权限但不被允许任何写权限。
现参考图5B,描述了用于创建可从外部媒体装置引导的安全虚拟化环境的方法550的实施例。简要概括,在步骤552,主机计算装置加载存储在外部媒体装置405上的普通的操作系统映像。在步骤554,主机计算装置201引导加载的普通的操作系统映像410。在步骤556,在普通的操作系统映像410中执行的客户机代理415通过复制主机计算装置201的操作系统214、排除不必要的文件和数据以及在外部媒体装置上存储该适配的操作系统映像470来创建适配的操作系统映像470。在步骤558主机计算装置201通过引导适配的操作系统映像470来提供安全虚拟化环境。
现参考图5B,具体而言,在步骤552,主机计算装置201加载存储在外部媒体装置上的普通的操作系统映像。在一些实施例中,该普通的OS映像410被自动加载。在其他实施例中,响应于用户请求加载普通的OS映像410。在一些实施例中,该普通的OS映像410可以是适配的OS映像470的旧版本。在其他实施例中,普通的OS映像410是具有有限功能的基础映像。
在步骤554,主机计算装置引导被加载的普通的操作系统映像。在一些实施例中,普通的OS映像410一旦被加载则自动被引导。在其他实施例中,响应于用户请求引导普通的OS映像410。在其他实施例中,响应于预定策略引导普通的OS映像410。在一些实施例中,一旦达到预定时间阈值就引导普通的OS映像410。
在步骤556,在普通的OS映像410中执行的客户机代理415通过复制主机计算装置201的OS 214、排除不必要的文件和数据以及在外部媒体装置405上存储适配的OS映像来创建该适配的OS映像470。在一些实施例中,在引导时,普通的OS映像就自动执行客户机代理415。在一些实施例中,该客户机代理存储于外部媒体装置405上。在其他实施例中,客户机代理415存储于其他计算装置上。普通的OS映像可通过网络104执行客户机代理415。在一些实施例中,客户机代理415存储于外部媒体装置405上但不在普通的OS映像410中。普通的OS映像410可执行来自任何(客户机代理所存储的)位置的客户机代理415。
在一些实施例中,适配的OS映像470可以存储在来自先前的会话的外部媒体装置405上。在一些实施例中,客户机代理415分析主机计算装置201的操作系统214以确定适配的OS映像470是否来源于主机计算装置201的OS。客户机代理415可比较操作系统的版本、操作系统现有文件的校验和、由客户机代理使用OS的各种识别信息创建的全局唯一标识符,或其他类似的识别方法。在一些实施例中,客户机代理确定适配的OS映像470不是来源于主机计算装置的OS且客户机代理415可从主机计算装置创建新的OS映像并将其存储在外部媒体装置405。在一些实施例中,客户机代理415删除现有的适配的OS映像且新的OS映像替代现有的适配的OS映像470。在一些实施例中,现有的适配的OS映像470被移动到外部媒体装置405上的不同位置。在其他实施例中,现有的适配的OS映像470通过网络104被传输且存储在不同的计算装置上。在一些实施例中,由客户机代理415实施分析期间,所有存储在外部媒体装置405上的现有的适配的OS映像被拿来与主机计算装置201的OS 214进行比较,以确定是否存在现有的适配的OS映像来源于主机计算装置201的OS。
在一些实施例中,在客户机415分析时,如果在外部媒体装置405上没有适配的OS映像470存在,客户机代理415创建新的来源于主机计算装置201的OS的OS映像。该客户机代理415创建OS 214的盘映像且删除所有对于OS映像保留功能不必要的文件。例如,客户机代理可从映像删除保存在OS 214中的任何用户首选项、诸如游戏的应用、存储在硬盘上的任何文件或数据(例如由另一用户存储在硬盘上的微软Word或Excel文档)。在一些实施例中,客户机代理415可提示用户确定哪些存在于主机计算装置上的应用被包括在适配的OS映像470中。在一些实施例中,没有一个存在于主机计算装置上的应用被包括在适配的OS映像470中。适配的OS映像470可仅包括基础映像和用于与主机计算装置201相关的任何装置的硬盘驱动,该装置诸如是打印机、监视器、无线键盘或鼠标,或者类似的装置。一旦客户机代理415完成适配的OS映像470的创建,其可将该映像保存到外部媒体装置405。在一些实施例中,适配的OS映像470可被存储到另一个计算装置并可通过网络104经由普通的OS映像410被访问。
在一些实施例中,如果适配的OS映像470存在于外部媒体装置405上,且在分析后客户机代理415确定了该适配的OS映像来源于来自先前会话的主机计算装置201的OS 214,该客户机代理识别适配的OS映像470和主机计算装置的OS的任何不同。如果客户机代理确定主机计算装置不再具有先前可用的组件(例如,如果主机计算装置不再具有HP打印机且当前关联网络打印机),客户机代理415将从适配的OS映像470移除所识别的组件。在一些实施例中,客户机代理415会在对适配的OS映像470做出任何更改前提示用户。在其他实施例中,客户机代理415可自动地对适配的OS映像470做出更改。在一些实施例中,可响应于已有策略对适配的OS映像470自动做出更改。在一些实施例中,客户机代理可确定在适配的OS映像470和主机计算装置201之间没有差别。在一些实施例中,普通的OS映像410和适配的OS映像470可以是相同的OS映像。在其他实施例中,适配的OS映像470和普通的OS映像410可以是有区别且不同的OS映像。
在步骤558,主机计算装置201通过引导新创建的或更新的适配的OS映像470提供可从外部媒体装置引导的安全环境。
在一些实施例中,客户机代理415将流客户机安装到适配的操作系统映像470中。在一些实施例中,在适配的OS映像470的创建期间该流客户机被自动安装。在其他实施例中,流客户机425在客户机415的分析期间被安装到适配的OS映像中。在一些实施例中,从外部媒体装置405执行流客户机。
在一些实施例中,映像生成器415产生虚拟文件系统。在一些实施例中,该虚拟文件系统被存储在外部媒体装置405上。在一些实施例中,虚拟文件系统已经存在于外部媒体装置405上。在这样的情况下,客户机代理415可更新现有的虚拟文件系统440。在其他实施例中,为每个其中外部媒体装置405被连接到主机计算装置201的会话创建虚拟文件系统440。在一些实施例中,该客户机代理415删除现有的虚拟文件系统440并产生新的虚拟文件系统440。在一些实施例中,客户机代理415在更改、删除,或产生新的虚拟文件系统440之前提示用户。在其他实施例中,客户机代理415响应于现有策略自动更改、删除,或产生虚拟文件系统440。
在一些实施例中,流客户机425流式传输存储在外部媒体装置405上的应用430。在其他实施例中,该流客户机425通过网络104流式传输存储在服务器上的应用430。在一些实施例中,流式客户机425使用外部媒体装置405上的信息和通过网络104传输的信息的组合流式传输应用430。
在一些实施例中,虚拟文件系统440可被存储在外部媒体装置405上。在其他实施例中,该虚拟文件系统440可被存储在服务器上。在一些实施例中,可使用外部媒体装置405和任何其他除主机计算装置外的计算装置的组合来存储虚拟文件系统440。在一些实施例中,该虚拟文件系统440可被存储在普通的OS映像中。在一些实施例中,该虚拟文件系统440可被存储在适配的OS映像470中。在一些实施例中,该虚拟文件系统440被存储在外部媒体装置405上在适配的OS映像470之外。
在一些实施例中,客户机代理415分析主机计算装置201的OS 214来确定是否有病毒、间谍软件或损坏的文件存在于主机计算装置上。如果有恶意或损坏的文件存在于主机计算装置201上,客户机代理415保证它们不会被发送到外部媒体装置405或包括在适配的OS映像470中。在一些实施例中,客户机代理415可从主机计算装置201移除该损坏的或恶意文件。在一些实施例中,客户机代理415可在移除或更改主机计算装置201之前提示用户。在一些实施例中,客户机代理415收集关于恶意或损坏的文件的信息并且将该信息存储在外部媒体装置405上。在一些实施例中,客户机代理415将该信息发送给另一个计算装置。
在一些实施例中,客户机415自动更新适配的操作系统映像470以将外部媒体装置405映射为主硬盘。在一些实施例中,客户机代理415提示用户用字母数字字符串命名该外部媒体装置405。在其他实施例中,客户机代理415更新适配的OS映像470来将外部媒体装置405显示为主驱动器,通常以C:驱动器表示。
虽然已经描述了某些示例性实施例并在附图中示出,应理解这些实施例仅是示意性且并不限制于此处描述的方法和系统。此外,以硬件、可编程装置、固件、软件或其组合实现此处所述的方法和系统或其一些特征是可能的。此处所述的方法和系统以及此处所述的方法和系统的部分也可实现为处理器可读存储介质或机器可读介质,诸如磁(例如硬盘驱动器、软盘驱动器)、光(例如高密度盘、数字多用盘等),或半导体存储介质(挥发性储存和非挥发性储存)。

Claims (20)

1.一种用于在主机装置上创建安全虚拟化环境而无需更改该主机装置的方法,所述安全虚拟化环境可从外部媒体装置引导,所述方法包括:
(a)由主机计算装置加载存储在所述外部媒体装置上的普通的操作系统映像;
(b)由所述主机计算装置引导所加载的普通的操作系统映像;
(c)由在所述普通的操作系统映像中执行的客户机代理通过复制所述主机计算装置的操作系统、排除不必要的文件和数据,且将适配的操作系统映像存储在所述外部媒体装置上来创建适配的操作系统映像;以及
(d)由所述主机计算装置通过引导所述适配的操作系统映像来提供安全虚拟化环境。
2.根据权利要求1所述的方法,还包括:
(e)由所述客户机代理将流客户机安装到所述适配的操作系统映像中;
(f)由所述客户机代理产生虚拟文件系统;以及
(g)由所述流客户机从安全虚拟化环境流式传输应用。
3.根据权利要求2所述的方法,还包括由所述客户机代理将所述虚拟文件系统存储到所述外部媒体装置上所述适配的操作系统映像和所述普通的操作系统映像之外。
4.根据权利要求2所述的方法,还包括通过流式应用利用存储在所述外部媒体装置上的所述虚拟文件系统中所存储的用户数据。
5.根据权利要求1所述的方法,还包括由所述客户机代理分析所述主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于所述主机计算装置上。
6.根据权利要求1所述的方法,还包括由所述客户机代理更新所述适配的操作系统映像以将所述外部媒体装置映射为主硬盘。
7.根据权利要求1所述的方法,还包括由所述客户机代理确定现有的适配的操作系统映像不是来源于所述主机计算装置的操作系统并且从所述外部媒体装置排除该现有的适配的操作系统映像。
8.一种用于在主机装置上创建安全虚拟化环境而无需更改该主机装置的方法,所述安全虚拟化环境可从外部媒体装置引导,所述方法包括:
(a)由主机计算装置加载存储在所述外部媒体装置上的普通的操作系统映像;
(b)由所述主机计算装置引导加载的普通的操作系统映像;
(c)由在所述普通的操作系统映像中执行的客户机代理确定在所述外部媒体装置上的适配的操作系统映像来源于所述主机计算装置的操作系统;
(d)由所述客户机代理识别所述主机计算装置的操作系统与所述适配的操作系统映像之间的区别;
(e)由所述客户机代理更改所述适配的操作系统映像以与所述主机计算装置的操作系统相符合;以及
(f)由所述主机计算装置通过引导所述适配的操作系统映像来提供安全虚拟化环境。
9.根据权利要求8所述的方法,还包括:
(g)由所述客户机代理将流客户机安装到所述适配的操作系统映像中;
(h)由所述客户机代理产生虚拟文件系统;以及
(i)由所述流客户机从安全虚拟化环境流式传输应用。
10.根据权利要求9所述的方法,还包括由所述客户机代理将所述虚拟文件系统存储到所述外部媒体装置上所述适配的操作系统映像和所述普通的操作系统映像之外。
11.根据权利要求9所述的方法,还包括通过流式应用利用存储在所述外部媒体装置上的所述虚拟文件系统中所存储的用户数据。
12.根据权利要求8所述的方法,还包括由所述客户机代理分析所述主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于所述主机计算装置上。
13.根据权利要求8所述的方法,还包括由所述客户机代理更新所述适配的操作系统映像以将所述外部媒体装置映射为主硬盘。
14.一种用于在主机装置上创建安全虚拟化环境而无需更改该主机装置的系统,所述安全虚拟化环境可从外部媒体装置引导,所述系统包括:
主机计算装置
加载存储在外部媒体装置上的普通的操作系统映像;
引导加载的普通的操作系统映像;以及
通过引导适配的操作系统映像来提供安全虚拟化环境;和
外部媒体装置,包括
映像生成器
确定所述适配的操作系统映像来源于所述主机计算装置的操作系统;
识别所述主机计算装置的操作系统与所述适配的操作系统映像之间的区别;以及
响应于该识别更新所述适配的操作系统映像。
15.根据权利要求14所述的系统,其中所述映像生成器将流客户机安装到所述适配的操作系统映像中;所述映像生成器产生虚拟文件系统;且所述流客户机从安全虚拟化环境流式传输应用。
16.根据权利要求15所述的系统,其中所述映像生成器确定所述适配的操作系统映像不是来源于所述主机计算装置的操作系统,通过使用所述主机计算装置的操作系统创建新的操作系统映像来更新所述适配的操作系统映像,并且用该新的操作系统映像替换所述适配的操作系统映像。
17.根据权利要求15所述的系统,其中所述映像生成器将所述虚拟文件系统存储到所述外部媒体装置上所述适配的操作系统映像和所述普通的操作系统映像之外。
18.根据权利要求15所述的系统,其中流式应用利用存储在所述外部媒体装置上的所述虚拟文件系统中所存储的用户数据。
19.根据权利要求14所述的系统,其中所述映像生成器分析所述主机计算装置的操作系统来确定是否有病毒、间谍软件或损坏的文件存在于所述主机计算装置上。
20.根据权利要求14所述的方法,其中所述映像生成器更新所述适配的操作系统映像以将所述外部媒体装置映射为主硬盘。
CN201080063775.3A 2009-12-14 2010-12-14 可从外部媒体装置引导的安全虚拟化环境 Active CN102754077B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28621009P 2009-12-14 2009-12-14
US61/286210 2009-12-14
PCT/US2010/060329 WO2011075484A2 (en) 2009-12-14 2010-12-14 A secure virtualization environment bootable from an external media device

Publications (2)

Publication Number Publication Date
CN102754077A true CN102754077A (zh) 2012-10-24
CN102754077B CN102754077B (zh) 2015-11-25

Family

ID=44167925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080063775.3A Active CN102754077B (zh) 2009-12-14 2010-12-14 可从外部媒体装置引导的安全虚拟化环境

Country Status (4)

Country Link
US (2) US8560826B2 (zh)
EP (1) EP2513789B1 (zh)
CN (1) CN102754077B (zh)
WO (1) WO2011075484A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105393258A (zh) * 2013-07-01 2016-03-09 高通股份有限公司 用于提供对图形处理单元的安全访问控制的系统和方法
CN109643238A (zh) * 2016-10-18 2019-04-16 惠普发展公司,有限责任合伙企业 经由射频识别芯片的操作系统安装
CN110325964A (zh) * 2017-04-04 2019-10-11 甲骨文国际公司 虚拟配置系统和方法
CN110633131A (zh) * 2019-09-16 2019-12-31 东软集团股份有限公司 一种对固件进行虚拟化的方法、装置、设备及系统
CN111052080A (zh) * 2017-08-31 2020-04-21 奈飞公司 用于对媒体项执行自定义算法的可伸缩技术
CN116009899A (zh) * 2023-01-04 2023-04-25 北京首都在线科技股份有限公司 操作系统的镜像制作方法、装置、电子设备及存储介质

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707457B2 (en) * 2010-05-09 2014-04-22 Citrix Systems, Inc. Methods and systems for forcing an application to store data in a secure storage location
US9311107B2 (en) * 2011-09-12 2016-04-12 Microsoft Technology Licensing, Llc Booting devices via the cloud
US9904557B2 (en) * 2011-09-30 2018-02-27 International Business Machines Corporation Provisioning of operating systems to user terminals
CN102726027B (zh) * 2011-12-28 2014-05-21 华为技术有限公司 虚拟机全盘加密下预启动时的密钥传输方法和设备
US8819062B2 (en) * 2012-01-03 2014-08-26 Yext, Inc. Providing enhanced business listings with structured lists to multiple search providers from a source system
DE102012200155A1 (de) * 2012-01-05 2013-07-11 Continental Automotive Gmbh Rechnersystem und Verfahren zum Betreiben eines Rechnersystems
JP5670369B2 (ja) * 2012-03-08 2015-02-18 株式会社東芝 情報処理装置、イメージファイル管理方法およびプログラム
WO2013174437A1 (en) * 2012-05-24 2013-11-28 Telefonaktiebolaget L M Ericsson (Publ) Enhanced secure virtual machine provisioning
KR102017631B1 (ko) * 2012-09-03 2019-09-03 삼성전자주식회사 데이터 통신을 위한 단말 장치 및 방법
US9117093B2 (en) * 2012-09-26 2015-08-25 Ca, Inc. Centralized, policy-driven maintenance of storage for virtual machine disks (VMDKS) and/or physical disks
TWI544337B (zh) * 2012-10-25 2016-08-01 緯創資通股份有限公司 共用通用串列匯流排(usb)裝置之雙作業系統架構,以及雙作業系統架構共用通用串列匯流排(usb)裝置之方法
US9230112B1 (en) 2013-02-23 2016-01-05 Xilinx, Inc. Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US9336010B2 (en) 2013-03-15 2016-05-10 Xilinx, Inc. Multi-boot or fallback boot of a system-on-chip using a file-based boot device
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US9292323B2 (en) * 2013-05-17 2016-03-22 Citrix Systems, Inc. Context aware virtual desktop
US9152794B1 (en) 2013-09-05 2015-10-06 Xilinx, Inc. Secure key handling for authentication of software for a system-on-chip
US9537885B2 (en) 2013-12-02 2017-01-03 At&T Intellectual Property I, L.P. Secure browsing via a transparent network proxy
US9411688B1 (en) 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US10924340B1 (en) * 2013-12-30 2021-02-16 Vmware, Inc. Extending computing capacity via cloud replication
US9934056B2 (en) * 2014-01-06 2018-04-03 Red Hat Israel, Ltd. Non-blocking unidirectional multi-queue virtual machine migration
US20150261952A1 (en) * 2014-03-13 2015-09-17 Unisys Corporation Service partition virtualization system and method having a secure platform
US9319380B2 (en) 2014-03-20 2016-04-19 Bitdefender IPR Management Ltd. Below-OS security solution for distributed network endpoints
KR102209840B1 (ko) * 2014-04-22 2021-02-01 삼성전자주식회사 가상화 서비스 제공 장치 및 그 방법
US9009836B1 (en) * 2014-07-17 2015-04-14 Kaspersky Lab Zao Security architecture for virtual machines
US10474651B2 (en) 2014-07-31 2019-11-12 Hewlett-Packard Development Company, L.P. Analysis of system information
CN107567616A (zh) 2015-06-26 2018-01-09 惠普发展公司,有限责任合伙企业 操作系统管理
KR101787470B1 (ko) * 2016-02-15 2017-11-16 한국전자통신연구원 Usb로 연결된 외부 장치 기반의 악성코드 분석 장치 및 이를 이용한 방법
US10503237B2 (en) 2017-02-13 2019-12-10 Gbs Laboratories, Llc Mobile device virtualization solution based on bare-metal hypervisor with optimal resource usage and power consumption
US11086974B2 (en) * 2017-09-25 2021-08-10 Splunk Inc. Customizing a user behavior analytics deployment
US10887369B2 (en) 2017-09-25 2021-01-05 Splunk Inc. Customizable load balancing in a user behavior analytics deployment
US10834081B2 (en) * 2017-10-19 2020-11-10 International Business Machines Corporation Secure access management for tools within a secure environment
DE102021207046A1 (de) * 2021-07-05 2023-01-05 Siemens Healthcare Gmbh Upgraden oder Updaten einer Software-Anwendung
US12015525B2 (en) * 2022-08-02 2024-06-18 Centurylink Intellectual Property Llc Enhanced pre-loading for edge gateways in communications networks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126242A1 (en) * 2001-12-28 2003-07-03 Chang Albert H. Network boot system and method using remotely-stored, client-specific boot images created from shared, base snapshot image
US20080172555A1 (en) * 2007-01-17 2008-07-17 Erink Technologies, Llc Bootable thin client personal initialization device
CN101398770A (zh) * 2007-09-30 2009-04-01 赛门铁克公司 迁移一个或多个虚拟机的系统和方法
US20090125902A1 (en) * 2007-03-01 2009-05-14 Ghosh Anup K On-demand disposable virtual work system

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792761B2 (ja) 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
US5900024A (en) 1996-11-07 1999-05-04 Oracle Corporation Method for processing type-ahead input and operation-abort input
JPH11255392A (ja) 1998-03-09 1999-09-21 Isowa Corp シートスタッカのシート積上げ装置、サクションコンベア及びサクションベルト
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6453392B1 (en) 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US6633984B2 (en) 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
KR20040080283A (ko) 2003-03-11 2004-09-18 황병순 개인 휴대 단말기를 이용한 컴퓨터 원격제어 시스템 및 그방법
US7464412B2 (en) 2003-10-24 2008-12-09 Microsoft Corporation Providing secure input to a system with a high-assurance execution environment
US7784060B2 (en) 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US7644407B2 (en) 2004-03-05 2010-01-05 Intel Corporation Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US20050216920A1 (en) 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US7363491B2 (en) 2004-03-31 2008-04-22 Intel Corporation Resource management in security enhanced processors
US20050228921A1 (en) 2004-03-31 2005-10-13 Prashant Sethi Sharing of interrupts between operating entities
JP2005309553A (ja) 2004-04-19 2005-11-04 Hitachi Ltd 計算機
US20050246453A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
US7574610B2 (en) 2004-09-30 2009-08-11 Microsoft Corporation Security state watcher
US7757231B2 (en) 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US20060200616A1 (en) 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US7631173B2 (en) * 2005-03-09 2009-12-08 Wyse Technology Inc. Method and system for performing pre-boot operations from an external memory including memory address and geometry
US7587595B2 (en) 2005-05-13 2009-09-08 Intel Corporation Method and apparatus for providing software-based security coprocessors
US7716377B2 (en) 2005-05-25 2010-05-11 Harris Steven T Clustering server providing virtual machine data sharing
US7937701B2 (en) 2005-06-30 2011-05-03 Intel Corporation ACPI communication between virtual machine monitor and policy virtual machine via mailbox
KR100792786B1 (ko) 2005-08-26 2008-01-14 이철호 백업 이미지 파일을 이용한 컴퓨터의 최적화 운영체제 복구방법
US7380049B2 (en) 2005-09-06 2008-05-27 Intel Corporation Memory protection within a virtual partition
EP1963962B1 (en) 2005-12-23 2018-11-14 Intel Corporation Changing a scheduler in a virtual machine monitor
US7496613B2 (en) * 2006-01-09 2009-02-24 International Business Machines Corporation Sharing files among different virtual machine images
US8566608B2 (en) 2006-02-02 2013-10-22 Strikeforce Technologies, Inc. Methods and apparatus for securing keystrokes from being intercepted between the keyboard and a browser
US20070240212A1 (en) 2006-03-30 2007-10-11 Check Point Software Technologies, Inc. System and Methodology Protecting Against Key Logger Spyware
CN100464295C (zh) 2006-05-17 2009-02-25 联想(北京)有限公司 一种基于虚拟机的安全输入方法
GB0615015D0 (en) 2006-07-28 2006-09-06 Hewlett Packard Development Co Secure use of user secrets on a computing platform
US20080126614A1 (en) 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US7840795B2 (en) 2006-10-17 2010-11-23 Zachary Nathaniel Joseph Peterson Method and apparatus for limiting access to sensitive data
US20110047618A1 (en) * 2006-10-18 2011-02-24 University Of Virginia Patent Foundation Method, System, and Computer Program Product for Malware Detection, Analysis, and Response
US7865663B1 (en) 2007-02-16 2011-01-04 Vmware, Inc. SCSI protocol emulation for virtual storage device stored on NAS device
US8099274B2 (en) 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
KR100775887B1 (ko) * 2007-07-31 2007-11-13 주식회사 셀런 임베디드시스템에서 하드디스크를 이용한 운영체계 로딩 및업데이트 방법
US8307443B2 (en) 2007-09-28 2012-11-06 Microsoft Corporation Securing anti-virus software with virtualization
US20090204964A1 (en) 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8539098B2 (en) 2007-10-17 2013-09-17 Dispersive Networks, Inc. Multiplexed client server (MCS) communications and systems
BRPI0818582A2 (pt) 2007-10-20 2015-07-21 Citrix Systems Inc Métodos e sistemas para exibir remotamente dados gráficos tridimensionais
US8839237B2 (en) 2007-12-31 2014-09-16 Intel Corporation Method and apparatus for tamper resistant communication in a virtualization enabled platform
US20090210888A1 (en) 2008-02-14 2009-08-20 Microsoft Corporation Software isolated device driver architecture
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US8261320B1 (en) 2008-06-30 2012-09-04 Symantec Corporation Systems and methods for securely managing access to data
US8364802B1 (en) * 2008-09-23 2013-01-29 Gogrid, LLC System and method for monitoring a grid of hosting resources in order to facilitate management of the hosting resources
US7904914B2 (en) 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
US8799691B2 (en) 2009-01-07 2014-08-05 Hewlett-Packard Development Company, L.P. Hierarchical power management
US20110029699A1 (en) 2009-07-31 2011-02-03 Siegman Craig S Method and System for Routing Keystrokes in a Client Server Network
US8629878B2 (en) 2009-08-26 2014-01-14 Red Hat, Inc. Extension to a hypervisor that utilizes graphics hardware on a host
EP2513810B1 (en) 2009-12-14 2016-02-17 Citrix Systems, Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US20120240224A1 (en) 2010-09-14 2012-09-20 Georgia Tech Research Corporation Security systems and methods for distinguishing user-intended traffic from malicious traffic
RU2477929C2 (ru) 2011-04-19 2013-03-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ предотвращения инцидентов безопасности на основании рейтингов опасности пользователей

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126242A1 (en) * 2001-12-28 2003-07-03 Chang Albert H. Network boot system and method using remotely-stored, client-specific boot images created from shared, base snapshot image
US20080172555A1 (en) * 2007-01-17 2008-07-17 Erink Technologies, Llc Bootable thin client personal initialization device
US20090125902A1 (en) * 2007-03-01 2009-05-14 Ghosh Anup K On-demand disposable virtual work system
CN101398770A (zh) * 2007-09-30 2009-04-01 赛门铁克公司 迁移一个或多个虚拟机的系统和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105393258A (zh) * 2013-07-01 2016-03-09 高通股份有限公司 用于提供对图形处理单元的安全访问控制的系统和方法
CN105393258B (zh) * 2013-07-01 2018-05-25 高通股份有限公司 用于提供对图形处理单元的安全访问控制的系统和方法
CN109643238A (zh) * 2016-10-18 2019-04-16 惠普发展公司,有限责任合伙企业 经由射频识别芯片的操作系统安装
CN110325964A (zh) * 2017-04-04 2019-10-11 甲骨文国际公司 虚拟配置系统和方法
CN110325964B (zh) * 2017-04-04 2023-08-22 甲骨文国际公司 虚拟配置系统和方法
CN111052080A (zh) * 2017-08-31 2020-04-21 奈飞公司 用于对媒体项执行自定义算法的可伸缩技术
CN111052080B (zh) * 2017-08-31 2023-10-13 奈飞公司 用于对媒体项执行自定义算法的可伸缩技术
CN110633131A (zh) * 2019-09-16 2019-12-31 东软集团股份有限公司 一种对固件进行虚拟化的方法、装置、设备及系统
CN116009899A (zh) * 2023-01-04 2023-04-25 北京首都在线科技股份有限公司 操作系统的镜像制作方法、装置、电子设备及存储介质
CN116009899B (zh) * 2023-01-04 2023-09-15 北京首都在线科技股份有限公司 操作系统的镜像制作方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN102754077B (zh) 2015-11-25
WO2011075484A2 (en) 2011-06-23
EP2513789A2 (en) 2012-10-24
WO2011075484A3 (en) 2011-10-27
US8924703B2 (en) 2014-12-30
US20140032893A1 (en) 2014-01-30
US8560826B2 (en) 2013-10-15
EP2513789B1 (en) 2019-10-23
US20110265183A1 (en) 2011-10-27
EP2513789A4 (en) 2016-09-14

Similar Documents

Publication Publication Date Title
CN102754077A (zh) 可从外部媒体装置引导的安全虚拟化环境
CN102368201B (zh) 虚拟化环境中存储优化选择
CN102446121B (zh) 根据用户指定的虚拟机指标分配虚拟机
CN102754104B (zh) 在相关计算系统之间共享计算操作结果的系统和方法
CN102202049B (zh) 用于多虚拟机设备的网络策略实现
US8375063B2 (en) Method and program product for migrating data from a legacy system
CN109522088A (zh) 一种虚拟机迁移方法及装置
CN104765620A (zh) 一种程序模块部署的方法和系统
CN104487943A (zh) 受信文件间接操作
CN104981776A (zh) 对个人虚拟磁盘的系统更新
CN104731658A (zh) 供应和合并共享资源以最大化资源可用性的方法和系统
CN105227672B (zh) 数据存储及访问的方法和系统
US20220004411A1 (en) Hot Growing A Cloud Hosted Block Device
Eadline Hadoop 2 Quick-Start Guide: Learn the Essentials of Big Data Computing in the Apache Hadoop 2 Ecosystem
Goldman Learning Proxmox VE
JP6909001B2 (ja) 協調モデリングのための表計算ツールマネージャ
CN104424012A (zh) 用于提供自定义虚拟装置的方法和设备
Gavanda et al. Mastering VMware vSphere 6.7: Effectively deploy, manage, and monitor your virtual datacenter with VMware vSphere 6.7
Carbone et al. Windows Server 2008 Hyper-V Resource Kit
Katz Deploying Mass Spectrometric Data Analysis in the Amazon AWS Cloud Computing Environment
Chang et al. Private small-cloud computing in connection with winCE thin client
WO2024144421A1 (ru) Способ и система автоматизированной миграции информационной инфраструктуры предприятия в облачный сервис
Zhang et al. Towards enumeration of NTFS using USN journals under UEFI
Sosinsky et al. Microsoft windows server 2008: Implementation and administration
JP2024538679A (ja) ジャストインタイムコンパイルプロセスの最適化

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant