CN101551754A - 虚拟软件子层的动态插入和去除 - Google Patents

虚拟软件子层的动态插入和去除 Download PDF

Info

Publication number
CN101551754A
CN101551754A CNA2009101330205A CN200910133020A CN101551754A CN 101551754 A CN101551754 A CN 101551754A CN A2009101330205 A CNA2009101330205 A CN A2009101330205A CN 200910133020 A CN200910133020 A CN 200910133020A CN 101551754 A CN101551754 A CN 101551754A
Authority
CN
China
Prior art keywords
virtual
sublayer
level
described virtual
virtual sublayer
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
CNA2009101330205A
Other languages
English (en)
Other versions
CN101551754B (zh
Inventor
兰德尔·R·库克
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.)
CAI Software LLC
Original Assignee
Symantec Corp
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 Symantec Corp filed Critical Symantec Corp
Publication of CN101551754A publication Critical patent/CN101551754A/zh
Application granted granted Critical
Publication of CN101551754B publication Critical patent/CN101551754B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及虚拟软件子层的动态插入和去除。在一个示例中,在计算装置中虚拟地安装和激活与软件应用相关联的虚拟层。在所述虚拟层中动态地插入与所述软件应用的部件相关联的虚拟子层。所述虚拟层在所述虚拟子层的动态插入期间保持活动的。在特定的实施例中,从所述虚拟层执行过程,确定是否在所述虚拟子层的所述插入之前或者之后启动了所述过程,并且根据所述确定来选择性地使得所述被插入的虚拟子层对于所述过程可见或者不可见。

Description

虚拟软件子层的动态插入和去除
背景技术
在计算中,当将软件更新(例如软件补丁)应用到被安装到计算机并且在计算机上运行的软件应用时,通常必须关闭软件应用和从所述软件应用运行的所有的过程,以使得更新被应用和/或变得有效。这种关闭和所导致的停机时间对于软件应用和过程的正常使用和操作会产生较大的中断。
对于维护具有大量计算机和/或用户的计算机系统的管理员或者组织而言,这样的与向软件应用来应用更新相关联的问题更为严重。在这样的计算机系统中,在计算机系统上的软件应用和相关联的过程的协同关闭会过度地增加负担和干扰。
附图说明
附图示出了各种实施例,并且是说明书的一部分。所示出的实施例仅仅是示例,而不限定本发明的范围。在全部附图中,相同或者类似的附图标号表示相同或者类似的元件。
图1示出了被配置用于虚拟软件子层的动态插入和去除的示例性计算系统。
图2A示出了在计算装置环境中的示例性虚拟系统。
图2B示出了在其中虚拟地安装了虚拟层的图2A的计算装置环境。
图2C示出了其中激活了虚拟层的图2B的计算装置环境。
图2D示出了其中在虚拟层中插入了虚拟子层的图2C的计算装置环境。
图2E示出了图2D的计算装置环境,其中,虚拟子层被配置来用于对于从虚拟层执行的过程而言的选择性的可见性和不可见性。
图3示出了与在虚拟层中的虚拟子层的动态插入相关的示例性事件的时间线。
图4A-C示出了与在图3中的事件相关联的各种插入阶段。
图5A-C示出了在虚拟层中插入的虚拟子层的选择性的可见性和不可见性。
图6示出了与向虚拟层动态插入虚拟子层/从虚拟层动态去除虚拟子层相关的示例性事件的时间线。
图7A-B示出了被标注为要从虚拟层去除的虚拟子层的选择性的可见性和不可见性。
图8示出了一种虚拟软件子层的动态插入的示例性方法。
图9示出了一种虚拟软件子层的动态去除的示例性方法。
具体实施方式
本公开涉及虚拟软件子层的动态插入和去除。可以以多种方式来实现在此公开的示例,包括作为一个或多个过程、设备、系统、装置、方法、计算机可读介质或者在计算机可读介质上包含的计算机程序产品。在此描述在计算机可读介质上实现的示例性系统、装置、计算机程序产品,以及用于动态插入和/或去除软件子层的方法。
在此使用的术语“软件”和“软件应用”广义地表示在一个或多个计算机可读介质上包含的任何计算机可读指令的集合,所述指令可被计算装置执行。如所公知,所述计算装置可以从软件应用执行一个或多个过程。软件应用可以包括一个或多个计算机程序和所述计算机程序的任何部件和/或从所述计算机程序运行的任何过程。软件应用的“部件”可以包括与软件应用相关联的或者可以被应用到软件应用的特征、数据或者功能的任何子集。在特定的实施例中,软件应用的部件可以包括可以被应用到软件应用的一个或多个更新(例如软件补丁)。
软件的“虚拟化”表示执行一个或多个操作以向计算装置虚拟地安装软件,从而可以方便地激活(即“启动”或者“接通”)或者去激活(即“禁止”或者“关断”)所述软件和/或所述软件的一个或多个部件。当激活虚拟安装的软件时,一般从基本文件系统和配置向已经被虚拟地安装了所述软件的一个或多个存储器位置重新定向与虚拟安装的软件相关联的访问请求。当无效所述虚拟安装的软件时,不重新定向访问请求,而是允许其穿过而到达基本文件系统和配置。
如下更详细所述,软件应用可以被虚拟化为虚拟层,可以激活所述虚拟层,从而与从所述软件应用执行的过程相关联的访问请求可以从基本文件系统和配置被重新定向到所述虚拟层。与软件应用的部件(例如诸如软件补丁的更新)相关联的虚拟子层可以被动态地插入虚拟层中,并且在逐个过程的基础上有选择性地应用,而不关闭所述软件应用或者从所述软件应用执行的过程。在特定的实施例中,虚拟子层的选择性应用可以包括:确定是否在虚拟子层的动态插入之前或者之后启动了从软件应用执行的过程,并且根据所述确定来选择性地使得所插入的虚拟子层对于所述过程可见或者不可见。在特定的示例中,可以使得虚拟子层对于在插入之前启动的过程不可见,而对在插入之后启动的过程可见。
在上述或者类似的方式中,可以在与虚拟化的和被激活的软件应用相关联的活动的虚拟子层中动态地插入与软件应用的部件相关联的虚拟子层,而不必终止从软件应用执行的过程或者去激活虚拟层。即,虚拟层可以在插入期间保持活动的。因此,可以在通常避免与更新软件应用的传统方式相关联的不便、中断和困难的同时,在运行中应用软件应用的部件(例如更新)。
以类似的方式,可以从与虚拟化的和被激活的软件应用相关联的活动的虚拟层动态地去除与软件应用的部件相关联的虚拟子层,而不必去激活虚拟层。即,虚拟层可以在去除期间保持活动的。因此,可以在通常避免与卸载软件应用或者软件应用的分量的传统方式相关联的不便、中断和困难的同时,软件应用的部件(例如更新)可以在运行中解除应用。
现在转向附图,图1示出了被配置用于在此所述的虚拟软件子层的动态插入和去除的示例性计算系统100(或者简称为“系统100”)。如图所示,计算系统100可以包括软件管理子系统110,其可通信地耦接到计算装置120-1到120-N(统称为“计算装置120”)。软件管理子系统110和计算装置120可以使用任何适当的通信技术来彼此通信。例如,软件管理子系统110和计算装置120可以使用任何适当的通信技术通过网络130进行通信,所述通信技术包括能够支持在此所述的过程和通信的适当的网络通信技术、装置、信号和协议。网络130可以包括能够在连接到网络130的装置之间承载通信信号的任何类型、数量和配置的网络,包括但是不限于局域网、广域网、对等网络、无线网络、数据网络、企业内部互联网、因特网及其组合或者子组合。在其他实施例中,软件管理子系统110和计算装置120可以诸如通过通信总线或者其他通信链路而直接地通信。
在特定的实施例中,计算系统100可以包括任何计算机硬件和/或指令(例如软件程序)或者软件和硬件的组合,其被配置为执行在此所述的过程。具体地,应当理解系统100可以包括多个计算装置中的任何一个,并且可以使用多个计算操作系统中的任何一个,所述计算机操作系统包括但是决不限于Microsoft Windows、UNIX、Macintosh和Linux操作系统的已知版本和/或变化形式。
因此,在此所述的过程和/或操作可以至少部分地被实现为在计算机可读介质上包含并且可由一个或多个计算装置执行的指令,例如一个或多个计算机程序产品。一般地,处理器(例如微处理器)例如从存储器、计算机可读介质等接收指令,并且执行那些指令,由此执行一个或多个过程或者操作,包括在此所述的一个或多个过程和/或操作。可以使用多种已知的计算机可读介质来存储和发送这样的指令。
一种计算机可读介质(也称为处理器可读介质)包括参与提供可以被计算机(例如被计算机的处理器)读取的数据(例如指令)的任何介质。这样的介质可以采取多种形式,包括但是不限于非易失性介质、易失性介质和传输介质。非易失性介质可以包括例如光学或者磁盘和其他永久性存储器。易失性介质可以包括例如动态随机存取存储器(“DRAM”),其通常构成主存储器。传输介质可以包括例如同轴电缆、铜线和光纤,其中包括包含耦合到计算机的处理器的系统总线的导线。传输介质可以包括或者传送声波、光波和电磁发射,诸如在射频(“RF”)和红外(“IR”)数据通信期间产生的那些。计算机可读介质的通常形式包括例如软盘、软磁盘、硬盘、磁带、任何其他磁介质、CD-ROM、DVD、任何其他光学介质,打孔卡、纸带、具有孔图案的任何其他物理介质、RAM、PROM、EPROM、闪存EEPROM、任何其他的存储器芯片或者盒式存储器或者从其可以读取计算机的任何其他介质。
虽然在图1中示出了示例计算系统100,但是在图1中示出的示例部件不意欲是限定性的。事实上,可以使用附加或者替代的部件、实现方式或者计算系统来实现在此所述的原理和过程。
软件管理子系统110可以包括一个或多个装置或者被实现在一个或多个装置中,所述一个或多个装置包括被配置通过网络130与计算装置120通信的一个或多个装置。在特定的实施例中,例如,软件管理子系统110可以包括一个或多个服务器装置或者被包含在一个或多个服务器装置上,所述一个或多个服务器装置可以被配置来操作服务器软件,诸如由Symantec公司的分公司Altiris公司提供的
Figure A20091013302000101
Notification ServerTM软件。软件管理子系统110可以包括在一个或多个计算机可读介质上包含的计算机可读指令(例如一个或多个计算机程序产品),并且可以被配置来执行在一个或多个计算机可读介质上包含的计算机可读指令(例如一个或多个计算机程序产品)。计算机可读指令可以被配置来将与软件和/或软件的部件的虚拟化和/或部署相关联的一个或多个操作的执行引导到计算装置120,其中,所述软件和/或软件的部件的虚拟化和/或部署包括在计算装置120中安装和激活的虚拟层中部署表示用于动态插入的虚拟子层的数据。因此,诸如系统100的管理员的软件管理子系统110的用户可以使用软件管理子系统110来控制用于虚拟化和/或通过网络130向计算装置120部署软件应用和/或软件应用的部件的操作。
例如,软件管理子系统110可以接收或者访问由诸如软件应用的制造商或者分发商的实体分发的软件应用。例如,可以通过因特网下载来访问软件应用。在用户的指导下,软件管理子系统110可以通过网络130向计算装置120中的一个或多个发送软件应用。可以使用任何适当的技术以任何可接受的形式来发送用于表示软件应用的数据。
在特定实施例中,软件管理子系统110可以被配置来向计算装置120发送用于安装软件应用的可执行安装文件。在这样的实施例中,计算装置120可以被配置来虚拟化软件应用。在其他实施例中,软件管理子系统110可以被配置来虚拟化软件应用,并且向计算装置120输出用于表示被虚拟化的软件应用的数据。计算装置120可以将被虚拟化的软件应用存储到一个或多个存储器位置,以虚拟地向计算装置120安装所述被虚拟化的软件应用。在其他实施例中,软件管理子系统110和计算装置120可以划分虚拟化操作。因此,软件管理子系统110和/或计算装置120可以执行与虚拟化软件应用相关联的一个或多个软件虚拟化操作。
软件应用的虚拟化可以包括捕获软件应用,所述软件应用在特定的实施例中可以包括:捕获用于软件应用的可执行安装文件,并且产生软件应用的一个或多个虚拟层。这可以以在2003年6月11日提交并在2006年10月3日授权的美国专利第7,117,495号中所描述的任何方式来执行,其公开通过引用而整体被包含在此。虚拟层可以包括软件应用的一个或多个部件(例如程序文件、可执行文件、配置文件、配置信息、设置等)可以被存储到其中的一个或多个文件夹、子层或者目录。虚拟层可以被存储到一个或多个存储器位置,以虚拟地安装虚拟层。如下进一步所述,所述存储器位置与和计算装置120的基本文件系统和配置库相关的存储器位置相分离。
捕获软件应用的过程可以包括:产生映射数据,所述映射数据可以用于将通过虚拟化的软件应用产生的访问请求从基本文件系统和配置库重新定向到与一个或多个虚拟层相关联的其他存储器位置。因此,从虚拟化的软件应用执行的过程可以使用在虚拟层中包括的内容,而不改变或者使用基本文件系统和配置库。虚拟安装也可以包括:基于虚拟层所存储的存储器位置来产生、更新和/或存储映射数据。所述映射数据可以被配置用于将访问请求重新定向到与虚拟层相关联的存储器位置。可以在计算装置120上方便地激活和去激活虚拟安装的虚拟层,如下更详细所述。
按照在此所述的原理,可以通过下述方式来更新虚拟安装的以及被激活的与软件应用相关联的虚拟层:通过在虚拟层中动态地插入一个或多个虚拟子层和/或通过从虚拟层动态地去除一个或多个虚拟子层。作为示例,软件管理子系统110可以接收和部署软件更新部件(例如软件补丁)到计算装置120。如上所述,软件管理子系统110可以捕获软件更新部件,建立与所述更新部件相关联的虚拟子层,并且向计算装置输出表示虚拟子层的数据。可选地,可以向计算装置120部署软件更新部件可执行安装文件,计算装置120可以捕获所述可执行文件,并且产生与更新部件相关联的虚拟子层。可选地,软件管理子系统110和计算装置120划分用于捕获软件更新部件并且产生虚拟子层的操作。
可以在与软件应用相关联的活动的虚拟层中动态地插入与软件更新部件相关联的虚拟子层,而不去激活虚拟层和/或而不终止从软件应用执行的过程。即,虚拟层可以在虚拟子层的动态插入期间保持活动。可以在逐个过程的基础上选择性地应用或者不应用虚拟子层,如下更更详细的描述。以类似的方式,可以从活动的虚拟层动态地去除所插入的虚拟层,而不去激活虚拟层,如下更更详细的描述。
为了更详细地说明在活动的虚拟层中动态插入虚拟子层/从活动的虚拟层动态地去除虚拟子层,现在参考图2A-E来说明示例性软件虚拟化系统200和虚拟化的软件的示例性配置。可以在包括任何计算装置120的一个或多个适当的计算装置的计算装置环境中实现在图2A-E所示的软件虚拟化系统200和示例性配置。计算装置120可以包括能够执行在此所述的过程和/或操作的任何硬件和计算指令(例如一个或多个计算机程序产品),所述一个或多个过程和/或操作包括与软件管理子系统110通信,并且虚拟化和/或操作一个或多个虚拟化的软件应用和/或其部件,其中包括如在此所述的从软件应用执行一个或多个过程。计算装置120可以包括但是决不限于个人计算机、工作站、个人数字助理或者具有处理器、存储器、输入和输出装置以及至少一个硬盘的任何装置。可以考虑,将在此所述的原理应用到使用在此公开的方法和原理的这些和其他计算系统和装置,其中包括已有的和将要开发的这些和其他计算系统和装置。同样,虽然下面许多示例指的是具有单个基本文件系统和配置的计算装置,但是下面公开的概念、原理和示例可以被扩展以在几个或者许多文件系统和/或配置(例如注册表)上提供软件虚拟化,包括虚拟软件子层的动态插入和/或去除。
如图2A中所示,虚拟化系统200可以在具有形成平台的基本操作系统(“基本OS”)210的示例计算装置环境中实现,利用所述平台可以运行一个或多个应用程序220(例如软件应用),并且可以在文件系统中访问文件。在特定的实施例中,基本OS 210包括Microsoft Windows操作系统软件。
基本OS 210可以包括对于用于读取和写入操作的应用220全局地可获得的基本配置设置(例如注册表设置)和文件。基本OS 210的所述配置设置和文件可以被包括在基本文件系统和配置库230中,基本文件系统和配置库230也被称为基本文件系统和配置230,用于执行基本OS 210的功能,并且基本OS 210的所述配置设置和文件可以包括文件系统、诸如注册表的配置设置和其他操作系统功能。包括基本OS 210的基本文件和配置设置的基本文件系统和配置库230可以被存储到在计算装置120的存储器中的特定位置。
如图2A中所示,虚拟化系统200可以包括虚拟化引擎240,其可以包括任何硬件(例如处理器)、在计算机可读介质上包括的计算机可读指令(例如计算机程序产品)或者其组合,其被配置为执行在此公开的一个或多个操作。在特定的实施例中,虚拟化引擎240可以被实现为安装到计算装置120的软件代理。
虚拟化引擎240可以被配置为执行一个或多个软件虚拟化操作或者指导其执行,所述一个或多个软件虚拟化操作包括在此公开的那些的任何一个。作为示例,在特定实施例中,虚拟化引擎240可以被配置为虚拟化软件应用,其中包括执行下面的操作中的的任何一个和/或指导下面操作的任何一个的执行:捕获软件应用和/或其部件,产生一个或多个虚拟层和/或虚拟子层,虚拟地安装虚拟层和/或子层(例如通过将它们存储到存储器位置),并且产生映射数据,所述映射数据用于将访问请求从基本文件系统和配置230重新定向到虚拟层和/或子层。在特定示例中,虚拟化引擎240可以接收软件应用的非虚拟化的软件可执行安装文件,并且执行上述步骤以虚拟化所述软件应用。在其他示例中,虚拟化引擎240可以从软件管理子系统110接收用于表示一个或多个虚拟层和/或子层的输出数据,并且虚拟地安装虚拟子层和/或子层(例如通过将它们存储到一个或多个存储器位置)。虚拟化引擎240可以被配置为执行在此公开的、用于虚拟子层的动态插入和/或去除的操作中的任何一个。
可以将虚拟化引擎240配置为截取来自应用程序220的访问请求(例如文件系统和注册表访问请求),并且根据预定的映射数据来确定向哪里重新定向访问请求。因此,虚拟化引擎240可以选择性地将对于基本文件系统和配置230的内容的访问请求重新定向到虚拟安装和被激活的软件应用和/或其部件的内容,其中所述虚拟安装和被激活的软件应用和/或其部件的内容已经被存储在存储器中的分立和隔离的位置,诸如在虚拟层和/或子层中。在特定的实施例中,软件应用和/或其部件的虚拟安装和激活允许透明地执行重新定向,从而软件应用和计算装置120的操作系统不知道所述重新定向。
在特定的实施例中,虚拟化引擎240与基本文件系统和配置230和/或基本OS 210相关联。作为示例,虚拟化引擎240的至少一部分可以被实现为在操作系统内核级上的一个或多个驱动器(例如过滤驱动器),并且被配置为监控在基本文件系统和配置库230中存储的文件和配置设置的输入和输出请求。这可以通过监控通过OS内核I/O子系统的调用来完成。在特定的实施例中,可以至少部分地基于例如在上述的美国专利第7,117,495号中包括的教导来实现用于截取和重新定向访问请求的功能。
图2A示出了具有虚拟化引擎240的虚拟化系统200,虚拟化引擎240被配置为在计算环境中其中没有虚拟安装或者激活的软件应用的状态下工作。因此,虚拟化引擎240一般被配置为允许从应用程序220继续对于在基本文件系统和配置230中的内容作出访问请求。
图2B示出了在其中软件应用被虚拟地安装到计算装置120来作为虚拟层250的阶段中的计算系统100。可以从任何适当的源并且以任何可接受的形式接收用于表示应用程序和/或虚拟层250的数据,所述任何可接受的形式包括通过从软件管理子系统110经由网络130的传输。
如上所述,虚拟化引擎240可以执行如上所述的虚拟化操作的任何一个,以虚拟化软件应用。在一些示例中,这可以包括:创建软件应用的虚拟层250,向虚拟层250存储应用程序的内容,并且产生和存储用于虚拟层250的映射数据260。如图2B所示,在一些实施例中,可以在虚拟层250中存储映射数据260。或者,可以在虚拟层250外部的另一个位置存储映射数据260。在其他示例中,虚拟化引擎240可以从软件管理子系统110接收虚拟层250,并且通过将其存储到存储器位置来虚拟地安装虚拟层250。
映射数据260可以包括可能有助于识别在存储器中访问请求应当被引导到的适当位置(例如虚拟层250)的任何信息。在映射数据260中的信息可以以对于用于重新定向访问请求、激活虚拟层250和去激活虚拟层250的信息以适当的任何方式被格式化和组织。在特定的实施例中,映射数据260包括被组织的信息的一个或多个表格,从而可以通过索引、关键字或者其他标准来搜索所述信息。
作为产生映射数据260的一个示例,假定软件应用包括特定应用对象(例如DLL文件),其被设计来替换作为基本文件系统和配置230的一部分的文件对象。在应用的虚拟安装期间,虚拟化引擎240和/或软件管理子系统110可以识别所述文件对象和/或其位置(例如路径名)、应用对象和/或其在虚拟层250中的位置以及在文件对象和应用程序对象和/或其各自位置之间的关系。对于所识别的信息的参考可以被记录和被包括作为映射数据260的一部分。以这种或者另一种适当的方式,可以说映射数据260限定在虚拟层250的内容和基本文件系统和配置230的内容之间的关系。
在特定的实施例中,虚拟层250的激活包括:通过将映射数据260应用到虚拟化引擎240来激活与虚拟层250相关联的映射数据260。在图2C中,通过移动映射数据260或者将映射数据260的拷贝注入虚拟化引擎240中来表示映射数据260的激活。在特定的实施例中,这包括将映射数据260注入虚拟化引擎240的操作系统内核过滤驱动器中。
在虚拟层250被激活的情况下,虚拟化引擎240被配置来选择性地将与相应的软件应用相关联的访问请求从基本文件系统和配置230重新定向到虚拟层250。例如,虚拟化引擎240可以截取来自应用220的访问请求,所述请求包括对于基本文件系统和配置230的特定文件对象或者存储器位置的引用。虚拟化引擎240可以使用激活的映射数据260来确定是否所述引用与活动的虚拟层250相关联。可以任何适当的方式来执行这种确定,包括搜索映射数据260以查找所述引用。如果发现匹配,则虚拟化引擎240可以将访问请求重新定向到在虚拟层250中的相应对象。所述相应对象可以因此被访问和被返回到应用程序220,应用程序220不知道已经发生重新定向。
由于各种原因,可能期望使用与虚拟层250相关联的软件应用的部件来更新虚拟层250。例如,软件补丁或者其他更新对于软件应用可以变得是可获得的。更新软件应用的传统方式一般要求关闭软件应用和/或去激活虚拟层250,以向软件应用来应用更新部件。不幸的是,关闭软件应用和/或去激活虚拟层250以应用更新会大大地和不期望地中断软件应用和虚拟层250的正常使用和操作,特别是在多用户的计算环境中。
按照在此所述的原理,可以在活动的虚拟层250中动态地插入一个或多个虚拟子层,而不需去激活虚拟层250或者关闭相关联的软件应用。图2D示出了图2C的计算装置环境,其中在活动的虚拟层250中插入虚拟子层270。虚拟子层270可以和与虚拟层250相关联的软件应用的虚拟部件相关联。例如,软件应用的软件更新(例如软件补丁)可以被虚拟化以形成虚拟子层270。可以使用如上所述的虚拟化操作中的任何一个来执行软件部件的虚拟化。可以诸如通过向与虚拟层250相关联的一个或多个存储器位置存储用于表示虚拟子层270的数据,或者通过将虚拟子层270与虚拟层250相关联,虚拟地安装虚拟子层270。
虚拟子层270的插入可以包括:考虑到虚拟子层270而配置虚拟化引擎240和/或映射数据260,并且允许虚拟子层270的动态插入和选择性应用。具体地,可以配置虚拟化引擎240以选择性地在逐个过程的基础上应用虚拟子层270。因此,可以动态地执行虚拟子层270的插入,而不在虚拟子层270的插入期间去激活虚拟层250或者终止从虚拟层250执行的过程。在特定的实施例中,虚拟化引擎240可以被配置为根据从虚拟层250执行的过程的属性来选择性地应用虚拟子层270。例如,虚拟化引擎240可以被配置为向在插入虚拟子层270后启动的过程选择性地应用虚拟子层270,并且限制将虚拟子层270应用到在虚拟子层270的插入之前启动的过程。当将虚拟子层270应用到过程时,所述过程使用插入后的虚拟层250,其包括被插入的虚拟子层270。即,虚拟化引擎240一般将与所述过程相关联的访问请求引导到插入后的虚拟层250,被插入后的虚拟层250具有所插入的虚拟子层270。当未将虚拟子层270应用到过程时,所述过程使用插入之前的虚拟层250,所述插入之前的虚拟层250不具有插入的虚拟子层270。即,虚拟化引擎240一般将与所述过程相关联的访问请求引导到在虚拟子层270的插入之前所存在的虚拟层250。
可以以任何适当的方式来完成虚拟子层270的选择性应用。例如,虚拟子层270的插入可以包括利用与虚拟子层270相关联的信息来更新映射数据260。在特定的实施例中,可以更新映射数据260以包括用于根据与访问请求相关联的过程的一个或多个属性而有条件地路由访问请求的指令。例如,可以更新映射数据260以包括条件路由指令,所述条件路由指令被配置为根据与访问请求相关联的过程的一个或多个属性,选择性地将访问请求引导到与所插入的虚拟子层270相关联的存储器位置或者与插入前的虚拟层250相关联的另一个存储器位置。
作为另一个示例,虚拟子层270的插入可以包括:向虚拟化引擎240提供另一组映射数据。图2E示出了在将映射数据280应用到虚拟化引擎240的情况下的图2D的计算环境。如图所示,虚拟化引擎240可以包括映射数据260和映射数据280。在这种配置中,映射数据260可以被配置来将访问请求引导到在插入之前的虚拟层250,并且映射数据280可以被配置为将访问请求引导到插入后的虚拟层250,在该插入后的虚拟层250中插入了虚拟子层270。虚拟化引擎240可以被配置为根据与访问请求相关联的过程的一个或多个属性而选择性地利用映射数据260或者映射数据280来路由访问请求。
上述示例仅仅是说明性的。可以在其他实施例中使用用于选择性地应用所插入的虚拟子层270的任何适当方式。
在特定的实施例中,虚拟化引擎240被配置为使用过程启动时间属性来选择性地应用或者不应用虚拟子层270。在一些示例中,虚拟子层270的插入可以包括:虚拟化引擎240识别和创建从在虚拟子层270的插入之前的虚拟层250执行的过程的列表(即“插入之前的列表”)。所述列表可以包括在插入之前启动并且在插入时从虚拟层250仍然执行的过程。虚拟化引擎240可以使用所述列表来确定在虚拟子层270的插入之前启动的过程,以选择性地不向所述过程应用虚拟子层270。例如,虚拟化引擎240可以接收过程的访问请求,并且查询过程的列表。如果所述过程包括在所述列表中,则虚拟化引擎240将不向所述过程应用虚拟子层270。虚拟化引擎240可以被配置为诸如通过从所述列表去除被终止的过程来更新所述列表。
在其他示例中,虚拟化引擎240可以被配置为识别过程启动时间,并且将启动时间与虚拟子层270的插入时间相比较。在特定的示例中,可以进行比较,并且可以当虚拟化引擎240从软件应用执行的过程接收访问请求时动态地进行确定。在其他示例中,可以进行比较,并且预先创建过程的一个或多个列表。所述列表可以包括在插入之前启动的过程的列表,诸如如上所述的插入之前的列表,然后当虚拟化引擎240接收来自软件应用执行的过程的访问请求时,可以查询所述列表,查询结果用于确定是否向访问请求应用或者不应用虚拟子层270。
为了进一步说明虚拟子层270的选择性逐个过程的应用,图3示出了与在虚拟层250中的虚拟子层270的动态插入相关联的事件的示例时间线。如图3所示,虚拟层250可以被虚拟地安装和激活。可以以如上所述的任何方式来完成这一点。当虚拟层250为活动的时,可以从虚拟层250启动和执行过程310-1和310-2。然后可以以如上所述的任何方式来将虚拟子层270动态地插入虚拟层250中,而不终止过程310-1和310-2,并且不去激活虚拟层250。在虚拟层250中动态插入虚拟子层270之后,可以从虚拟层250启动和执行过程310-3。
图4A-C进一步示出了与虚拟层250相关的事件的示例序列。图4A示出了在虚拟子层270的插入之前从活动的虚拟层250执行的过程310-1和310-2。图4B示出了在活动的虚拟层250中插入的虚拟子层270。图4C示出了在虚拟层270的插入之后,从虚拟层250启动和执行的过程310-3。
在出现在图3中示出的事件的情况下,虚拟化引擎240可以被配置为选择性地向过程310-1、310-2和310-3应用或者不应用被插入的虚拟子层270。例如,虚拟化引擎240以被配置为选择性地向在虚拟子层270的插入后启动的过程310-3应用虚拟子层270,并且选择性地禁止向在虚拟子层270的插入之前启动的过程310-1和310-2应用虚拟子层270。因此,可以在虚拟子层270的插入期间和之后继续从插入之前的虚拟层250执行现有的过程310-1和310-2,而不向过程310-1和310-2应用虚拟子层270。同时,可以从其中插入了虚拟子层270的插入后的虚拟层250执行新的过程,诸如在插入之后启动的过程310-3。
选择性地向过程应用或者不应用虚拟子层270可以被称为分别选择性地使得虚拟子层270对于所述过程可见或者不可见。图5A-C示出了虚拟子层270的选择性可见性和不可见性。图5A示出了虚拟子层270对于过程310-1的选择性不可见性。由过程310-1产生的访问请求510在如果所请求的内容不在虚拟层250中的情况下,可以被引导到虚拟层250,然后被引导到基本文件系统和配置230。如图所示,访问请求510被引导到插入之前的虚拟层250,并且看不到插入的虚拟子层270。类似地,图5B示出了虚拟子层270对于过程310-2的不可见性。以这种或者类似的方式,可以选择性地使得虚拟子层270对于过程310-1和310-2不可见。
图5C示出了虚拟子层270对于过程310-3的选择性的可见性。如果所请求的内容不在虚拟层250或者虚拟子层270中,则可以将由过程310-3产生的访问请求510引导到虚拟层250和虚拟子层270,然后引导到基本文件系统和配置230。如图所示,将访问请求510引导到在插入之后的虚拟层250,并且看到虚拟子层270。以这种或者类似的方式,可以选择性地使得虚拟子层270对于过程310-3可见。
可以从软件应用动态地去除虚拟化的和活动的软件应用的部件,而不关闭所述软件应用或者终止从所述软件应用执行的过程。这可以通过从与所述虚拟化的软件应用相关联的虚拟层250去除诸如虚拟子层270的虚拟子层来完成。在如上所述并且在图3中示出的示例中,例如,可以从虚拟层250动态地去除被插入的虚拟子层270。图6示出了与虚拟子层270在虚拟层250中的动态插入/从虚拟层250动态地去除相关联的事件的示例时间线。如图所示,在图6中的时间线可以包括图3的插入相关事件。具体地,虚拟子层270已经被动态地插入虚拟层250中,并且如上所述从虚拟层250执行过程310-1、310-2和310-3。
此处,可能期望从虚拟层250去除虚拟子层270。可以动态地完成这一点,而不去激活虚拟层250。图6示出了与虚拟子层270的动态去除相关联的事件。如图所示,可以将虚拟子层270标注为要去除。虚拟化引擎240可以被配置为以任何适当的方式来标注用于去除的虚拟子层270,包括设置与虚拟子层270相关联的去除变量的值。
一旦已经将虚拟子层270标注为要去除,则虚拟化引擎240可以被配置为根据过程的一个或多个属性来选择性地使得虚拟子层对于所述过程可见或者不可见。可以以任何适当的方式来完成在虚拟子层270已经被标注为要去除后选择性地使得其可见或者不可见。在特定的实施例中,虚拟化引擎240可以被配置为在已经将虚拟子层270标注为要去除后,使用过程启动时间属性来选择性地应用或者不应用虚拟子层270。在一些示例中,将虚拟子层270标注为要去除可以包括:虚拟化引擎240识别和创建从虚拟子层270的插入之前的虚拟层250执行的过程的列表,并且在将虚拟子层270标注为要去除之前使得虚拟子层270对于所述过程不可见(即“去除之前的列表”)。虚拟化引擎240可以使用所述列表来确定在将虚拟子层270标注为要去除之前虚拟子层270对于过程可见,并且选择性地继续向所述过程应用虚拟子层270。例如,虚拟化引擎240可以从过程接收访问请求,并且查询去除之前的过程的列表。如果所述过程被包括在所述列表中,则虚拟化引擎240将继续向所述过程应用虚拟子层270。
在图6所示的示例中,在将虚拟子层270标注为要去除之前,虚拟子层270对于过程310-3可见。因此,当虚拟子层270被标注为要去除时,在去除之前的列表可以包括过程310-3。相反,在将虚拟子层270标注为要去除之前,虚拟子层270对于过程310-1和310-2不可见。因此,当虚拟子层270被标注为要去除,则可以从去除之前的列表中省略过程310-1和310-2。基于这个列表,在已经将虚拟子层270标注为要去除之后,虚拟化引擎240可以继续使得虚拟子层270对于过程310-3可见。
在已经将虚拟子层270标注为要去除后,新的过程310-4可以从虚拟层250启动和执行,如图6所示。虚拟化引擎240可以根据在虚拟子层270已经被标注为要去除后启动的过程310-4来选择性地使得虚拟子层270对于过程310-4不可见。例如,虚拟化引擎240可以查询在去除之前的列表,并且确定过程310-4不包括在所述列表中。因此,虚拟化引擎240可以使得虚拟子层270对于过程310-4不可见。
图7A-B示出了在虚拟子层270已经被标注为从虚拟层250去除后虚拟子层270的选择性的可见性和不可见性。图7A示出了虚拟子层270对于现有的过程310-3的选择性的可见性。由过程310-3产生的访问请求510可以被引导到虚拟层250和虚拟子层270,然后如果在虚拟层250或者虚拟子层270中未发现所请求的内容,则被引导到基本文件系统和配置230。如图所示,访问请求510被引导到虚拟层250,并且看到虚拟子层270。以这种或者类似的方式,在已经将虚拟子层270标注为要去除后,可以继续使得虚拟子层270对于过程310-3可见。
图7B示出了虚拟子层270对于在虚拟子层270已经被标注为要去除后启动的新过程310-4的选择性的不可见性。如果在标注之后的虚拟层250中未发现所请求的内容,则由过程310-4产生的访问请求510可以被引导到虚拟层250,然后被引导到基本文件系统和配置230。如图所示,访问请求510被引导到虚拟层250,但是看不到虚拟子层270。以这种或者类似的方式,可以使得虚拟子层270对于过程310-4不可见。
虚拟化引擎240可以被配置为通过从列表去除被终止的过程而更新在去除之前的列表。返回到图6,在虚拟子层270已经被标注为要去除后,可以终止过程310-3。虚拟化引擎240可以检测过程310-3的终止,并且从在去除之前的列表将其去除。
虚拟化引擎240可以被配置为检测何时虚拟子层270可见的所有过程被终止。在图6的示例中,过程310-3是在虚拟子层270已经被标注为要去除后虚拟子层270可见的唯一过程。因此,当过程310-3终止时,从虚拟层250执行的剩余的过程310-1、310-2或者310-4都看不到虚拟子层270。虚拟化引擎240可以识别是这种情况。例如,虚拟化引擎240可以从在去除之前的列表去除过程310-3,并且确定在去除之前的列表是空的。
当虚拟化引擎240检测到虚拟子层270不再对于从虚拟层250执行的任何过程可见时,虚拟化引擎240可以从虚拟层250动态地去除(删除)虚拟子层270,如图6所示。可以动态地执行所述去除,而不在所述去除期间去激活虚拟层250。因此,从虚拟层250执行的过程可以在从虚拟层250去除虚拟子层270期间继续被执行。
可以以任何适当的方式来完成标注和从虚拟层250动态地去除虚拟子层270。在特定的实施例中,虚拟化引擎240被配置为更新映射数据260和/或映射数据280,以反映虚拟子层270已经被标注为要去除和/或被从虚拟层250去除。
在如上所述的任何示例中,虚拟化引擎240可以被配置为提供一个或多个图形用户界面(“GUI”),诸如弹出窗口,以呈现给用户。这样的GUI可以向用户提供用于控制软件虚拟化操作的一个或多个工具。作为示例,GUI可以提供对话,用于向用户请求许可,以请求和拿下(bring down)(例如下载)、虚拟地安装、使能、禁止和/或去除一个或多个虚拟子层270。在特定的实施例中,软件管理子系统110可以被配置为向软件管理子系统110的用户(例如计算系统100的管理员)提供类似的GUI和工具。
图8示出了虚拟子层的动态插入的示例方法。虽然图8示出了按照一个实施例的示例步骤,但是其他实施例可以省略、添加到、重新排序和/或修改在图8所示的步骤的任何一个。
在步骤810中,虚拟地安装虚拟层。可以以如上所述的方式的任何一种来执行步骤810,包括软件管理子系统110和/或向计算装置120虚拟地安装虚拟层250的虚拟化引擎240。
在步骤820中,激活虚拟层。可以以如上所述的任何方式来执行步骤820,映射数据260被应用到虚拟化引擎240以激活虚拟层250。
在步骤830,在虚拟层中动态地插入虚拟子层。可以以如上所述的任何方式来执行步骤830,包括软件管理子系统110通过网络130向计算装置110发送用于表示虚拟子层270的数据,虚拟化引擎240在活动的虚拟层250中动态地插入虚拟子层270,而不去激活虚拟层250。
在步骤840中,从虚拟层执行过程。可以以如上所述的任何方式来执行步骤840,包括计算装置120从虚拟层250执行所述过程。
在步骤850,确定是否在将虚拟子层动态插入虚拟层中之前或者之后启动了过程。可以以如上所述的任何方式来执行步骤850。
在步骤860,根据在步骤850中进行的确定来选择性地使得被插入的虚拟子层对于过程可见或者不可见。可以以如上所述的任何方式来执行步骤860,包括虚拟化引擎240选择地将与过程相关联的访问请求引导到在插入之前的虚拟层250或者其中插入了虚拟子层270的在插入之后的虚拟层250。在特定的示例中,当确定过程已经在步骤830的插入之前启动时,步骤860可以包括使得虚拟子层对于所述过程不可见。在其他示例中,步骤860可以包括:当确定过程已经在步骤830的插入后启动时,使得虚拟子层对于所述过程可见。
图9示出了虚拟子层的动态去除的示例方法。虽然图9示出了按照一个实施例的示例性步骤,但是其他实施例可以省略、添加到、重新排序和/或修改在图9所示的步骤的任何一个。
在步骤910,将虚拟子层标注为要从虚拟安装的和活动的虚拟层去除。可以以如上所述的任何方式来执行步骤910,包括将虚拟子层270标注为要从虚拟层250去除,并且在将虚拟子层270标注为要去除之前创建现有过程的去除之前的列表,其中虚拟子层270对于所述现有过程可见。
在步骤920,从虚拟层执行过程。可以以如上所述的任何方式来执行步骤920,包括计算装置120从虚拟层250执行所述过程。
在步骤930,确定是否在步骤910将虚拟子层标注为要去除之前所述虚拟子层对于过程是可见的。可以以如上所述的任何方式来执行步骤930,包括查询所述过程的去除之前的列表。
在步骤940,根据在步骤930中进行的确定来选择性地使得被标注的虚拟子层对于过程可见或者不可见。可以以如上所述的任何方式来执行步骤940,包括虚拟化引擎240选择性地将与过程相关联的访问请求引导到其中虚拟子层270可见的虚拟层250或者其中虚拟子层270不可见的虚拟层250。在特定的示例中,步骤940可以包括:当确定在步骤910将虚拟子层标注为要去除之前虚拟子层已经对于过程可见时,使得所述虚拟子层对于所述过程可见。在其他示例中,步骤940可以包括:当确定在步骤910将虚拟子层标注为要去除之后已经启动过程时,使得虚拟子层对于所述过程不可见。
在步骤950,确定虚拟子层对于从虚拟层执行的任何过程是不可见的。可以如上所述的任何方式来执行步骤950,包括虚拟化引擎240识别过程的终止,从在去除之前的列表去除所述过程,并且识别在去除之前的列表为空。
在步骤960,动态地去除虚拟子层。可以如上所述的任何方式来执行步骤960,包括从虚拟层250去除虚拟子层270,而不去激活虚拟层250(即虚拟层250在去除期间保持活动的)。
前面的说明书仅仅被提供来参考附图说明和描述示例性实施例。但是,显然在不脱离在所附的权利要求中给出的本发明的范围的情况下,可以对其进行各种修改和改变,并且可以实现其他的实施例。因此,应将说明书和附图视为在说明性而不是限定性的意义。

Claims (20)

1.一种方法,包括:
向计算装置虚拟地安装与软件应用相关联的虚拟层;
激活所述虚拟层;并且
在所述虚拟层中动态地插入与所述软件应用的部件相关联的虚拟子层,其中,所述虚拟层在所述虚拟子层的所述动态插入期间保持活动。
2.根据权利要求1的方法,还包括:
从所述虚拟层执行过程;
确定是否在所述虚拟子层的所述插入之前或者之后启动了所述过程;并且
根据所述确定选择性地使得所述被插入的虚拟子层对于所述过程可见或者不可见。
3.根据权利要求2的方法,其中,所述根据所述确定选择性地使得所述被插入的虚拟子层对于所述过程可见或者不可见包括:
当确定所述过程已经在所述虚拟子层的所述插入之后被启动时,使得所述被插入的虚拟子层对于所述过程可见;并且
当确定所述过程已经在所述虚拟子层的所述插入之前被启动时,使得所述被插入的虚拟子层对于所述过程不可见。
4.根据权利要求2的方法,其中,所述过程在所述虚拟子层的所述插入之前被启动,所述方法还包括:在将所述虚拟子层动态插入所述虚拟层期间继续执行所述过程。
5.根据权利要求4的方法,还包括:
从所述虚拟层执行另一个过程;
确定所述另一个过程已经在所述虚拟子层的所述插入之后被启动;并且
根据所述另一个过程已经在所述虚拟子层的所述插入之后被启动的所述确定来选择性地使得所述被插入的虚拟子层对于所述另一个过程可见。
6.根据权利要求1的方法,其中,所述部件包括所述软件程序的更新。
7.根据权利要求1的方法,还包括:
将所述被插入的虚拟子层标注为要从所述虚拟层去除;
确定所述虚拟子层对于从所述虚拟层执行的任何过程不可见;并且
从所述虚拟层动态地去除所述虚拟子层,其中,所述虚拟层在所述虚拟子层的动态去除期间保持活动。
8.根据权利要求1的方法,还包括:
将所述被插入的虚拟子层标注为要从所述虚拟层去除;
从所述活动的虚拟层执行过程;
确定所述虚拟子层在将所述虚拟子层标注为要去除之前对于所述过程已经可见;并且
根据所述虚拟子层在将所述虚拟子层标注为要去除之前对于所述过程已经可见的所述确定,选择性地继续使得所述被标注的虚拟子层对于所述过程可见。
9.根据权利要求8的方法,还包括:
从所述活动的虚拟层执行另一个过程;
确定所述另一个过程已经在将所述虚拟子层标注为要去除之后被启动;并且
根据所述另一个过程已经在将所述虚拟子层标注为要去除之后被启动的所述确定,选择性地使得所述被标注的虚拟子层对于所述另一个过程不可见。
10.一种方法,包括:
动态地将虚拟子层插入到在计算装置中虚拟安装和激活的虚拟层中,其中,所述虚拟层与软件应用相关联,并且所述虚拟子层与所述软件应用的部件相关联;
从所述虚拟层执行至少一个过程;并且
选择性地使得所述被插入的虚拟子层对于所述至少一个过程可见或者不可见。
11.根据权利要求10的方法,其中,所述至少一个过程包括从所述虚拟层执行的多个过程,所述多个过程包括第一过程和第二过程,并且其中选择性地使得所述虚拟子层对于所述第一过程不可见而对于所述第二过程可见。
12.根据权利要求11的方法,还包括:
确定已经在所述虚拟子层的所述动态插入之前启动了所述第一过程;并且
确定已经在所述虚拟子层的所述动态插入之后启动了所述第二过程;
其中,根据所述确定,选择性地使得所述虚拟子层对于所述第一过程不可见,并且对于所述第二过程可见。
13.根据权利要求12的方法,还包括:在将所述虚拟子层动态插入所述虚拟层期间,继续执行所述第一过程。
14.根据权利要求10的方法,其中,动态地插入所述虚拟子层,而不去激活所述虚拟层。
15.一种系统,包括:
虚拟层,其在计算装置中被虚拟地安装和激活,所述虚拟层与软件应用相关联;以及
所述计算装置中的虚拟化引擎,所述虚拟化引擎被配置为在所述活动的虚拟层中动态地插入与所述软件应用的部件相关联的虚拟子层。
16.根据权利要求15的系统,其中,所述计算装置被配置为从所述活动的虚拟层执行过程,并且其中,所述虚拟化引擎被配置为:
确定是否在所述虚拟子层的所述插入之前或者之后启动了所述过程,并且
根据所述确定,选择性地使得被插入的虚拟子层对于所述过程可见或者不可见。
17.根据权利要求16的方法,其中,所述虚拟化引擎被配置为:
当所述过程被确定已经在所述虚拟子层的所述插入之后被启动时,使得所述被插入的虚拟子层对于所述过程可见,并且
当所述过程被确定已经在所述虚拟子层的所述插入之前被启动时,使得所述被插入的虚拟子层对于所述过程不可见。
18.根据权利要求15的系统,其中,所述虚拟化引擎被配置为:
将所述被插入的虚拟子层标注为要从所述虚拟层去除,
确定所述虚拟子层对于从所述虚拟层执行的任何过程不可见,并且
从所述活动的虚拟层动态地去除所述虚拟子层。
19.根据权利要求15的系统,还包括可通信地耦接到所述计算装置的软件管理子系统,其中,所述软件管理子系统被配置为向所述计算装置提供用于表示所述虚拟子层的数据。
20.根据权利要求15的系统,其中,所述部件包括所述软件应用的软件补丁。
CN2009101330205A 2008-03-31 2009-03-31 虚拟软件子层的动态插入和去除 Active CN101551754B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/058,782 2008-03-31
US12/058,782 US8261254B2 (en) 2008-03-31 2008-03-31 Dynamic insertion and removal of virtual software sub-layers

Publications (2)

Publication Number Publication Date
CN101551754A true CN101551754A (zh) 2009-10-07
CN101551754B CN101551754B (zh) 2013-11-27

Family

ID=40743852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101330205A Active CN101551754B (zh) 2008-03-31 2009-03-31 虚拟软件子层的动态插入和去除

Country Status (4)

Country Link
US (2) US8261254B2 (zh)
EP (1) EP2107462A3 (zh)
JP (1) JP5363858B2 (zh)
CN (1) CN101551754B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103109514A (zh) * 2010-07-20 2013-05-15 弗里班德技术股份有限公司 应用程序活动系统

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248398B2 (en) 2008-04-07 2019-04-02 Blackberry Limited Method for virtualizing software applications
US20090300307A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation Protection and security provisioning using on-the-fly virtualization
US8239640B2 (en) * 2008-10-09 2012-08-07 Dataram, Inc. System for controlling performance aspects of a data storage and access routine
US8402458B1 (en) * 2009-03-18 2013-03-19 Symantec Corporation Methods and systems for converting non-layered-software-application installations into layered installations
US8429603B2 (en) * 2009-03-25 2013-04-23 International Business Machines Corporation Virtual typing executables
US8615740B2 (en) * 2009-03-25 2013-12-24 International Business Machines Corporation Self-fixing executables using virtual function types
US8612994B1 (en) * 2009-03-30 2013-12-17 Symantec Corporation Methods and systems for activating and deactivating virtualization layers
US8881140B1 (en) 2009-09-04 2014-11-04 Symantec Corporation Systems and methods for virtualizing software associated with external computer hardware devices
US9262187B2 (en) 2010-02-05 2016-02-16 Microsoft Technology Licensing, Llc Extension point declarative registration for virtualization
US9075635B1 (en) 2010-07-26 2015-07-07 Symantec Corporation Systems and methods for merging virtual layers
US9116725B1 (en) 2011-03-15 2015-08-25 Symantec Corporation Systems and methods for using virtualization of operating-system-level components to facilitate software testing
US9003149B2 (en) * 2011-05-26 2015-04-07 International Business Machines Corporation Transparent file system migration to a new physical location
US9298910B2 (en) * 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
RU2472215C1 (ru) 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
CA2920202A1 (en) * 2013-07-30 2015-02-05 FSLogix, Inc. Managing configurations of computing terminals
US9239715B1 (en) * 2013-09-25 2016-01-19 Amazon Technologies, Inc. Cancel and rollback update stack requests
US9223966B1 (en) 2014-05-04 2015-12-29 Symantec Corporation Systems and methods for replicating computing system environments
US10089476B1 (en) 2014-06-03 2018-10-02 Amazon Technologies, Inc. Compartments
CN107209694B (zh) * 2014-12-24 2022-03-08 皇家Kpn公司 用于控制按需服务供应的方法
US9459858B2 (en) * 2015-01-07 2016-10-04 International Business Machines Corporation Selectively hotpatching only a selection of processes of a running instance of an application that match a selection criteria
US10169347B2 (en) 2015-09-08 2019-01-01 International Business Machines Corporation Layer identification and dependency analysis for management of images
US9898272B1 (en) * 2015-12-15 2018-02-20 Symantec Corporation Virtual layer rollback
US9703546B1 (en) * 2015-12-21 2017-07-11 Schneider Electric Software, Llc Monitoring application states for deployment during runtime operations
CN108701278B (zh) 2015-12-28 2023-01-10 皇家Kpn公司 用于经由第二运营商网络向连接到第一运营商网络的用户设备提供服务的方法
US10296331B2 (en) * 2016-07-12 2019-05-21 International Business Machines Corporation Log-based software porting
US10437605B1 (en) * 2017-08-04 2019-10-08 Virtustream Ip Holding Company Llc Configurable startup, shutdown, reboot and isolation for applications in cloud-based information processing systems
US11307842B2 (en) * 2020-04-07 2022-04-19 Vmware, Inc. Method and system for virtual agent upgrade using upgrade proxy service
US20230305828A1 (en) * 2022-03-24 2023-09-28 Vmware, Inc. Virtual upgrade layer-based application upgrade

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US20030014669A1 (en) * 2001-07-10 2003-01-16 Caceres Maximiliano Gerardo Automated computer system security compromise
CN1953391A (zh) * 2005-10-20 2007-04-25 联想(北京)有限公司 计算机管理系统以及计算机管理方法
US20070180450A1 (en) * 2006-01-24 2007-08-02 Citrix Systems, Inc. Methods and systems for selecting a method for execution, by a virtual machine, of an application program

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128647A (en) 1996-04-05 2000-10-03 Haury; Harry R. Self configuring peer to peer inter process messaging system
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US6931546B1 (en) 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
JP2002041313A (ja) * 2000-07-28 2002-02-08 Matsushita Electric Ind Co Ltd 組込形ソフトウェアの制御方法
US20020083183A1 (en) 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US7451196B1 (en) 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
JP4426736B2 (ja) * 2001-04-27 2010-03-03 株式会社日立製作所 プログラム修正方法およびプログラム
US7028305B2 (en) * 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
JP4222590B2 (ja) * 2001-07-18 2009-02-12 株式会社東芝 サーバ・システム、クライアント・システム、ソフトウェアストリーミング方法及びプログラム
US7496931B2 (en) 2003-12-30 2009-02-24 Symantec Corporation Portable memory storage devices containing public context application layers
US7886291B1 (en) 2003-06-11 2011-02-08 Symantec Corporation Layer typed prioritizing application layered systems
US7549164B2 (en) 2003-06-11 2009-06-16 Symantec Corporation Intrustion protection system utilizing layers and triggers
US7461086B1 (en) 2006-01-03 2008-12-02 Symantec Corporation Run-time application installation application layered system
US8112767B1 (en) 2002-06-12 2012-02-07 Symantec Corporation Systems, apparatus, and methods for layered execution
US7542988B1 (en) 2006-01-03 2009-06-02 Symantec Corporation File type associative application layered system
US7877413B1 (en) 2002-06-12 2011-01-25 Symantec Corporation Path variablizing layered system
AU2003251504A1 (en) * 2002-06-12 2003-12-31 Fslogic Inc. Systems and methods for the creation of software packages using layered systems
US7461096B1 (en) 2003-06-11 2008-12-02 Symantec Corporation Weighted prioritizing layered computing system
US7945897B1 (en) * 2002-06-12 2011-05-17 Symantec Corporation Method and system for running an application in a clean operating environment using a layered computing system
US8291407B2 (en) 2002-06-12 2012-10-16 Symantec Corporation Systems and methods for patching computer programs
US8010961B1 (en) 2003-06-11 2011-08-30 Symantec Corporation Data layer prioritization in an application layered system
US7970789B1 (en) 2003-06-11 2011-06-28 Symantec Corporation Sublayered application layered system
US8341648B1 (en) 2002-06-12 2012-12-25 Symantec Corporation Automatic virtualization based on user-defined criteria
US7620956B2 (en) 2003-06-11 2009-11-17 Symantec Corporation Portable memory storage devices with application layers
US8302108B1 (en) * 2002-06-12 2012-10-30 Symantec Corporation Feature based software virtualization
US7512977B2 (en) 2003-06-11 2009-03-31 Symantec Corporation Intrustion protection system utilizing layers
US7165260B2 (en) 2002-06-12 2007-01-16 Fsl, L.L.C. Layered computing systems and methods for insecure environments
US7844577B2 (en) 2002-07-15 2010-11-30 Symantec Corporation System and method for maintaining a backup storage system for a computer system
US20040107179A1 (en) 2002-08-22 2004-06-03 Mdt, Inc. Method and system for controlling software execution in an event-driven operating system environment
US7143288B2 (en) 2002-10-16 2006-11-28 Vormetric, Inc. Secure file system server architecture and methods
US7194478B2 (en) * 2002-11-12 2007-03-20 Hewlett-Packard Development Company, L.P. Virtual process file systems and methods therefor
JP2005284925A (ja) * 2004-03-30 2005-10-13 Oki Electric Ind Co Ltd コンピュータシステムおよびプログラム更新方法
US8146073B2 (en) * 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
US8042105B1 (en) * 2006-09-13 2011-10-18 Amdocs Software Systems Limited Multiple configurable customization layer system, method and computer program product
US7720931B2 (en) 2006-10-13 2010-05-18 International Business Machines Corporation System and method of remotely managing and loading artifacts
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US20110040812A1 (en) 2007-12-20 2011-02-17 Virtual Computer, Inc. Layered Virtual File System
US9250942B2 (en) * 2008-01-30 2016-02-02 International Business Machines Corporation Hardware emulation using on-the-fly virtualization
US7826841B2 (en) * 2008-02-11 2010-11-02 Wei Lu Open wireless architecture virtualization system for wireless mobile terminal device
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법
US8060940B2 (en) 2008-06-27 2011-11-15 Symantec Corporation Systems and methods for controlling access to data through application virtualization layers
US8108346B1 (en) 2008-06-27 2012-01-31 Symantec Corporation Systems and methods for maintaining settings for multiple applications
US8225316B1 (en) 2009-02-11 2012-07-17 Symantec Corporation Methods and systems for creating and applying patches for virtualized applications
US8112392B1 (en) 2009-02-13 2012-02-07 Symantec Corporation Methods and systems for creating snapshots of virtualized applications
US8407700B2 (en) 2009-03-03 2013-03-26 Symantec Corporation Methods and systems for merging virtualization sublayers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US20030014669A1 (en) * 2001-07-10 2003-01-16 Caceres Maximiliano Gerardo Automated computer system security compromise
CN1953391A (zh) * 2005-10-20 2007-04-25 联想(北京)有限公司 计算机管理系统以及计算机管理方法
US20070180450A1 (en) * 2006-01-24 2007-08-02 Citrix Systems, Inc. Methods and systems for selecting a method for execution, by a virtual machine, of an application program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103109514A (zh) * 2010-07-20 2013-05-15 弗里班德技术股份有限公司 应用程序活动系统

Also Published As

Publication number Publication date
CN101551754B (zh) 2013-11-27
US20120297374A1 (en) 2012-11-22
US20110145806A1 (en) 2011-06-16
US9081644B2 (en) 2015-07-14
JP5363858B2 (ja) 2013-12-11
US8261254B2 (en) 2012-09-04
EP2107462A2 (en) 2009-10-07
EP2107462A3 (en) 2009-11-25
JP2009277217A (ja) 2009-11-26

Similar Documents

Publication Publication Date Title
CN101551754B (zh) 虚拟软件子层的动态插入和去除
JP5363776B2 (ja) コンピュータプログラムにパッチを当てるシステム及び方法
US7555568B2 (en) Method and apparatus for operating a host computer from a portable apparatus
EP2811404B1 (en) Virtual desktop implementation method, device and system
US6427227B1 (en) System, method, and computer-readable medium for repairing an application program that has been patched
CN101069157B (zh) 用于访问资源的方法和系统
US8694981B2 (en) Shared resource dependencies
EP2652599B1 (en) System reset
US10216510B2 (en) Silent upgrade of software with dependencies
US8356293B1 (en) System and method for controlling installed third party software components
US20060224794A1 (en) Using USB memory device to recover operating system
CN104094226A (zh) 使用部署配置文件自动更新客户端设备上的应用或者驱动
CN104094225A (zh) 创建或安装用于具有多个硬件平台中的一个的目标装置的磁盘映像
CN104094256A (zh) 在具有写入过滤器的客户端设备上部署驱动或者应用
KR20030038542A (ko) 스위칭 가능 소자를 가진 컴퓨터
KR20060109284A (ko) 소프트웨어 분산 서비스를 위한 시스템 및 방법
EP2754083A1 (en) Selective file access for applications
WO2002093369A1 (en) Operating system abstraction and protection layer
KR20060067815A (ko) 휴대용 저장 장치 및 방법
EP4100829A1 (en) Firmware update patch
US6308326B1 (en) Run-time modules for dynamically adjusting computer operation
US6367072B1 (en) Apparatus and method for identifying and modifying computer operating system components
KR100654675B1 (ko) 호스트 컴퓨터상에서 응용프로그램 수행을 위한 휴대용디지털 저장장치 시스템 및 방법
CN106528226A (zh) 操作系统的安装方法及装置
KR100831128B1 (ko) 다중 사용자 환경에서의 서버 시스템을 이용한 운영체제백업/복구와 게임 백업/복구/업데이트/설치/실행 및운영체제 관리 시스템 및 그 방법

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
TR01 Transfer of patent right

Effective date of registration: 20200106

Address after: California, USA

Patentee after: CA,INC.

Address before: California, USA

Patentee before: Symantec Corporation

TR01 Transfer of patent right