CN112384893A - 多个热补丁的资源上高效的部署 - Google Patents
多个热补丁的资源上高效的部署 Download PDFInfo
- Publication number
- CN112384893A CN112384893A CN201980039900.8A CN201980039900A CN112384893A CN 112384893 A CN112384893 A CN 112384893A CN 201980039900 A CN201980039900 A CN 201980039900A CN 112384893 A CN112384893 A CN 112384893A
- Authority
- CN
- China
- Prior art keywords
- patch
- executing
- hot patch
- hot
- threads
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 61
- 230000004044 response Effects 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 14
- 230000011664 signaling Effects 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 21
- 230000008569 process Effects 0.000 description 24
- 238000005192 partition Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 23
- 238000013500 data storage Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 10
- 230000007774 longterm Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
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
背景技术
虚拟技术可应用在多种多样的场景中。例如,虚拟技术可应用于从客分区提取物理计算资源,以使物理计算资源的利用率更高,以使客分区跨物理设备间可移植,以保护物理计算资源免受在客分区中运行的恶意和/或错误代码的损害,以保护秘密,以执行安全要求或策略,等等。在虚拟和其他技术中,热修补(hot patching)可用于修补二进制文件而无需重新启动。
发明内容
本发明内容被提供用于以简要方式介绍一些概念,这些概念在下面具体实施方式中将被进一步描述。本发明内容并不旨在确定所要求保护的主题的关键特征或本质特征,也不旨在用于限制所要求保护的主题的范围。
简单地说,所公开技术通常针对执行中的二进制文件的修补。在该技术的一个示例中,在分离的时间,接收多个热补丁请求。在一些示例中,所述多个热补丁请求中的每个热补丁请求包括用以热修补所述执行中的二进制文件的对应热补丁。在一些示例中,所请求的所述多个热补丁的基数大于逻辑补丁插槽的固定数量。在一些示例中,随着所述执行中的二进制文件的继续执行,当每次将热补丁应用于所述执行中的二进制文件的请求被接收时,将所述对应热补丁分配给所述固定数量的逻辑补丁插槽中的非活跃逻辑补丁插槽。在一些示例中,从所分配的所述逻辑补丁插槽执行所述对应热补丁,以基于所述对应热补丁来对所述执行中的二进制文件进行热修补。
在阅读并理解附图和说明之后,将领会所公开技术的其他方面和应用。
附图说明
参考以下附图描述本公开的非限制性和非详尽示例。在附图中,除非另有说明,否则在各个附图中,相同的参考标号表示相同部件。这些附图不一定按比例绘制。
为了更好地理解本公开,将参考以下具体实施方式,该具体实施方式将结合附图进行阅读,其中:
图1是示出根据所公开技术的各方面的一种适当的计算设备的一个示例的物理视图;
图2是示出根据所公开技术的各方面的所述示例计算设备的逻辑视图;
图3示出了根据所公开技术的各方面的一种示例处理;以及
图4A-图4B示出了根据所公开技术的各方面的另一种示例处理。
具体实施方式
以下描述提供了特定的细节,用于透彻理解本技术的各种示例并启用针对本技术各种示例的描述。本领域技术人员将会理解,无需很多这样的细节就可以实践本技术。在某些情况下,众所周知的结构和功能并未详细展示或描述,以避免不必要地模糊本技术的示例的描述。本公开中使用的术语旨在以在广义的合理方式来解释,即使其与本技术某些示例的详细描述相结合使用。尽管下文中可能会强调某些术语,但是在体实施方式部分,任何意图以任何限制方式解释的术语都将被公开和明确地定义。整个说明书及权利要求书中,下列术语至少具有在此处明确关联的意义,除非上下文中另有规定。下面确定的含义并不一定限制这些术语,而仅为这些术语提供说明性示例。例如,术语“基于”和“在……基础上”中的每一个都不是排他性的,并且等效于术语“至少部分基于”,而且包括基于额外因素的选择,其中一些因素本文中可能并未描述。再如,术语“借由”不是排他性的,并且等效于术语“至少部分借由”,而且包括借由额外因素的选择,其中一些因素本文中可能并未描述。“在……内”的含义包括“在……内”和“在……上”。本文使用的短语“在一个实施例中”或“在一个示例中”并不一定指的是同一个实施例或示例,尽管它可以。使用特定的文本数字标记并不意味着存在更低值的数字标记。例如,陈述“从包含第三foo和第四bar的小组中选取的小部件”本身并不意味着有至少三个foo元素,也不意味着有至少四个bar元素。单数形式的引用仅仅是为了阅读的清楚并且包括复数形式的引用,除非复数形式的引用被明确排除在外。术语“或者”为包含“或”运算符,除非另有明确说明。例如,短语“A或B”意思是“A、B、或A和B”。正如这里所用的,术语“组件”和“系统”旨在包含硬件、软件、或硬件和软件的各种组合。因此,例如,系统或组件可能是进程、在计算设备上执行的进程、计算设备、或者其一部分。
简单来说,所公开技术总体涉及执行中的二进制文件的修补。在该技术的一个示例中,在分离的时间,接收到多个热补丁请求。在一些示例中,所述多个热补丁请求中的每个热补丁请求包括对应热补丁以对所述执行中的二进制文件热修补。在一些示例中,所请求的多个热补丁的基数大于逻辑补丁插槽的固定数量。在一些示例中,随着所述执行中的二进制文件的继续执行,当每次将热补丁应用于所述执行中的二进制文件的请求被接收时,对应热补丁被分配给固定数量的逻辑补丁插槽中的非活跃逻辑补丁插槽。在一些示例中,从所分配的逻辑补丁插槽执行所述对应热补丁,以基于所述对应热补丁对所述执行中的二进制文件进行热修补。
热修补可能是指没有重新启动而发生的修补。在一些示例中,使用其中置有补丁的逻辑补丁插槽完成执行中的二进制文件的热修补。所述执行中的二进制文件可以是管理程序和/或操作系统内核,并且所述可执行的二进制文件可具有有限执行保证。可能存在有限数量的逻辑补丁插槽,比如两个逻辑补丁插槽。这些逻辑补丁插槽可以是除了逻辑基础插槽之外的,所述逻辑基础插槽内放置有所述启动的可执行二进制文件镜像(image)的版本。响应于新的热补丁,在一些示例中,所述热补丁被分配给非活跃插槽,并且所述热补丁是从插槽执行的,这样可修补所述执行中的二进制文件中的代码和数据。响应于第二热补丁,在一些示例中,所述热补丁同样地应用于非活跃插槽,然后所述镜像版本的快照被拍摄。然后,可使用所述快照来确定当前补丁生成中运行的线程的数量以及所有加载镜像的版本。
在一些示例中,每个热补丁具有对应的参考计数器,该参考计数器被设置为基于当前补丁生成而运行的线程的数量。所述当前补丁生成中运行的线程中的每一个可被信号通知以解开(unwind)和重绕(rewind)所述线程的调用栈。响应于完成重绕的线程,在一些示例中,所述线程将在适当时自然启用新修补的函数。因此,将所述针对当前补丁生成的对应参考计数器递减一。
一旦所述针对补丁生成的参考计数器达到0,在一些示例中,所述逻辑插槽被回收并将其设置为非活跃的,并且所有与所述逻辑插槽相关联的资源可以被回收。然后可将所述逻辑插槽用于后续的热修补。在一些示例中,基于所述有限执行保证,保证在特定有限量时间内回收所述逻辑插槽。用这种方式,无需重启即可应用无限数量的热补丁,即使逻辑插槽的数量有限。
说明性的计算设备
图1是示出计算设备100的物理视图的一个示例的示图,在该计算设备100中可实践本技术的各个方面。计算设备100可以是几乎任何类型的通用或特定用途计算设备。例如,计算设备100可以是用户设备,比如台式电脑、笔记本电脑、平板电脑、显示设备、照相机、打印机、或智能手机。同样地,计算设备100还可以是服务器设备,比如应用服务器计算机、虚拟计算主机、或文件服务器计算机。计算设备100还可以是连接到网络以接收IoT服务的IoT设备。同样地,计算设备100可以是如下文更详细地讨论的图2-5中所示出的或参照图2-5所示出的设备中的任何一个的示例。如图1所示,计算设备100包括处理电路110、操作存储器120、存储器控制器130、数据存储存储器150、输入接口160、输出接口170以及网络适配器180。计算设备100的这些先前列出的组件中的每一个均包括至少一个硬件元件。
计算设备100包括至少一个处理电路110,该处理电路被配置以执行指令,比如用于实施这里所描述的工作负荷、处理、或技术的指令。处理电路110可包括微处理器、微控制器、图形处理器、协同处理器、现场可编程门阵列、可编程逻辑器件、信号处理器,或任何其他适于处理数据的电路。处理电路110为核心的示例。在计算设备100运行期间,上述指令连同其他数据(例如,数据集、元数据、操作系统指令等等)一起可被存储在操作存储器120中。操作存储器120还可包括各种各样的数据存储器件/组件中的任何一个,比如易失性存储器、半易失性存储器、随机访问存储器、静态存储器、缓存、缓冲器、或其他用于存储运行时的信息的媒介。在一个示例中,当计算设备100断电时,操作存储器120不保留信息。而是,计算设备100可被配置以作为引导或其他加载处理的一部分将指令从非易失性数据存储组件(例如,数据存储组件150)传送到操作存储器120。
操作存储器120可包括第四代双倍数据速率(DDR4)存储器、第三代双倍数据速率(DDR3)存储器、其它动态随机访问存储器(DRAM)、高带宽存储器(HBM)、混合存储器立方体存储器、3D堆栈存储器、静态随机访问存储器(SRAM)、或其他存储器,并且这样的存储器可包括整合到DIMM、SIMM、SODIMM、或其他封装上的一个或多个存储器电路。这样的操作存储器模块或器件可根据信道、等级和库来组织。例如,可经由存储器控制器130在信道中将操作存储器器件耦合到处理电路110。计算设备100的一个示例可以每个信道包括一个或两个DIMM,每个信道一个或两个等级。等级内的操作存储器可以使用共享时钟和共享地址以及命令总线来操作。同样,操作存储器器件可被组织成几个库,其中库可被看作是按行和列寻址的阵列。基于操作存储器的这种组织,操作存储器内的物理地址可由信道、等级、记忆库、行和列的元祖(tuple)引用。
尽管有上述讨论,操作存储器120具体不包括或包含通信媒介、任何通信介质、或任何信号本身。
存储器控制器130被配置以使处理电路110通过接口接合到操作存储器120。例如,存储器控制器130可被配置以在操作存储器120和处理电路110之间通过接口接合命令、地址和数据。存储器控制器130还可被配置以从处理电路110提取存储器管理的某些方面或以其他方式为处理电路110管理存储器管理的某些方面。尽管存储器控制器130被示出为与处理电路110分开的单存储器控制器,但是在其他示例中,可使用多个存储器控制器,存储器控制器可与操作存储器120整合,或诸如此类。进一步,可将存储器控制器整合到处理电路110中。这些和其他变化都是可能的。
在计算设备100中,由总线140将数据存储存储器150、输入接口160、输出接口170和网络适配器180通过接口接合到处理电路110。尽管图1示出了作为单无源总线的总线140,但是诸如总线的集合、点到点链路的集合、输入/输出控制器、桥接器、其他接口电路、或它们的任何集合这样的其它配置也可以适于用于将数据存储存储器150、输入接口160、输出接口170或网络适配器180通过接口接合处理电路110。
在计算设备100中,数据存储存储器150用于长期非易失性数据存储。数据存储存储器150可包括各种各样的非易失性数据存储器件/组件中的任何一个,比如非易失性存储器、盘、盘驱动器、硬盘驱动器、固态硬盘驱动器、或任何其他可用于信息的非易失性存储的介质。然而,数据存储存储器150具体不包括或包含通信媒介、任何通信介质、或任何信号本身。与操作存储器120相比,数据存储存储器150由计算设备100用于非易失性长期数据存储,而不是用于运行时的数据存储。
同样,计算设备100可包括或被耦合到任何类型的处理器可读媒介,比如处理器可读存储媒介(例如,操作存储器120和数据存储存储器150)和通信媒介(例如,通信信号和无线电波)。尽管术语处理器可读存储媒介包括操作存储器120和数据存储存储器150,但是在整个说明书和权利要求书中,无论是以单数还是复数形式使用,术语“处理器可读存储媒介”都在此处被定义,使得该术语“处理器可读存储媒介”具体排除且不包含通信媒介、任何通信介质、或任何信号本身。然而,该术语“处理器可读存储媒介”的确包含处理器缓存、随机访问存储器(RAM),、寄存器存储器、等等。
计算设备100还包括输入接口160,其可被配置以使计算设备100能够接收来自用户或来自其他设备的输入。另外,计算设备100包括输出接口170,其可被配置以提供来自于计算设备100的输出。在一个示例中,输出接口170包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置以渲染显示以在单独直观显示设备(比如监视器、投影仪、虚拟计算客户端电脑等等)上呈现。在另一个示例中,输出接口170包括直观显示设备并被配置以渲染和呈现显示用于观看。在又一个示例中,输入接口160和/或输出接口170可包括通用异步收发器(UART)、串行外设接口(SPI)、内置集成电路(“I2C”)、通用输入/输出(GPIO)、和/或诸如此类。此外,输入接口160和/或输出接口170可包括,或通过接口接合任意数量或任何类型的外部设备。
在所示示例中,计算设备100被配置以经由网络适配器180与其他计算设备或实体进行通讯。网络适配器180可包括有线网络适配器,例如以太网适配器、令牌环适配器、或数字订户线路(DSL)适配器。网络适配器180还可包括无线网络适配器,例如,WiFi适配器、蓝牙适配器、ZigBee适配器、长期演进(LTE)适配器、或5G适配器。
尽管用某些以特定安排配置的组件来示出计算设备100,但是这些组件和安排仅仅是其中可使用本技术的计算设备的一个示例。在其他示例中,数据存储存储器150、输入接口160、输出接口170、或网络适配器180可以直接耦合到处理电路110,或经由输入/输出控制器、桥接器或其他接口电路耦合到处理电路110。本技术的其他变化都是可能的。
计算设备100的一些示例包括适于存储运行时数据的至少一个存储器(例如,操作存储器120)和适用于执行处理器可执行代码的至少一个处理器(例如,处理单元110),该处理器可执行代码响应于执行能够启动计算设备100来执行动作。
如图1中所示,网络130可以包括一个或多个使多个计算设备110互相连接的网络节点120,并且将计算设备110连接至外部网络140,例如,因特网或内联网。例如,网络节点120可包括交换机、路由器、集线器、网络控制器、或其他网络元件。在某些示例中,计算设备110可以被组织成机架、动作区、群组、集合、或其他适当分区。例如,在所示示例中,计算设备110被分组为三个主机集,该三个主机集分别被标识为第一、第二及第三主机集112a-112c。在所示示例中,主机集112a-112c中的每一个分别可操作地耦合到对应的网络节点120a-120c,其通常被称作“架顶”或“TOR”网络节点。TOR网络节点120a-120c然后能够可操作地耦合到额外的网络节点120以在分层、平坦、网格或其他适当类型的拓扑中形成计算机网络,所述计算机网络允许计算设备110和外部网络140之间的通信。在其他示例中,多个主机集112-112c可共享单个网络节点120。计算设备110可以是几乎任何类型的通用或特定用途计算设备。例如,这些计算设备可以是用户设备,比如台式电脑、笔记本电脑、平板电脑、显示设备、照相机、打印机、或智能手机。然而,在数据中心环境中,这些计算设备可以是服务器设备,比如应用服务器计算机、虚拟计算主机、或文件服务器计算机。此外,计算设备110可被单独配置以提供计算、存储和/或其他适当的计算服务。
在一些示例中,一个或多个所述计算设备110是IoT设备、包括IoT支持服务的部分或全部的设备、包括应用后端的部分或全部的设备、或诸如此类,下文中会更下详细地讨论。
图2是示出计算设备200的逻辑视图的一个示例,在计算设备200中可实践本技术各个方面。计算设备200可以是图1中的计算设备100的示例。在图2的图示中,计算设备200的所述逻辑组件包括客分区211-213、监管分区230和物理资源241-243。
物理资源241-243可包括任何种类的物理组件,比如处理器组件、输入/输出(I/O)组件和/或其他组件或设备。例如,物理资源241-243可包括物理组件的任何适当组合,比如那些结合图1所讨论的。尽管作为计算设备200的一部分示出,但是一个或多个物理资源241-243(例如,一个或多个数据存储存储器)可在计算设备200之外被实施。在计算设备200上运行的各种组件或模块-包括监管分区23-可直接和/或间接经由其他组件或模块访问经由物理资源241-243提供的功能。
监管分区230可生成任何数量的客分区,例如,客分区211-213。客分区211-213中的每一个可以是虚拟机VM、虚拟化的应用、VBS执行环境、用户模式进程、和/或诸如此类。例如,客分区211被示为具有操作系统(OS)221和应用222的VM,客分区212被示出为虚拟化的应用,并且客分区224被示出为具有从其执行的进程224。
每个客分区211-213都是隔离的逻辑单元,操作系统和/或其他软件从该逻辑单元执行。客分区211-213中的每一个还可包括客虚拟处理器。在客分区211-213中的每个中运行的软件与在其他客分区中的每个中运行的软件相隔离。例如,在客分区211-213中的每个中运行的软件不能访问,并且不需要意识到,在各个其他客分区中的每个中运行的软件。物理资源241-243被虚拟化到客分区211-213,并且对物理资源241-243的访问由监管分区230管理。
如图所示,计算设备100包括监管分区230。监管设备230可包括管理程序(hypervisor),比如管理对由物理资源241-243所提供的功能的访问的虚拟机监视器。在另一个示例中,监管分区230是OS的内核或内核模式进程,比如使用VBS的OS。
在一些示例中,计算设备200内的热修补可基于监管分区230内的逻辑插槽而发生。例如,在一些示例中,监管分区230将基础插槽290用于管理程序,并将补丁插槽291和补丁插槽292用于热修补管理程序。
计算设备100和/或计算设备200的示例可进行如下热修补。
在一些示例中,使用其中置有补丁的逻辑插槽完成执行中的二进制文件的热修补。所述执行中的二进制文件可以是执行中的管理程序和/或执行中的操作系统内核,并且所述可执行的二进制文件可具有有限执行保证。在一些示例中,所述执行中的二进制文件是执行中的管理程序,该执行中的管理程序是执行中的操作系统内核。可能存在有限数量(即基数)的插槽,比如两个插槽(例如,图2的补丁插槽291和292)。这些逻辑补丁插槽可以是除了逻辑基础插槽(例如,图2的基础插槽290)之外的插槽,所述逻辑基础插槽内放置有所述启动的执行中的二进制文件镜像的版本。在启动期间,所述二进制文件可从所述基础插槽执行。尽管图2示出了插槽290、291和292,但是这仅是示例,并且在各种示例中,所述插槽可在计算设备100和/或计算设备200中的各种适当位置,比如在一些示例中,位于图2的OS 221内的OS内核里。
在一些示例中,逻辑插槽实际上是可以或可以不由物理页面支持的虚拟地址(VA)区域。在一些示例中,逻辑插槽实际上是VA加物理地址(PA)。
响应于将要应用的新的热补丁,在一些示例中,所述热补丁被分配给非活跃插槽,并且所述热补丁被从插槽执行,这样可修补所述执行中的二进制文件中的代码和数据。可将镜像供给已分配的插槽,然后所述插槽变成活跃的。响应于所述插槽变成活跃的,在一些示例中,针对被修补的功能的全部新的调用从新的插槽执行。在一些示例中,未修补的功能继续从旧的插槽执行。在一些示例中,来自要被修补的功能的过去的调用继续从旧的插槽执行。
响应于要被应用的第二热补丁,在一些示例中,所述热补丁同样地被应用于非活跃插槽,然后拍摄所述镜像版本的快照。然后所述快照可被用来确定在当前补丁生成中运行的线程的数量以及全部已加载的镜像的版本。
在一些示例中,每个热补丁具有对应的生成计数器,该生成计数器实际上是活跃热补丁插槽中的热补丁版本。在一些示例中,每个线程都用所述生成计数器标记,其指示所述线程所属的生成。参考计数器被设置为基于当前补丁生成运行的线程的数量(即,基数)。
在所述当前补丁生成中运行的线程中的每一个线程可被信号通知以解开和重绕所述线程的调用栈。在一些示例中,所述解开强制所述线程退回到所述线程的起始状态,并且所述重绕是重绕回到所述线程的开始。响应于完成重绕的线程,在一些示例中,所述线程在适当时自然地启用新修补的功能,并且将对应参考计数器递减一。
在一些示例中,所述解开和重绕在所述代码中的特定点发生。例如,在一些示例中,在线程已经被信号通知以解开和重绕后,响应于达到被动等待状态的线程-例如响应于线程正在队列中被动的等待-解开和重绕发生。在一些示例中,在线程处于积极等待状态的同时,解开和重绕尚未发生。积极等待状态的一个示例是等待锁定。在一些示例中,由于所述有限执行保证,因此保证所述线程将会在特定有限预定量时间内进入被动等待状态。在一些示例中,线程是执行中的二进制文件的一部分,并且执行中的二进制文件也在管理热修补;对应地,在一些示例中,当线程正在发信号时,所述线程正在信号通知所述执行中的二进制文件中协调热修补的部分。
在一些示例中,一旦针对补丁的参考计数达到0,这意味着所有针对相关联的补丁的全部线程都已经完成其重绕序列。对应地,响应于针对补丁的参考计数达到0,在一些示例中,回收所述逻辑插槽并将其原子地设置为非活跃的,并且可以回收所有与逻辑插槽相关联的资源-包括页面。然后可将所述逻辑插槽用于后续的热补丁。在一些示例中,基于所述有限执行保证,逻辑插槽被保证在特定有限量的时间内被回收。
用这种方式,在一些示例中,无需重启即可应用大于逻辑补丁插槽数量的一些(即,基数)热补丁。进一步,用这种方式,在一些示例中,无需重启即可应用无限数量的热补丁,即使逻辑插槽的数量有限。
在一些示例中,以这种方式执行的热修补确保在有限的短时间跨度内没有线程正执行不安全的代码,并利用有限执行保证以支持无限数量的热补丁,该无限数量的热修补具有有限且有界限的存储器开销。以这种方式执行的热修补可对应地限制热补丁所需的包括存储器的资源的量,使得存储器成本独立于生命周期中应用的热补丁的数量。以这种方式执行的热修补可允许数据的修补,而不仅仅是代码。在一些示例中,以这种方式执行的热修补还允许以证明为目的而做出的强有力的安全声明。例如,在一些示例中,一旦用于特定补丁插槽的参考计数达到0,便可证明预修补功能现已消失。这可被用于防止某些类型的攻击,比如切断堆栈以强制调用易受攻击的预修补功能的攻击。在一些示例中,那时预修补功能不再存在,使得这样的攻击就不会成功。在各种示例中,不仅仅是为了安全,还可以是因为各种不同的适当理由而完成热修补,包括因为其他各种适当理由-比如正确性和性能-加入新特征和修改行为。
以这种方式执行的热修补可用于任何适当环境中的热修补,尤其是在对停机敏感的环境中,比如服务器环境。这种方式下的热修补还可用于各种其他适当理由和环境,包括客户端和移动环境。例如,热修补可用于云主机环境中,并例如可用于客户端环境中以避免在客户端设备上对补丁的频繁定期重启。
示例性处理
为清楚起见,按照由系统的特定设备或组件以特定顺序执行的操作来描述本文所描述的处理。然而,应当注意的是,其他处理不限于所述顺序、设备或组件。例如,可按照不同的顺序执行某些动作,这些动作可并行、省略或者可以通过其他动作或特征补充,无论本文中是否描述了这样的顺序、并行性、动作或特征。同样地,任何本公开中所描述的技术均可并入所描述的处理或其他处理当中,无论该技术是否结合处理而被具体描述。所公开的处理还可在其他设备、组件或系统上执行或由他们来执行,无论本文中是否描述了这样的设备、组件或系统。还可以以各种方式体现这些处理。例如,它们可以体现在制造品上,例如,作为存储在处理器可读存储介质中的处理器可读指令或作为计算机实现处理而被执行。作为另一个示例,这些进程可被编码为处理器可执行指令并经由通信介质传输。
图3示出了针对处理(380)的示例数据流。在一些示例中,处理380由计算设备的处理器执行,例如,图1的处理电路110或图2的物理资源241、242或243。
在所示示例中,首先发生步骤381。在步骤381,在一些示例中,接收热补丁请求。在一些示例中,所请求的多个热补丁的基数大于逻辑补丁插槽的固定数量。如图所示,在一些示例中,接下来发生步骤382。在步骤382,在一些示例中,无需重启运行所述执行中的二进制文件的系统,将对应热补丁分配给固定数量的逻辑补丁插槽中的非活跃逻辑补丁插槽。在一些示例中,如果非活跃逻辑补丁插槽不可用,可延迟所述热补丁,例如,可将其置于队列或其他结构中供以后执行或使其失效。
在步骤383,在一些示例中,从所分配的逻辑补丁插槽执行对应热补丁,以基于对应热补丁来热修补执行中的二进制文件。在一些示例中,383包括将修改提交给例如如与热补丁相关联的指令中所示指示的基础和/或补丁镜像。如图所示,在一些示例中,接下来发生决策块384。在一些示例中,在决策块384,做出关于是否有更多针对热补丁的请求要被接收的决定。如果是,则所述处理可返回至步骤381。如果不是,则所述进程然后可进入返回块,在所述返回块中继续其他处理。
图4A-4B示出了处理(490)的示例数据流。在一些示例中,处理490由计算设备的处理器执行,例如,图1的处理电路110或图2的物理资源241、242或243。
在所示示例中,首先发生步骤491。在步骤491,在一些示例中,接收将热补丁应用于执行中的管理程序的请求。在一些示例中,多个线程正在所述执行中的管理程序的当前镜像中运行。如图所示,在一些示例中,接下来发生步骤492。在步骤492,在一些示例中,响应于所述请求,将与热补丁相关联的参考计数器设置为对应于所述多个线程的基数,所述多个线程正在运行所述执行中的管理程序的当前镜像。
如图所示,在一些示例中,接下来发生步骤493。在步骤493,在一些示例中,执行热补丁。如图所示,在一些示例中,接下来发生步骤494。在步骤494,在一些示例中,以信号通知所述多个线程解开和重绕。如图所示,在一些示例中,接下来发生步骤495。在步骤495,在一些示例中,每当所述多个线程中的线程完成重绕时,将与所述热补丁相关联的所述参考计数器递减。
如图所示,在一些示例中,接下来发生步骤496。在步骤496,在一些示例中,响应于达到零的所述参考计数器,随着执行中的二进制文件的继续执行,回收与所述热补丁相关联的资源。在一些示例中,此回收可包括将与所述热补丁相关联的逻辑补丁插槽标记为可单独或可联合其他操作而再使用。如图所示,所述进程然后可进入所述返回块,继续其他处理。
结论
尽管上面具体实施方式描述了本技术的某些示例并描述了预期的最佳方式,但是无论以上内容在本文中显得多么详尽,都可以通过许多方式实践本技术。具体细节在实施中可能会有所变化,但仍包含在本文所描述的技术中。如上所述,在描述本技术的某些特征或方面时使用的特定术语不应被视为暗示该术语在本文正被重新定义而受限于任何与该术语相关联的具体特点、特征或方面。通常,在下面权利要求书中使用的术语不应被解释为使本技术受限于本文所公开的特定示例,除非具体实施方式明确定义了这种术语。对应地,本技术的实际范围不仅包含所公开的示例,还包含实践或实施本技术的所有等同方式。
Claims (15)
1.一种装置,包括:
设备,包括至少一个存储器和至少一个处理器,所述至少一个存储器适于存储针对所述设备的运行时数据,所述至少一个处理器适于执行处理器可执行代码,所述处理器可执行代码响应于执行使所述设备能够执行动作,所述动作包括:
提供针对补丁镜像的固定数量的逻辑补丁插槽,以用于热修补执行中的二进制文件;
在分离的时间接收多个热补丁请求,其中,所述多个热补丁请求中的每个热补丁请求包括用以热修补所述执行中的二进制文件的对应热补丁,并且其中所请求的所述多个热补丁的基数大于逻辑补丁插槽的所述固定数量;以及
随着所述执行中的二进制文件继续执行,当每次将热补丁应用于所述执行中的二进制文件的请求被接收时:
将所述对应热补丁分配给所述固定数量的逻辑补丁插槽中的非活跃逻辑补丁插槽;以及
从所分配的所述逻辑补丁插槽执行所述对应热补丁,以基于所述对应热补丁来热修补所述执行中的二进制文件。
2.根据权利要求1所述的装置,其中,所述执行中的二进制文件是执行中的管理程序。
3.根据权利要求1所述的装置,所述动作进一步包括:
取消分配所述对应热补丁的所述逻辑补丁插槽;以及
响应于取消分配所述逻辑补丁插槽,回收与所述逻辑补丁插槽相关联的资源。
4.根据权利要求1所述的装置,所述动作进一步包括:
响应于所述对应热补丁的执行,将与所述对应热补丁相关联的参考计数器设置为:与正在运行所述执行中的二进制文件的当前镜像的多个线程的基数相对应;
以信号通知所述多个线程解开和重绕;
当每次所述多个线程中的一个线程完成所述重绕时,递减与所述热补丁相关联的所述参考计数器;以及
响应于所述参考计数器达到零,取消分配所述对应热补丁的所述逻辑补丁插槽。
5.根据权利要求4所述的装置,其中当每次所述多个线程中的一个线程完成重绕时,响应于相关联的函数被调用,所述线程根据所述相关联的函数的经修补版本来启用所述相关联的函数。
6.根据权利要求4所述的装置,其中,响应于所述多个线程接收到解开和重绕的信号,在所述多个线程中的每个线程达到被动等待状态时,所述线程开始解开和重绕。
7.一种方法,包括:
接收将热补丁应用于执行中的管理程序的请求,其中多个线程正在所述执行中的管理程序的当前镜像中运行;
响应于所述请求,将与所述热补丁相关联的参考计数器设置为与所述多个线程的基数相对应,所述多个线程正在运行所述执行中的管理程序的所述当前镜像;
执行所述热补丁;
以信号通知所述多个线程解开和重绕;
当每次所述多个线程中的一个线程完成所述重绕时,递减与所述热补丁相关联的所述参考计数器;以及
响应于所述参考计数器达到零,随着所述执行中的管理程序的继续执行,回收与所述热补丁相关联的资源。
8.根据权利要求7所述的方法,其中当每次所述多个线程中的一个线程完成所述重绕时,响应于相关联的函数被调用,所述线程根据所述相关联的函数的经修补版本来启用所述相关联的函数。
9.根据权利要求7所述的方法,其中响应于所述多个线程接收到解开和重绕的信号,在所述多个线程中的每个线程达到被动等待状态时,所述线程开始解开和重绕。
10.一种处理器可读存储介质,其上存储有处理器可执行代码,所述处理器可执行代码在由至少一个处理器执行时使动作能够被执行,所述动作包括:
执行具有有限执行保证的操作系统内核,使得多个线程正在执行中的操作系统内核的当前镜像上运行;
开始对所述执行中的操作系统内核的热补丁的执行;
将与所述热补丁相关联的计数器设置为与所述多个线程的基数相对应;
以信号通知所述多个线程解开和重绕;
当每次所述多个线程中的一个线程完成所述重绕时,将所述计数器递减一;以及
响应于计数器达到零,回收与所述热补丁相关联的资源。
11.根据权利要求1所述的装置,其中所述逻辑补丁插槽的固定数量为二。
12.根据权利要求1所述的装置,其中执行所述对应热补丁使所述执行中的二进制文件中的代码被修补,并且其中执行所述对应热补丁使所述执行中的二进制文件中的数据被修补。
13.根据权利要求1所述的装置,其中所述执行中的二进制文件是执行中的操作系统内核。
14.根据权利要求7所述的方法,其中所述执行中的管理程序是执行中的操作系统内核。
15.根据权利要求7所述的方法,其中执行所述热补丁使所述执行中的管理程序中的代码被修补,并且其中执行所述热补丁使所述执行中的管理程序中的数据被修补。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/010,350 US10649763B2 (en) | 2018-06-15 | 2018-06-15 | Resource efficient deployment of multiple hot patches |
US16/010,350 | 2018-06-15 | ||
PCT/US2019/035898 WO2019241026A1 (en) | 2018-06-15 | 2019-06-07 | Resource efficient deployment of multiple hot patches |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112384893A true CN112384893A (zh) | 2021-02-19 |
Family
ID=67211814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980039900.8A Pending CN112384893A (zh) | 2018-06-15 | 2019-06-07 | 多个热补丁的资源上高效的部署 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10649763B2 (zh) |
EP (1) | EP3807755B1 (zh) |
CN (1) | CN112384893A (zh) |
WO (1) | WO2019241026A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828772B (zh) * | 2019-02-19 | 2022-03-11 | 百度在线网络技术(北京)有限公司 | 热更新方法、操作系统、终端设备和存储介质 |
US11490453B2 (en) * | 2019-05-16 | 2022-11-01 | Apple Inc. | Self-organizing device |
US11934819B2 (en) | 2021-03-26 | 2024-03-19 | Target Brands, Inc. | Bare-metal deployment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107416A1 (en) * | 2002-12-02 | 2004-06-03 | Microsoft Corporation | Patching of in-use functions on a running computer system |
CN103942073A (zh) * | 2014-04-08 | 2014-07-23 | 北京奇虎科技有限公司 | 实现系统热补丁的方法及装置 |
US20150186049A1 (en) * | 2013-12-31 | 2015-07-02 | Freescale Semiconductor, Inc. | System and method for low cost patching of high voltage operation memory space |
CN107329781A (zh) * | 2017-06-21 | 2017-11-07 | 努比亚技术有限公司 | 软件热修复方法、终端、系统及计算机可读存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7886287B1 (en) * | 2003-08-27 | 2011-02-08 | Avaya Inc. | Method and apparatus for hot updating of running processes |
US7472384B1 (en) * | 2003-12-02 | 2008-12-30 | Swsoft Holdings, Ltd. | System, method and computer program product for on-the-fly patching of executable code |
US8539469B2 (en) * | 2004-05-11 | 2013-09-17 | Microsoft Corporation | Efficient patching |
US20060288341A1 (en) * | 2005-06-15 | 2006-12-21 | Microsoft Corporation | Patch-impact assessment through runtime insertion of code path instrumentation |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
CN101799763B (zh) * | 2009-02-10 | 2013-01-30 | 华为技术有限公司 | 内核在线补丁的方法、装置和系统 |
CN101561764B (zh) | 2009-05-18 | 2012-05-23 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
CN102156661B (zh) * | 2010-02-11 | 2013-06-12 | 华为技术有限公司 | 在线补丁的激活方法、装置及系统 |
CN102467394A (zh) * | 2010-11-12 | 2012-05-23 | 中兴通讯股份有限公司 | 多核热补丁的实现方法及系统 |
US9342285B2 (en) * | 2012-11-30 | 2016-05-17 | Huawei Technologies Co., Ltd. | Method and apparatus for detecting code change |
US9626180B2 (en) * | 2013-12-16 | 2017-04-18 | International Business Machines Corporation | Live operating system update mechanisms |
US9720719B2 (en) * | 2013-12-23 | 2017-08-01 | Citrix Systems, Inc. | Method and system for optimizing virtual disk provisioning |
US10248409B1 (en) * | 2014-12-03 | 2019-04-02 | Amazon Technologies, Inc. | Limiting the effects of source code patches on corresponding native-code patches |
US10255088B2 (en) * | 2016-05-13 | 2019-04-09 | Red Hat Israel, Ltd. | Modification of write-protected memory using code patching |
US10360020B2 (en) * | 2017-04-11 | 2019-07-23 | Nio Usa, Inc. | Virtual machine (VM) approach to embedded system hot update |
CN107357622B (zh) * | 2017-07-17 | 2020-09-22 | 迈普通信技术股份有限公司 | 热补丁实现方法及通信设备 |
-
2018
- 2018-06-15 US US16/010,350 patent/US10649763B2/en active Active
-
2019
- 2019-06-07 EP EP19737286.5A patent/EP3807755B1/en active Active
- 2019-06-07 WO PCT/US2019/035898 patent/WO2019241026A1/en active Application Filing
- 2019-06-07 CN CN201980039900.8A patent/CN112384893A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107416A1 (en) * | 2002-12-02 | 2004-06-03 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US20150186049A1 (en) * | 2013-12-31 | 2015-07-02 | Freescale Semiconductor, Inc. | System and method for low cost patching of high voltage operation memory space |
CN103942073A (zh) * | 2014-04-08 | 2014-07-23 | 北京奇虎科技有限公司 | 实现系统热补丁的方法及装置 |
CN107329781A (zh) * | 2017-06-21 | 2017-11-07 | 努比亚技术有限公司 | 软件热修复方法、终端、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20190384591A1 (en) | 2019-12-19 |
EP3807755A1 (en) | 2021-04-21 |
EP3807755B1 (en) | 2023-03-08 |
WO2019241026A1 (en) | 2019-12-19 |
US10649763B2 (en) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9135126B2 (en) | Multi-core re-initialization failure control system | |
US9317320B2 (en) | Hypervisor-based server duplication system and method and storage medium storing server duplication computer program | |
US9411646B2 (en) | Booting secondary processors in multicore system using kernel images stored in private memory segments | |
US11048537B2 (en) | Virtual machine compute re-configuration | |
US20170060697A1 (en) | Information handling system with persistent memory and alternate persistent memory | |
US10474484B2 (en) | Offline management of virtualization software installed on a host computer | |
US12020050B2 (en) | Processor feature ID response for virtualization | |
JP2016508647A5 (zh) | ||
KR102219122B1 (ko) | 다중-운영-체제 환경들에서 운영 체제 전환들을 위한 기술들 | |
EP3807755B1 (en) | Resource efficient deployment of multiple hot patches | |
EP4030289A1 (en) | Method and device for virtual machine memory management | |
US11593170B2 (en) | Flexible reverse ballooning for nested virtual machines | |
US9886387B2 (en) | Method and system for performing on-demand data write through based on virtual machine types | |
US20100251250A1 (en) | Lock-free scheduler with priority support | |
US10838737B1 (en) | Restoration of memory content to restore machine state | |
US10684900B2 (en) | Enhanced message control banks | |
RU2780973C2 (ru) | Ответ с идентификатором функции процессора для виртуализации | |
US11914512B2 (en) | Writeback overhead reduction for workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |