CN103677878B - 一种打补丁的方法和装置 - Google Patents

一种打补丁的方法和装置 Download PDF

Info

Publication number
CN103677878B
CN103677878B CN201210337811.1A CN201210337811A CN103677878B CN 103677878 B CN103677878 B CN 103677878B CN 201210337811 A CN201210337811 A CN 201210337811A CN 103677878 B CN103677878 B CN 103677878B
Authority
CN
China
Prior art keywords
content
patch installing
virtual machine
new
patch
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.)
Active
Application number
CN201210337811.1A
Other languages
English (en)
Other versions
CN103677878A (zh
Inventor
李立
曲俊媚
戈弋
陈春海
刘亮
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority to CN201210337811.1A priority Critical patent/CN103677878B/zh
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to DE112013003873.0T priority patent/DE112013003873T5/de
Priority to PCT/CN2013/076140 priority patent/WO2014040424A1/en
Priority to GB1505023.0A priority patent/GB2520881B/en
Priority to US14/427,454 priority patent/US9430217B2/en
Priority to JP2015530269A priority patent/JP6351593B2/ja
Publication of CN103677878A publication Critical patent/CN103677878A/zh
Priority to US15/218,715 priority patent/US10241813B2/en
Application granted granted Critical
Publication of CN103677878B publication Critical patent/CN103677878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Landscapes

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

Abstract

本发明属于计算机领域,公开了一种打补丁的方法,所述方法包括:响应于需要对第一内容打补丁且该第一内容已经位于内存中,区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;响应于所述新的内容被加载到内存中,将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程。本发明还公开了用于打补丁的装置。根据本发明提供的技术方案,可以对虚拟机或者物理机进行动态打补丁,而不用停止已经运行的进行。

Description

一种打补丁的方法和装置
技术领域
本发明涉及计算机领域,更具体地,涉及一种打补丁的方法和装置。
背景技术
随着软件应用的不断丰富,对软件应用打补丁的需求也越来越多。因为软件应用难免存在各种安全隐患或者功能缺失,为了不断的完善,就需要对软件应用打补丁。
不仅仅是软件应用,操作***等也需要不断的打补丁以修补安全漏洞或者加强功能。并且,病毒通常传播非常快,也很广泛,所以为了避免被病毒感染,需要及时对操作***或者软件应用打补丁。
然而,现在打补丁的方式需要停止正在运行的应用,这样会造成用户使用的不方便,但如果不停止正在运行的应用,就无法及时的打补丁。
发明内容
为了能够在不停止应用的情况下打补丁,本发明实施例提供了一种打补丁的方法和装置。
根据本发明的一个方面,提供了一种打补丁的方法,所述方法包括:响应于需要对第一内容打补丁且该第一内容已经位于内存中,区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;响应于所述新的内容被加载到内存中,将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程。
根据本发明的另一个方面,提供了一种打补丁的方法,所述方法包括:响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对所述第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存直至完成打补丁操作的任一个状态;响应于接收到所述通知,调度除所述n个虚拟机外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。
根据本发明的另一个方面,提供了一种打补丁的方法,所述方法包括:接收指示,所述指示用于通知本虚拟机需要打补丁;得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;发送第一通知,所述第一通知至少包括所述新的内存空间的地址;发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到内存空间直至完成打补丁操作中的任一个状态;根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。
根据本发明的另一个方面,提供了一种打补丁的方法,所述方法包括:接收指示,所述指示用于通知本虚拟机需要打补丁;获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。
根据本发明的另一个方面,提供了一种用于打补丁的装置,所述装置包括:区分模块,被配置为响应于需要对第一内容打补丁且该第一内容已经位于内存中,区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;映射模块,被配置为响应于所述新的内容被加载到内存中,将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程。
根据本发明的另一个方面,提供了一种用于打补丁的装置,所述装置包括:第一调度模块,被配置为响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对所述第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;接收模块,被配置为接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存直至完成打补丁操作的任一个状态;第二调度模块,被配置为响应于接收到所述通知,调度除所述n个虚拟机外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。
根据本发明的另一个方面,提供了一种用于打补丁的装置,所述装置包括:接收模块,被配置接收指示,所述指示用于通知本虚拟机需要打补丁;得到模块,被配置为得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;发送模块,被配置为发送第一通知,所述第一通知至少包括所述新的内存空间的地址,且发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到内存空间直至完成打补丁操作中的任一个状态;打补丁模块,被配置为根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。
根据本发明的另一个方面,提供了一种用于打补丁的装置,所述装置包括:接收模块,被配置为接收指示,所述指示用于通知本虚拟机需要打补丁;获知模块,被配置为获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;打补丁模块,被配置为根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。
本发明所提供的技术方案可以在不停止正在运行的应用的情况下,动态的打补丁。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图;
图2示出了本发明实施例一种打补丁的方法的流程示意图;
图3a示出了本发明实施例一种由库文件管理器执行的打补丁的方法的流程示意图;
图3b示出了本发明实施例另一种由库文件管理器执行的打补丁的方法的流程示意图;
图3c示出了本发明实施例一种应用在虚拟机环境下的打补丁的方法的流程示意图;
图4示出了本发明实施例一种应用于虚拟机打补丁的方法的流程示意图;
图5示出了本发明实施例另一种应用于虚拟机打补丁的方法的流程示意图;
图6示出了本发明实施例又一种应用于虚拟机打补丁的方法的流程示意图;
图7示出了本发明实施例再一种应用于虚拟即打补丁的方法的流程示意图;
图8示出了本发明实施例一种用于打补丁的装置的结构示意图;
图9示出了本发明实施例另一种用于打补丁的装置的结构示意图;
图10示出了本发明实施例又一种用于打补丁的装置的结构示意图;
图11示出了本发明实施例再一种用于打补丁的装置的结构示意图;
图12示出了本发明实施例另又一种用于打补丁的装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序占领可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图1显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
现在参看图2,图2示出了本发明实施例提供的一种打补丁的方法。该方法包括:步骤210,响应于需要对第一内容打补丁且该第一内容已经位于内存中,区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;步骤220,响应于所述新的内容被加载到内存中,将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程。
在现有技术中,若待打补丁的内容已经被加载到内存中,由于直接修改内存中的内容可能会导致映射到该内容的进程发生异常,所以会将映射到该内容的所有进程关闭。在将打补丁后的内容加载到内存后,可以重新启动映射到该内容的进程,从而使进程可以映射到打补丁后的内存。可以看到现有技术所提供的方案需要关闭进程才能够进行打补丁的操作,这样可能造成用户的使用不便。如果进程暂时无法关闭,则无法进行打补丁的操作,再启动的新进程仍然使用旧的内容,这就导致打补丁所希望添加的功能或者弥补的安全漏洞无法实现。而通过应用本实施例提供的技术方案,当待打补丁的内容已经被加载到内存中时,可以通过区分新的内容和旧的内容,而将打补丁后的内容也加载到内存中,并将新的进程映射到新的内容。旧的进程可以继续使用旧的内容,这样对于用户而言,当新启动了一个进程时,就可以使用打补丁后的内容,无须强制关闭正在进行的进程,从而完成了对第一内容打补丁的操作。
本发明一实施例中,该第一内容可以包括库文件。例如,库文件可以包括动态连接库(DLL)或者静态连接库中的至少一个。在本发明另一实施例中,该第一内容可以包括其他程序文件,例如类文件等。下述实施例中,为了描述方便,以第一内容为库文件进行举例描述。
本发明一实施例中,内存为物理内存,但本领域技术人员可以理解随着技术的发展,该内存可能有更为丰富的含义。在本发明各实施例中,加载到内存中的内容主要是指对其打补丁会影响进程运行的内容。在本发明一实施例中还可以通过判断会映射到待打补丁的内容的应用程序是否在运行来判断待打补丁的内容是否存在于内存中。
本发明一实施例中,图2所示的方法可以被应用在物理机上。在本发明另一实施例中,图2所示的方法可以被应用在虚拟机上。
本发明一实施例中,图2所示的方法进一步可以包括:获知需要对所述第一内容打补丁;确定所述第一内容已经位于内存中。获知需要对第一内容打补丁的方式可以有多种,例如接收一个通知,或者直接接收到补丁的推送,或者直接接收到控制命令。确定第一内容已经位于内存中现有技术中也有多种方法,图3a和3b所示的实施例中也提供了相应的示例,此处不再赘述。
本发明一实施例中,第一内容包括库文件,相应的,步骤210中,区分新的内容和旧的内容包括:通过修改库文件列表,区分所述新的内容和所述旧的内容。具体的实现方式有很多种,可以是对库文件列表中旧的内容的相关项进行修改,也可以是对新的内容的相关项进行修改。
本发明一实施例中,图2所示的方法进一步可以包括:在所有旧的进程都退出后,移除所述旧的内容的相关项,其中所述旧的进程包括所述新的内容被加载到内存前已经映射到所述旧的内容的进程。具体的,可以删除库文件列表中旧的内容的相关表项,或者清除内容中的旧的内容,或者同时删除库文件列表中的旧的内容的相关表项以及清除内容中的旧的内容。
本发明一实施例中,图2所示的方法可以由库文件管理器执行。如图3a所示,在步骤310中,库文件管理器接收通知,该通知用于告知库文件管理器有对于第一库文件的补丁。该通知例如是由补丁代理装置发出的。在步骤320中,库文件管理器判断该第一库文件是否已经存在于内存中,若存在则进入步骤330,若不存在则进入步骤340。在步骤330中,库文件管理器区分打补丁后的第一库文件和打补丁前的第一库文件。以下为了描述方便,将打补丁后的第一库文件称为新的库文件,将打补丁前的第一库文件称为旧的库文件。在步骤350中,若有新的进程启动,则将该新的进程映射到新的库文件。新的进程是在新的库文件加载到内存后启动的进程,旧的进程是在新的库文件加载到内存之前已经映射到旧的库文件的进程。在步骤360中,若所有映射到旧的库文件的进程都退出了,则删除旧的库文件的相关项。在步骤340中,可以是直接结束本方法,也可以是通知其他装置第一库文件并未存在于内存中。在本实施例中,将新的库文件加载到内存中可以由操作***完成也可以由其他装置完成,并且可以在步骤330之前、同时或者之后完成,只要在步骤320之后且在步骤350之前执行即可。
在本发明另一实施例中,如图3b所示,步骤310中接收的通知可以是用于告知库文件管理器新的库文件的信息的通知。例如包括新的库文件的名称、内存地址等。该通知例如可以由操作***发出或者由其他装置发出。在此实施例中,对于库文件是否已经存在于内存中的判断在步骤310之前已经完成,具体可以由库文件管理器完成或者由操作***完成,或者还可以由其他装置完成。步骤330中,库文件管理器可以通过修改库文件列表来区分新的库文件和旧的库文件。在本实施例中,库文件管理器维护库文件列表,该列表包括库文件相关信息以及库文件和进程的映射关系,其中库文件相关信息例如包括库文件的名称以及内存地址等。可选的,库文件管理器可以在库文件列表中通过修改新的库文件的名称来区分新的和旧的库文件。在步骤370中,库文件管理器对于旧的进程,仍将其映射到旧的库文件,以保证该进程的正常运行。在步骤360中,删除旧的库文件的相关项可以包括删除库文件列表中的旧的库文件的所有项目或者至少是部分项目。可选的,还可以清除内存中的旧的库文件。通过图3a和3b所示的实施例,可以进一步的看出,本发明实施例所提供的技术方案可以保证在旧的进程的运行不受影响的情况下进行打补丁的操作,使得新的进程可以使用打补丁后的内容,也即实现了动态打补丁。该技术方案可以提高用户的感受,保证能够及时打补丁。并且图3b所示的实施例可以避免旧的进程退出时影响新的库文件。本实施例还可以与图3a所示的实施例相互参照,例如图3a所示的实施例也可以包括步骤370。
如图3c所示,上述实施例在虚拟机环境中实施时,可以包括以下步骤:步骤301,虚拟机接收到对第一内容打补丁的通知;步骤302,响应于接收到该通知,虚拟机确定第一内容已经位于内存中;步骤303,响应于确定第一内容已经位于内存中,虚拟机区分旧的内容和新的内容;步骤304,得到新的内存空间用于存放打补丁后的第一内容;步骤305,响应于新的内容被加载到该新的内存空间中,虚拟机将需要应用所述第一内容的新的进程映射到所述新的内容;步骤306,发送第一通知,该第一通知至少包括该新的内存空间的地址;步骤307,发送第二通知,该第二通知用于指示本虚拟机已经处于第一状态,该第一状态包括从将所述打补丁后的第一内容加载到该新的内存空间直至完成打补丁操作中的任一个状态。本领域技术人员可以理解,步骤303与步骤304之间没有特定的执行顺序;步骤305,步骤306和步骤307之间也没有特定的执行顺序,步骤305和步骤307只需要在打补丁后的第一内容被加载到内存空间之后执行即可。具体的虚拟机共享内存的技术方案可以参照下述实施例所描述的细节,此处不再赘述。通过本实施例提供的方案,可以使得多个虚拟机之间实现打补丁时内存的共享,节省了内存空间,避免了补丁的重复下载,并且可以动态的打补丁,不需要停止正在运行的进程。
如图4所示,本发明实施例提供了一种打补丁的方法。该方法适用于对虚拟机进行打补丁的操作。该方法包括:步骤410,响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对所述第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;步骤420,接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存空间直至完成打补丁操作的任一个状态;步骤430,响应于接收到所述通知,调度除该n个虚拟机外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。
在现有的技术中,对于多个虚拟机进行打补丁时,由于虚拟机之间是彼此隔离的,所以每个虚拟机会独立的进行打补丁的操作,并不会与其他的虚拟机之间存在任何协同。而这样可能会导致补丁被反复下载,从而增大网络传输负载,恶化网络传输情况,或者导致I/O接口的响应减缓。并且,由于多个虚拟机彼此独立的进行打补丁的操作,有可能会占用多个内存空间存放相同的打补丁后的内容,这就导致了内存空间的浪费。而本实施例提供的方法可以对多个打补丁的虚拟机进行调度,使其之间存在协同,从而减少了同一时间多个虚拟机进行补丁反复下载的可能,减轻了网络传输负担,并且通过先使得n个虚拟机打补丁,再使得m个虚拟机中的至少一个利用已经在内存中的打补丁后的内容进行打补丁的操作,可以使得后打补丁的虚拟机能够利用之前打补丁的虚拟机所占用的内存空间,避免了内存空间的浪费,也即多个虚拟机之间可以共享打补丁后的内容所占用的内存。本实施例提供的方法可以应用于动态打补丁或静态打补丁的情况。
本发明一实施例中,可选的n的取值为1。也就是说,会先调度1个虚拟机进行打补丁的操作,随后可以利用已经加载到内存中的打补丁后的内容,对其他的虚拟机进行打补丁的操作。这样可以更大程度的体现虚拟机共享打补丁后的内容的益处。
本发明一实施例中,如图4所示的方法进一步包括:确定需要对第一内容打补丁的虚拟机的数量多于1个,其中所述需要对第一内容打补丁的虚拟机包括正在运行已经映射到打补丁前的第一内容的进程的虚拟机。可以看到,通过本实施例提供的方法,可以对虚拟机实现动态打补丁。具体的实现细节可以参照图2、图3a和图3b所示的实施例。可以理解,在虚拟机环境中,对于待打补丁的内容是否位于内存中,或者说对于虚拟机是否正在运行映射到待打补丁的内容的判断可以由虚拟机上的补丁代理装置完成也可以由补丁管理器完成。
本发明一实施例中,步骤410和430中可以通过不同的指示分别调度n个和m个虚拟机打补丁,从而使得n个虚拟机得到新的内存空间,而m个虚拟机利用已有的内存空间。可选的,步骤410和430中调度的方式是相同的,由虚拟机来判断是应该得到新的内存空间还是应该利用已有的内存空间。
本发明一实施例中,第一状态例如包括以下之一:将打补丁后的内容加载到内存空间;得到新的客户内存页;将新的客户内存页映射到新的内存空间;将新的进程映射到打补丁后的内容。
本发明一实施例中,参照图2所示的实施例,步骤430中的调度可以通过发送打补丁的通知,或者直接推送补丁,或者直接发送控制命令实现,此处不再赘述。
本发明一实施例中,图4所示的方法可以由补丁管理器执行。该补丁管理器用于调度各虚拟机进行打补丁的操作。可选的,补丁管理器可以向虚拟机中的补丁代理装置发送打补丁的通知。可选的,补丁管理器可以向虚拟机中的补丁代理装置直接推送补丁的地址。相应的补丁管理器可以直接接收打补丁的通知,并自己完成补丁的下载等操作,也可以直接得到补丁保存的地址。本实施例中,补丁的地址可以是在磁盘中的地址或者在内存中的地址。对于虚拟机应用,该内存可以是物理机的物理内存,或者可以具体为虚拟机管理程序(Hypervisor)的物理内存。可选的,可以将补丁管理器设置在物理机的操作***中,或者还可以设置在运行在物理机上的虚拟机管理程序中。本领域技术人员可以理解,随着技术的发展,补丁管理器还可以设置在其他地方,只要其可以调度各虚拟机进行打补丁的操作即可。
如图5所示,本发明一实施例提供了一种打补丁的方法。该方法适用于对虚拟机进行打补丁的操作。该方法包括:步骤510,接收指示,所述指示用于通知本虚拟机需要打补丁;步骤520,得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;步骤530,发送第一通知,所述第一通知至少包括所述新的内存空间的地址;步骤540,发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到内存空间直至完成打补丁操作中的任一个状态;步骤550,根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。
根据本发明实施例提供的方法,可以使得虚拟机在将打补丁的内容加载到内存中以后,通知补丁管理器,以便补丁管理器可以调度其他虚拟机进行打补丁的操作,有助于多个虚拟机实现打补丁操作的协同,从而实现内存共享,避免了多次下载补丁的问题,也不会占用过多的内存空间。
本发明一实施例中,相应于图4所示的实施例,步骤510接收的指示可以是具体的指示本虚拟机需要得到新的内存空间,或者仅简单指示本虚拟机需要对第一内容打补丁,由虚拟机自己判断是否应当得到新的内存空间。
本发明一实施例中,步骤510接收的指示为第一装置发送的指示。步骤530中发送的第一通知为向第二装置发送的。步骤540中发送的第二通知为向第三装置发送的。第一装置和第三装置均为补丁管理器,补丁管理器用于调度虚拟机进行打补丁操作;第二装置为补丁控制器,补丁控制器用于管理该新的内存空间。可选的,补丁控制器可以用于保存新的内存空间的地址。这样虚拟机,特别是虚拟机中的补丁代理装置,可以通过访问补丁控制器获得新的内存空间的地址。可选的,补丁控制器可以用于与虚拟机进行通信,并管理新的内存空间的地址。这样补丁控制器可以管理多个新的内存空间的地址,并对于更多样的请求进行响应。本领域技术人员可以理解,补丁管理器和补丁控制器可以位于同一装置中,也可以是两个独立的装置。可选的,补丁控制器可以设置在Hypervisor中,这样可以更便于对内存空间的管理。
本发明一实施例中,步骤520例如可以包括:响应于第一内容已经位于内存空间中,得到一个新的内存空间用于存放打补丁后的第一内容。本实施例中,可以在第一内容已经位于内存中的情况下,得到新的内存空间。本发明另一实施例中,确定第一内容是否位于内存空间中是在下载补丁之前,则响应于第一内容没有位于内存空间中,可以直接将补丁下载到磁盘中。在本发明另一实施例中,确定第一内容是否位于内存空间中是在将补丁下载到磁盘中之后,则响应于第一内容没有位于内存空间中,暂时不进行操作,直到有进程需要映射到该内容时,得到一个内存空间用于存放该打补丁后的内容,也即直接将打补丁后的内容从磁盘加载到内存。步骤550可以包括:得到新的客户内存页;将新的客户内存页映射到该新的内存空间;将需要应用第一内容的新的进程映射到打补丁后的第一内容,其中,新的进程包括所述将新的客户内存页映射到新的内存空间后启动的进程。其中得到新的内存空间可以是分配一个新的内存空间,也可以是获知为本虚拟机分配的一个新的内存空间。本实施例中,客户内存页可以实现为表的形式,该表中维护了虚拟机的内存到虚拟机管理程序管理的物理地址之间的映射关系。通过本实施例提供的方法,可以在虚拟机正在运行映射到带打补丁的内容的进程时,仍对内容进行打补丁,并将打补丁后的内容加载到内存中,使得新的进程可以使用打补丁后的内容,而旧的进程仍保持使用旧的内容,这样不但可以实现动态打补丁,还不会影响旧的进程的运行。
本发明一实施例中,图5所示的方法还包括:在所有旧的进程都退出后,移除第一内容的相关项,其中旧的进程包括将新的客户内存页映射到新的内存空间前已经映射到打补丁前的第一内容的进程。通过本实施例提供的方法可以在旧进程退出后及时清除旧的内容的相关项,并且不会影响新的内容。
本发明一实施例中,图5所示的方法由部署在虚拟机中的补丁代理装置执行。本领域技术人员可以理解,其中的部分功能也可以由其他装置实现,例如补丁管理器。
如图6所示,本发明实施例提供了一种打补丁的方法。该方法适用于对虚拟机进行打补丁的操作。该方法包括:步骤610,接收指示,所述指示用于通知本虚拟机需要打补丁;步骤620,获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;步骤630,根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。
根据本实施例提供的方法,应用该方法的虚拟机可以与已经打补丁的虚拟机共享该补丁所在的内存空间,从而避免了补丁的多次下载,也不会占用过多的内存空间。
本发明一实施例中,相应于图4所示的实施例,步骤610接收的指示可以是具体的指示本虚拟机需要利用已有的内存空间,或者仅简单指示本虚拟机需要对第一内容打补丁,由虚拟机自己判断是否应当利用已有的内存空间。
本发明一实施例中,步骤610接收的指示是由第一装置发送的;步骤620中是从第二装置获知的用于存放打补丁后的第一内容的内存空间。第一装置和第二装置可以都是补丁管理器。在本发明另一实施例中,第一装置是补丁管理器,而第二装置是补丁控制器。
本发明一实施例中,步骤630例如包括:得到新的客户内存页;将所述新的客户内存页映射到所述获知的内存空间;将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述获知的内存空间后启动的进程。
上述方法实施例之间可以彼此参照结合,得到更多的实施方式。例如图4所示的实施例可以和图2所示的实施例结合,得到可以由补丁管理器执行的动态为虚拟机在共享内存的情况下打补丁的方法。例如图6所示的实施例可以和图2所示的实施例结合,得到可以由补丁代理装置执行的动态为虚拟机在共享内存的情况下打补丁的方法。
下面结合图7对于本发明实施例进行详细的举例描述。在物理机A上,运行有虚拟机1,虚拟机2,虚拟机3以及虚拟机4。设置在物理机A的操作***中的补丁管理器获知需要对应用a映射到的d111打补丁。在步骤710,补丁管理器下载d111的补丁到磁盘中。在步骤720,补丁管理器确定虚拟机1、2、3上正在运行应用a,而虚拟机4并没有运行应用a。其中,应用a为映射到d111的应用。在步骤730,补丁管理器向设置在虚拟机1上的补丁代理装置1发送打补丁的通知。在步骤740,响应于接收到打补丁的通知,补丁代理装置1得到新的物理内存空间。在步骤750,补丁代理装置1得到新的客户内存页面,并将该新的客户内存页面映射到新的物理内存空间。在步骤760,响应于打补丁后的d111被加载到新的物理内存空间,补丁代理装置1向补丁管理器发送通知。在步骤770,响应于打补丁后的d111被加载到新的物理内存空间,将新的进程映射到新的客户内存页面从而映射到打补丁后的d111。在步骤780,补丁代理装置1通知补丁控制器该新的物理内存空间的地址,也即打补丁后的d111在物理内存中的地址。在步骤790,响应于接收到补丁代理装置1的通知,补丁管理器向设置在虚拟机2上的补丁代理装置2和设置在虚拟机3上的补丁代理装置3发送打补丁的通知。在步骤7010,响应于接收到补丁管理器发送的打补丁的通知,补丁代理装置2和3分别得到新的客户内存页面。在步骤7011,响应于接收到补丁管理器发送的打补丁的通知,补丁代理装置2和3分别从补丁控制器得到打补丁后的d111在物理内存中的地址。在步骤7012,补丁代理装置2和3分别将新的客户内存页面映射到打补丁后的d111占用的物理内存空间。在步骤7013,补丁代理装置2和3将新的进程映射到各自新的客户内存页面从而映射到打补丁后的d111。
本实施例中,打补丁后的内容被加载到新的物理内存空间可以在补丁代理装置1得到新的物理内存空间后执行,也可以在补丁代理装置1得到新的物理内存空间前执行,或者同时执行,只要在新的物理内存空间被分配后,且在步骤770之前执行即可。在本实施例中,步骤760和步骤770之间没有特定的执行顺序。步骤780只要在步骤740之后,且在步骤7011之前执行即可。步骤7010和7011之间没有特定的执行顺序。在本实施例中,补丁管理器和补丁控制器可以设置在一起,也可以分别设置在不同的位置。本实施例中,步骤720可以是补丁管理器自己确定的,也可以是虚拟机通知的。若为虚拟机通知的,则虚拟机自己判断d111是否在物理内存中可以由库文件管理器执行。进一步的,步骤770例如可以为库文件管理器执行的,并且在执行步骤770之前,库文件管理器可以区分旧的d111和新的d111。具体实现可以参照图2所示的实施例。图7中为了表示方便,没有单独表示库文件管理器,而是将库文件管理器和补丁代理装置表示为一个。在本实施例中,若应用a运行时必然就意味着待打补丁的内容1位于物理内存中,所以可以通过判断应用a是否运行来确定待打补丁的内容是否位于物理内存中。本领域技术人员可以理解,还可以通过其他方式来确定待打补丁的内容是否位于物理内存中。本实施例中的其他实施细节也可以参照上述各实施例。通过本实施例提供的技术方案,在同一物理机上的虚拟机之间对同一内容打补丁的操作可以进行协同,并且可以对正在运行的应用映射的内容进行打补丁,不会影响旧的进程,同时还可以为新的进程应用打补丁后的内容,提高了用户感受,也增强了安全性,并且由于各虚拟机可以共享物理内存,不会反复下载补丁,也不会占用过多的物理内存。
如图8所示,本发明实施例提供了一种用于打补丁的装置800。该装置800可以设置于物理机环境中,也可以设置于虚拟机环境中。该装置800包括:区分模块810,被配置为响应于需要对第一内容打补丁且该第一内容已经位于内存中,区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;映射模块820,被配置为响应于所述新的内容被加载到内存中,将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程。本实施例提供的技术方案可以实现动态打补丁。本实施例中具体的实现细节可以参照相应的方法实施例,此处不再赘述。可选的,装置800例如可以实现为库文件管理器。
本发明一实施例中,装置800还可以包括:获知模块830,被配置为获知需要对所述第一内容打补丁;确定模块840,被配置为确定所属第一内容已经位于内存中。
本发明一实施例中,第一内容例如包括库文件。相应的,区分模块810被配置为通过修改库文件列表,区分所述新的内容和所述旧的内容。
本发明一实施例中,装置800进一步可以包括:移除模块850,被配置为在所有旧的进程都退出后,移除所述旧的内容的相关项,其中所述旧的进程包括所述新的内容被加载到内存前已经映射到所述旧的内容的进程。
如图9所示,本发明实施例提供了一种用于打补丁的装置900。该装置900可以设置于虚拟机环境中。该装置900包括:第一调度模块910,被配置为响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;接收模块920,被配置为接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存直至完成打补丁操作的任一个状态;第二调度模块930,被配置为响应于接收到所述通知,调度除该n个虚拟机之外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。可选的,本实施例中的装置900可以实现为补丁管理器。可选的,装置900可以位于虚拟机管理程序中,或者物理机的操作***中,只要该装置900设置的位置能够使得其和多个位于同一物理机上的虚拟机进行通信。本领域技术人员可以理解,装置900还可以包括更多的模块以实现更多的功能,例如下载补丁的功能、推送补丁的功能等,此处不再赘述。通过本实施例提供的技术方案,可以实现多个待打补丁的虚拟机之间的协同操作,共享内存,以避免补丁的多次下载以及内存的过多占用。
本发明一实施例中,n的取值例如为1。
本发明一实施例中,装置900进一步包括确定模块940。该确定模块940被配置为确定需要对第一内容打补丁的虚拟机的数量多于1个,其中所述需要对第一内容打补丁的虚拟机包括正在运行已经映射到打补丁前的第一内容的进程的虚拟机。通过本实施例提供的技术方案,可以实现对虚拟机动态打补丁,该实现的具体细节可以参照如图2、图3a和图3b所示的实施例。
如图10所示,本发明实施例提供了一种用于打补丁的装置1000。该装置1000可以设置于虚拟机环境中。该装置1000包括:接收模块1010,被配置为接收指示,所述指示用于通知本虚拟机需要打补丁;得到模块1020,被配置为得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;发送模块1030,被配置为发送第一通知,所述第一通知至少包括所述新的内存空间的地址,且发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到内存空间直至完成打补丁操作中的任一个状态;打补丁模块1040,被配置为根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。可选的,装置1000例如可以实现为补丁代理装置,该补丁代理装置例如可以设置在虚拟机中。通过本实施例提供的技术方案,可以实现多个待打补丁的虚拟机之间的协同操作,共享内存,以避免补丁的多次下载以及内存的过多占用。
本发明一实施例中,接收模块1010例如可以从第一装置接收指示。发送模块1030例如被配置为向第二装置发送第一通知,向第三装置发送第二通知。其中,所述第一装置和所述第三装置均为补丁管理器,所述补丁管理器用于调度虚拟机进行打补丁操作;所述第二装置为补丁控制器,所述补丁控制器用于管理所述新的内存空间。根据方法实施例中的描述可知,补丁管理器和补丁控制器可以设置在一起,也可以分别设置在不同位置,例如补丁管理器设置在物理机的操作***中,而补丁控制器设置在Hypervisor中。
本发明一实施例中,得到模块1020被配置为响应于所述第一内容已经位于内存中,得到一个新的内存空间用于存放打补丁后的第一内容。打补丁模块1040包括:客户内存页子模块,被配置为得到新的客户内存页;第一映射子模块,被配置为将所述新的客户内存页映射到所述新的内存空间;第二映射子模块,被配置为将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述新的内存空间后启动的进程。根据本发明实施例提供的技术方案,可以在虚拟机共享内存的基础上实现动态打补丁。结合图9所示的实施例,本领域技术人员可以理解,对于虚拟机上是否运行有映射到待打补丁的内容的进程,可以由虚拟机上的补丁代理装置进行判断,也可以由补丁管理器判断。
本发明一实施例中,该装置1000进一步包括:移除模块1050,被配置为在所有旧的进程都退出后,移除所述第一内容的相关项,其中所述旧的进程包括将所述新的客户内存页映射到所述新的内存空间前已经映射到所述打补丁前的第一内容的进程。
如图11所示,本发明实施例提供了一种用于打补丁的装置1100。该装置1100可以设置于虚拟机环境中。该装置1100包括:接收模块1110,被配置为接收指示,所述指示用于通知本虚拟机需要打补丁;获知模块1120,被配置为获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;打补丁模块1130,被配置为根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。可选的,装置1100例如可以实现为补丁代理装置,该补丁代理装置例如可以设置在虚拟机中。本实施例提供的技术方案可以实现多个待打补丁的虚拟机之间的协同操作,共享内存,以避免补丁的多次下载以及内存的过多占用。
本发明一实施例中,打补丁模块1130例如包括:客户内存页子模块,被配置为得到新的客户内存页;第一映射子模块,被配置为将所述新的客户内存页映射到所述获知的内存空间;第二映射子模块,被配置为将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述获知的内存空间后启动的进程。
本发明上述装置实施例之间可以彼此参照、结合,得到更多的实现方式。例如,结合图10和图11所示的实施例,可以得到如图12所示的一种用于打补丁的装置1200,该装置1200例如可以设置在虚拟机中。该装置1200包括:接收模块1210,被配置为接收第一指示,所述第一指示用于通知本虚拟机需要得到新的内存空间对第一内容打补丁,以及接收第二指示,所述第二指示用于通知本虚拟机需要利用已有的内存空间对第二内容打补丁;得到模块1220,被配置为,响应于接收到所述第一指示,得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;发送模块1230,被配置为发送第一通知,所述第一通知至少包括所述新的内存空间的地址,且发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到内存空间直至完成打补丁操作中的任一个状态;获知模块1240,被配置为响应于接收到所述第二指示,获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;打补丁模块1250,被配置为根据所述得到模块1220得到的内存空间中或者获知模块1240获知的内存空间中打补丁后的内容,对本虚拟机进行打补丁操作。
上述装置实施例中的实现细节可以参照相应的方法实施例。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (24)

1.一种打补丁的方法,所述方法包括:
响应于虚拟机需要对第一内容打补丁且该虚拟机确定该第一内容已经位于内存中,该虚拟机区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;
响应于该虚拟机确定所述新的内容被加载到内存中,该虚拟机将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程;
发送用于用于指示本虚拟机已经处于第一状态的通知,该第一状态包括从将所述打补丁后的第一内容加载到内存直至完成打补丁操作中的任一个状态。
2.根据权利要求1所述的方法,其中,所述方法进一步包括:
虚拟机获知需要对所述第一内容打补丁;
虚拟机确定所述第一内容已经位于内存中。
3.根据权利要求1所述的方法,其中,所述第一内容包括库文件,
所述虚拟机区分新的内容和旧的内容包括:通过修改库文件列表,区分所述新的内容和所述旧的内容。
4.根据权利要求1所述的方法,其中,所述方法进一步包括:
在所有旧的进程都退出后,虚拟机移除所述旧的内容的相关项,其中所述旧的进程包括所述新的内容被加载到内存前已经映射到所述旧的内容的进程。
5.一种打补丁的方法,所述方法包括:
响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对所述第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;
接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存直至完成打补丁操作的任一个状态;
响应于接收到所述通知,调度除所述n个虚拟机外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。
6.根据权利要求5所述的方法,其中,所述n为1。
7.根据权利要求5所述的方法,其中,所述方法进一步包括:
确定需要对所述第一内容打补丁的虚拟机的数量多于1个,其中所述需要对所述第一内容打补丁的虚拟机包括正在运行已经映射到打补丁前的第一内容的进程的虚拟机。
8.一种打补丁的方法,所述方法包括:
接收指示,所述指示用于通知本虚拟机需要打补丁;
得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;
发送第一通知,所述第一通知至少包括所述新的内存空间的地址;
发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到所述新的内存空间直至完成打补丁操作中的任一个状态;
根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。
9.根据权利要求8所述的方法,其中,
所述得到一个新的内存空间用于存放打补丁后的第一内容,包括:响应于所述第一内容已经位于内存中,得到一个新的内存空间用于存放打补丁后的第一内容;
所述根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作,包括:得到新的客户内存页;将所述新的客户内存页映射到所述新的内存空间;将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述新的内存空间后启动的进程。
10.根据权利要求9所述的方法,其中,所述方法进一步包括:
在所有旧的进程都退出后,移除所述第一内容的相关项,其中所述旧的进程包括将所述新的客户内存页映射到所述新的内存空间前已经映射到所述打补丁前的第一内容的进程。
11.一种打补丁的方法,所述方法包括:
接收指示,所述指示用于通知本虚拟机需要打补丁;
获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;
发送用于用于指示本虚拟机已经处于第一状态的通知,该第一状态包括从将所述打补丁后的第一内容加载到所述获知的内存空间直至完成打补丁操作中的任一个状态;
根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。
12.根据权利要求11所述的方法,其中,所述根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作,包括:
得到新的客户内存页;
将所述新的客户内存页映射到所述获知的内存空间;
将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述获知的内存空间后启动的进程。
13.一种用于打补丁的装置,所述装置包括:
区分模块,被配置为响应于虚拟机需要对第一内容打补丁且该虚拟机确定该第一内容已经位于内存中,该虚拟机区分新的内容和旧的内容,所述新的内容为打补丁后的所述第一内容,所述旧的内容为已经位于内存中的所述第一内容;
映射模块,被配置为响应于该虚拟机确定所述新的内容被加载到内存中,该虚拟机将需要应用所述第一内容的新的进程映射到所述新的内容,其中所述新的进程包括所述新的内容被加载到内存后启动的进程;
发送模块,被配置为发送用于用于指示本虚拟机已经处于第一状态的通知,该第一状态包括从将所述打补丁后的第一内容加载到内存直至完成打补丁操作中的任一个状态。
14.根据权利要求13所述的装置,其中,所述装置进一步包括:
获知模块,被配置为获知需要对所述第一内容打补丁;
确定模块,被配置为确定所属第一内容已经位于内存中。
15.根据权利要求13所述的装置,其中,所述第一内容包括库文件,所述区分模块被配置为通过修改库文件列表,区分所述新的内容和所述旧的内容。
16.根据权利要求13所述的装置,其中,所述装置进一步包括:
移除模块,被配置为在所有旧的进程都退出后,移除所述旧的内容的相关项,其中所述旧的进程包括所述新的内容被加载到内存前已经映射到所述旧的内容的进程。
17.一种用于打补丁的装置,所述装置包括:
第一调度模块,被配置为响应于需要对第一内容打补丁的虚拟机的数量多于1个进行打补丁的调度,以使得所述虚拟机中的n个虚拟机先进行对所述第一内容打补丁的操作,其中,所述需要对第一内容打补丁的虚拟机位于同一物理机上,且所述需要对第一内容打补丁的虚拟机的数量为n+m,所述n和m均为自然数;
接收模块,被配置为接收通知,所述通知用于指示所述n个虚拟机中的至少一个已经处于第一状态,其中,所述第一状态包括从将打补丁后的第一内容加载到内存直至完成打补丁操作的任一个状态;
第二调度模块,被配置为响应于接收到所述通知,调度除所述n个虚拟机外的m个虚拟机中的至少一个进行对所述第一内容打补丁的操作,以使得所述m个虚拟机中的至少一个能够采用所述加载到内存中的打补丁后的第一内容进行打补丁的操作。
18.根据权利要求17所述的装置,其中,所述n为1。
19.根据权利要求17所述的装置,其中,所述装置进一步包括:
确定模块,被配置为确定需要对所述第一内容打补丁的虚拟机的数量多于1个,其中所述需要对所述第一内容打补丁的虚拟机包括正在运行已经映射到打补丁前的第一内容的进程的虚拟机。
20.一种用于打补丁的装置,所述装置包括:
接收模块,被配置接收指示,所述指示用于通知本虚拟机需要打补丁;
得到模块,被配置为得到一个新的内存空间用于存放打补丁后的第一内容,所述新的内存空间包括与存放打补丁前的第一内容的内存空间不重合的内存空间;
发送模块,被配置为发送第一通知,所述第一通知至少包括所述新的内存空间的地址,且发送第二通知,所述第二通知用于指示本虚拟机已经处于第一状态,所述第一状态包括从将所述打补丁后的第一内容加载到所述新的内存空间直至完成打补丁操作中的任一个状态;
打补丁模块,被配置为根据所述新的内存空间中的所述打补丁后的第一内容,对本虚拟机进行打补丁操作。
21.根据权利要求20所述的装置,其中,
所述得到模块被配置为响应于所述第一内容已经位于内存中,得到一个新的内存空间用于存放打补丁后的第一内容;
所述打补丁模块包括:客户内存页子模块,被配置为得到新的客户内存页;第一映射子模块,被配置为将所述新的客户内存页映射到所述新的内存空间;第二映射子模块,被配置为将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述新的内存空间后启动的进程。
22.根据权利要求21所述的装置,其中,所述装置进一步包括:
移除模块,被配置为在所有旧的进程都退出后,移除所述第一内容的相关项,其中所述旧的进程包括将所述新的客户内存页映射到所述新的内存空间前已经映射到所述打补丁前的第一内容的进程。
23.一种用于打补丁的装置,所述装置包括:
接收模块,被配置为接收指示,所述指示用于通知本虚拟机需要打补丁;
获知模块,被配置为获知用于存放打补丁后的第一内容的内存空间,其中,该获知的内存空间是为了与本虚拟机位于同一物理机上的其他虚拟机所分配的内存空间;
发送模块,被配置为发送用于用于指示本虚拟机已经处于第一状态的通知,该第一状态包括从将所述打补丁后的第一内容加载到所述获知的内存空间直至完成打补丁操作中的任一个状态;
打补丁模块,被配置为根据所述获知的内存空间中的打补丁后的第一内容,对本虚拟机进行打补丁操作。
24.根据权利要求23所述的装置,其中,所述打补丁模块包括:
客户内存页子模块,被配置为得到新的客户内存页;
第一映射子模块,被配置为将所述新的客户内存页映射到所述获知的内存空间;
第二映射子模块,被配置为将需要应用所述第一内容的新的进程映射到所述打补丁后的第一内容,其中,所述新的进程包括所述将所述新的客户内存页映射到所述获知的内存空间后启动的进程。
CN201210337811.1A 2012-09-12 2012-09-12 一种打补丁的方法和装置 Active CN103677878B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN201210337811.1A CN103677878B (zh) 2012-09-12 2012-09-12 一种打补丁的方法和装置
PCT/CN2013/076140 WO2014040424A1 (en) 2012-09-12 2013-05-23 Method and apparatus for patching
GB1505023.0A GB2520881B (en) 2012-09-12 2013-05-23 Method and apparatus for patching
US14/427,454 US9430217B2 (en) 2012-09-12 2013-05-23 Method and apparatus for patching
DE112013003873.0T DE112013003873T5 (de) 2012-09-12 2013-05-23 Verfahren und Vorrichtung zum Patchen
JP2015530269A JP6351593B2 (ja) 2012-09-12 2013-05-23 パッチングのための方法および装置
US15/218,715 US10241813B2 (en) 2012-09-12 2016-07-25 Method and apparatus for patching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210337811.1A CN103677878B (zh) 2012-09-12 2012-09-12 一种打补丁的方法和装置

Publications (2)

Publication Number Publication Date
CN103677878A CN103677878A (zh) 2014-03-26
CN103677878B true CN103677878B (zh) 2017-07-14

Family

ID=50277568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210337811.1A Active CN103677878B (zh) 2012-09-12 2012-09-12 一种打补丁的方法和装置

Country Status (6)

Country Link
US (2) US9430217B2 (zh)
JP (1) JP6351593B2 (zh)
CN (1) CN103677878B (zh)
DE (1) DE112013003873T5 (zh)
GB (1) GB2520881B (zh)
WO (1) WO2014040424A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015163931A1 (en) * 2014-04-24 2015-10-29 Hewlett-Packard Development Company, L.P. Dynamically applying a patch to a computer application
US10338914B2 (en) * 2014-09-01 2019-07-02 Hewlett Packard Enterprise Development Lp Dynamically applying a patch to a shared library
CN106203460A (zh) 2015-05-05 2016-12-07 杜比实验室特许公司 训练信号处理模型以用于信号处理***中的部件替换
US9696985B1 (en) * 2016-01-06 2017-07-04 International Business Machines Corporation Patching of virtual machines within sequential time windows
US10572247B2 (en) * 2016-06-01 2020-02-25 Dell Products L.P. Prototype management system
JP6784636B2 (ja) * 2017-04-13 2020-11-11 日立オートモティブシステムズ株式会社 制御装置、プログラム更新システム、プログラム更新方法
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
CN107329783B (zh) * 2017-06-26 2020-04-10 中广热点云科技有限公司 一种安卓***中基于类文件加载补丁的方法
US20200210880A1 (en) * 2018-12-26 2020-07-02 Sony Corporation Reconfiguration of embedded services on devices using device functionality information
JP7039523B2 (ja) * 2019-06-17 2022-03-22 株式会社ソニー・インタラクティブエンタテインメント 開発用ゲーム機およびプログラム実行方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1906575A (zh) * 2004-01-06 2007-01-31 国际商业机器公司 动态软件更新***、方法及程序产品
CN101154187A (zh) * 2006-09-29 2008-04-02 英特尔公司 用于为程序打补丁的方法、产品、服务处理器和***
CN102037444A (zh) * 2008-05-20 2011-04-27 思杰***有限公司 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和***
CN102073529A (zh) * 2011-01-30 2011-05-25 华为技术有限公司 超级内核组件的升级方法和计算机***
CN102081552A (zh) * 2009-12-01 2011-06-01 华为技术有限公司 一种物理机到虚拟机的在线迁移方法、装置和***
CN102571906A (zh) * 2010-10-20 2012-07-11 微软公司 打补丁期间机器的高可用性

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0439739A (ja) * 1990-06-06 1992-02-10 Fuji Facom Corp 計算機システムの共有サブルーチン交換方式
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
JPH08212064A (ja) * 1995-01-31 1996-08-20 Hitachi Ltd 共用サブルーチンの入れ替えシステム及び共用サブルーチン入れ替え方法
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
JP2002024037A (ja) * 2000-07-03 2002-01-25 Nec Microsystems Ltd ダイナミック・リンク・ライブラリ・ファイルの更新方法
US6948166B2 (en) * 2001-04-05 2005-09-20 International Business Machines Corporation System and method for automatically de-installing previously installed software based on user defined preferences
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US7143115B2 (en) * 2003-04-15 2006-11-28 Pocket Soft, Inc. Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US20060184937A1 (en) 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US7913243B2 (en) * 2005-06-21 2011-03-22 International Business Machines Corporation Method and system for generating and applying patches to a computer program concurrently with its execution
US20080022376A1 (en) * 2006-06-23 2008-01-24 Lenovo (Beijing) Limited System and method for hardware access control
US8966474B2 (en) 2007-04-30 2015-02-24 Hewlett-Packard Development Company, L.P. Managing virtual machines using shared image
CN201073529Y (zh) 2007-09-22 2008-06-18 吴庆宣 人体倒立健身机
CN101946258B (zh) * 2007-12-20 2013-05-29 惠普开发有限公司 基于计算机的业务过程在专用硬件上的基于模型的部署
US8839225B2 (en) * 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
US20090259999A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Method and system for applying a patch during application execution
US8423989B2 (en) * 2008-05-02 2013-04-16 Synchonoss Technologies, Inc. Software parameter management
US9361089B2 (en) 2008-07-22 2016-06-07 International Business Machines Corporation Secure patch updates of a virtual machine image in a virtualization data processing system
US9372784B2 (en) * 2009-02-20 2016-06-21 International Business Machines Corporation Test system configuration method and system
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
CN101609419B (zh) * 2009-06-29 2012-05-30 北京航空航天大学 虚拟机持续在线迁移的数据备份方法及装置
CN101609149A (zh) * 2009-07-13 2009-12-23 北京航空航天大学 一种提高机载激光雷达定姿精度的方法
JP2011186915A (ja) * 2010-03-10 2011-09-22 Hitachi Ltd 仮想計算機システム及び仮想計算機の制御方法
US8839228B2 (en) 2010-04-21 2014-09-16 Ca, Inc. System and method for updating an offline virtual machine
US9110690B2 (en) * 2010-04-28 2015-08-18 General Electric Company Systems, methods, and apparatus for deploying application code change configurations for multiple target controllers
US20120198431A1 (en) * 2011-01-30 2012-08-02 Lin Qiangmin Method for upgrading hypervisor component and computer system
US8898656B2 (en) * 2011-08-29 2014-11-25 Salesforce.Com, Inc. Mechanism for facilitating dynamic format transformation of software applications in an on-demand services environment
US20130086571A1 (en) * 2011-09-30 2013-04-04 International Business Machines Corporation Dynamically Updating Firmware In A Computing System
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1906575A (zh) * 2004-01-06 2007-01-31 国际商业机器公司 动态软件更新***、方法及程序产品
CN101154187A (zh) * 2006-09-29 2008-04-02 英特尔公司 用于为程序打补丁的方法、产品、服务处理器和***
CN102037444A (zh) * 2008-05-20 2011-04-27 思杰***有限公司 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和***
CN102081552A (zh) * 2009-12-01 2011-06-01 华为技术有限公司 一种物理机到虚拟机的在线迁移方法、装置和***
CN102571906A (zh) * 2010-10-20 2012-07-11 微软公司 打补丁期间机器的高可用性
CN102073529A (zh) * 2011-01-30 2011-05-25 华为技术有限公司 超级内核组件的升级方法和计算机***

Also Published As

Publication number Publication date
US20160335080A1 (en) 2016-11-17
WO2014040424A1 (en) 2014-03-20
GB2520881A (en) 2015-06-03
US9430217B2 (en) 2016-08-30
US10241813B2 (en) 2019-03-26
GB2520881B (en) 2020-07-22
US20150220320A1 (en) 2015-08-06
GB201505023D0 (en) 2015-05-06
CN103677878A (zh) 2014-03-26
JP2015527676A (ja) 2015-09-17
DE112013003873T5 (de) 2015-05-21
JP6351593B2 (ja) 2018-07-04

Similar Documents

Publication Publication Date Title
CN103677878B (zh) 一种打补丁的方法和装置
CN102117260B (zh) 在cpu和gpu之间共享资源
US8527970B1 (en) Methods and systems for mapping threads to processor cores
CN106648826B (zh) 用于热迁移虚拟机的方法和装置
US9405523B2 (en) Automated build and deploy system
CN105979007A (zh) 加速资源处理方法、装置及网络功能虚拟化***
US20190258534A1 (en) Message oriented middleware with integrated rules engine
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
CN106537336A (zh) 云固件
US9766834B2 (en) Live partition mobility using ordered memory migration
CN104077187B (zh) 用于调度应用程序的执行的方法和***
CN104951244B (zh) 用于存取数据的方法和设备
WO2018149157A1 (zh) 一种vcpu线程的调度方法及装置
US10552228B2 (en) Distributed hierarchical scheduler
CN107329836A (zh) 多***的内存管理方法、管理装置以及移动终端
CN108667750B (zh) 虚拟资源管理方法及装置
US9942083B1 (en) Capacity pool management
CN108595244A (zh) 虚拟机内外通信方法、虚拟机、物理主机及虚拟机***
CN106933646A (zh) 一种创建虚拟机的方法及装置
US11954534B2 (en) Scheduling in a container orchestration system utilizing hardware topology hints
US20230156004A1 (en) Scalable and secure edge cluster registration
CN103562852B (zh) 一种保障云应用程序服务质量的方法和装置
CN109617954A (zh) 一种创建云主机的方法和装置
US11855908B2 (en) Resource allocation in cloud computing systems
US9971625B2 (en) Virtual machine collaborative scheduling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant