掌桥专利:专业的专利平台
掌桥专利
首页

代理对象系统

文献发布时间:2023-06-19 13:49:36


代理对象系统

本发明专利申请是国际申请号为PCT/US2017/014793,国际申请日为2017年1月25日,进入中国国家阶段的申请号为201780009262.6,名称为“代理对象系统”的发明专利申请的分案申请。

背景

计算设备、组件和系统基于驱动程序进行操作。驱动程序是便于操作或控制一种类型的设备、组件或系统的计算机程序。例如,驱动程序可提供针对硬件设备的软件接口以使操作系统和其他计算机程序能够访问硬件功能,而无需知道所使用的硬件的精确细节。驱动程序还可以与虚拟硬盘(VHD)相关联。虚拟硬盘可以与物理硬盘驱动器(HDD)相关联。VHD允许多个操作系统驻留在单个主机(例如,节点)上。通常,当在节点上使用VHD和VHD驱动程序时,无法在不关闭虚拟机(VM)的情况下执行替换VHD驱动程序。支持节点上的承租者应用和服务的VM活跃地使用VHD和VHD驱动程序。在此方面,VHD的活跃资源(例如,打开文件句柄)必须被关闭,并随后在卸载和加载新的VHD驱动程序之前关闭VM。如此,用于避免关闭VM以升级驱动程序的系统可改善VM的正常运行时间和业务连续性并且便于更改驱动程序。

概述

本文中描述的各实施例提供了用于基于代理对象系统对分布式计算系统中的软件组件进行无缝修改的方法和系统。在较高级别,代理对象系统利用基于代理主体的机制,以在修改软件组件时允许有限的操作中断。代理对象作为软件组件的代理(主体)进行操作,以防止在对软件组件进行修改时停机。代理对象系统可基于代理对象组件来实现,该代理对象组件支持用于通信的接口、用于保存状态信息的存储、以及作为代理对象系统框架的一部分的代理对象(代理计数对象、代理引用对象)。作为示例,虚拟机(VM)操作系统可使用软件组件(例如,虚拟硬盘(VHD)驱动程序组件)来支持对系统资源(例如,VHD上的文件系统)的访问。软件组件被配置有代理对象组件,该代理对象组件使用基于代理主体的机制来操作软件组件,使得可在有限中断VM的情况下执行对软件组件的修改(例如,不关闭VM以供升级软件组件)。

在操作中,代理对象组件使用软件组件接收或截获待处理的任务请求。代理对象组件为任务生成代理对象来考虑代理对象组件内的任务。任务可以是用于通信的输入/输出(I/O)任务或用于持续处理的会话任务(例如,针对文件的打开句柄)。如此,代理对象组件还被配置为确定任务请求是针对I/O任务的还是针对会话任务的,并且基于所确定的任务类型来处理该任务请求。例如,针对I/O任务,所生成的代理对象是跟踪软件组件上活跃的任何I/O任务的代理计数对象,而针对会话任务,所生成的代理对象是代理引用对象。

在接收到修改软件组件的指示时,代理对象组件启动待机模式以基于代理对象组件和软件组件处的待机操作来进行处理。待机操作可包括基于对在代理对象组件处跟踪的代理计数对象进行计数来最终确定正在处理的I/O任务以确认所有的I/O任务都已被处理。例如,在继续修改软件组件之前,确定与代理计数对象相关联的计数器为零(即,软件组件处没有活跃的代理计数对象)。而且,待机操作包括在软件组件处促使关闭会话任务(例如,针对文件的打开句柄);但是,代理对象组件中的相应代理引用对象处于挂起状态。此外,在代理对象组件处接收到的新的任务请求处于挂起状态并不会被立即处理。代理对象组件还可促使保留和恢复软件组件的状态信息。

在考虑代理计数对象、代理引用对象和新的传入任务请求之后,软件组件可被删除、修改和恢复,而无需关闭与软件组件相关联的VM。然后,代理对象组件可启动恢复模式以基于代理对象组件和软件组件处的恢复操作来进行处理。恢复操作可包括为在代理对象组件中处于挂起状态的代理引用对象重新生成引用对象,并处理在待机模式期间接收时也处于挂起状态的新的任务请求。经修改的软件组件还可检索经保留的状态信息并继续正常的软件组件操作。

提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在独立地用于帮助确定所要求保护的主题的范围。

附图简述

下面参考附图详细描述本发明,其中:

图1是其中本文中描述的各实施例可被采用的示例性代理对象系统环境的框图;

图2是其中本文中描述的各实施例可被采用的示例性代理对象系统的框图;

图3是根据本文中描述的各实施例的代理对象系统的示例性实现的框图;

图4是示出根据本文中描述的各实施例的用于实现代理对象系统的示例性方法的流程图;

图5是示出根据本文中描述的各实施例的用于实现代理对象系统的示例性方法的流程图;

图6是适用于实现本文中描述的各实施例的示例性计算环境的框图;以及

图7是适用于实现本文中描述的各实施例的示例性分布式计算系统的框图。

详细描述

计算设备、组件和系统基于被称为驱动程序的软件组件来操作。驱动程序是便于操作或控制一种类型的设备、组件或系统的计算机程序。例如,驱动程序可向硬件设备提供软件接口以使操作系统和其他计算机程序能够访问硬件功能,而无需知道所使用的硬件的精确细节。驱动程序还可以与虚拟硬盘(VHD)相关联。虚拟硬盘可以与物理硬盘驱动器(HDD)相关联。VHD允许多个操作系统驻留在单个主机(例如,节点)上。

VHD可在被称为云计算基础结构的可扩展基础结构中实现。云计算基础设施(即,分布式计算系统)支持可配置计算、存储和联网资源的共享池上的操作。例如,云计算基础设施可实现被配置成运行由操作系统(OS)支持的多个虚拟机(VM)的计算节点。计算节点供应分配给VM的资源。VM支持云计算基础设施中的一个或多个托管应用和/或服务(例如,承租者)的操作。作为示例,虚拟化存储堆栈或计算堆栈功能性使用虚拟硬盘驱动器微端口驱动程序(VHDMP)来得到支持,该VHDMP展示块设备(即,支持一次读取和写入整个数据块(例如,硬盘上的扇区)的设备)。使用VHDMP安装的块设备支持对与云计算存储基础设施内的团块存储相关联的团块接口的访问,使得该团块存储能作为虚拟硬盘驱动器(VHD)由VM来访问。如在本公开中使用的用于管理作为团块的虚拟硬盘驱动器的系统和过程在2013年7月17日提交的题为“管理作为团块的虚拟硬盘驱动器(Managing Virtual Hard Drives asBlobs)”的美国申请S/N.13/944,627中作进一步描述。另外,在本公开中使用的用于管理和控制模块化数据操作的系统和过程在题为“模块化数据操作系统(MODULAR DATAOPERATIONS SYSTEMS)”的美国申请(尚未转让)(代理人案卷号MFCP.241696)中作进一步描述。

当计算系统必须保持运行时,在修改支持计算系统的软件组件的同时保持该计算系统运行是有价值的。例如,在云计算基础架构中,升级VHD驱动程序而不停机可能对客户而言是重要的,因为这为实现经由VM支持的应用和服务提供了业务连续性和可预测性。通常,在不使用节点上的VHD和VHD驱动程序关闭虚拟机(VM)的情况下,替换VHD驱动程序无法被执行。支持节点上的承租者应用和服务的VM正在活跃地使用VHD和VHD驱动程序;在此方面,在卸载和加载新的VHD驱动程序之前,必须关闭VHD的活跃资源并关闭VM。如此,用于避免关闭VM以升级驱动程序的系统可改善VM的业务连续性和正常运行时间并且便于更改驱动程序。

本公开的实施例提供用于在分布式计算系统中实现代理对象系统的简单且有效的方法和系统。在较高级别,代理对象系统利用基于代理主体的机制,以在修改软件组件时允许有限的操作中断。代理对象作为软件组件的代理(主体)进行操作,以防止在对软件组件进行修改时停机。代理对象系统可基于代理对象组件来实现,该代理对象组件支持用于通信的接口、用于保存状态信息的存储、以及作为代理对象系统框架的一部分的代理对象(代理引用对象、代理计数对象)。作为示例,虚拟机(VM)操作系统可使用软件组件(例如,虚拟硬盘(VHD)驱动程序组件)来支持对系统资源(例如,VHD上的文件系统)的访问。软件组件被配置有代理对象组件,该代理对象组件使用基于代理主体的机制来操作软件组件,使得可在有限中断VM的情况下执行对软件组件的修改(例如,不关闭VM以供升级软件组件)。

在操作中,代理对象组件使用软件组件接收或截获待处理的任务请求。代理对象组件为任务生成代理对象来考虑代理对象组件内的任务。任务可以是用于通信的输入/输出(I/O)任务或用于持续处理的会话任务(例如,针对文件的打开句柄)。如此,代理对象组件还被配置为确定任务请求是针对I/O任务的还是针对会话任务的,并且基于所确定的任务类型来处理该任务请求。例如,针对I/O任务,所生成的代理对象是跟踪软件组件上活跃的任何I/O任务的代理计数对象,而针对会话任务,所生成的代理对象是代理引用对象。

在接收到修改软件组件的指示时,代理对象组件启动待机模式以基于代理对象组件和软件组件处的待机操作来进行处理。待机操作可包括基于对在代理对象组件处跟踪的代理计数对象进行计数来最终确定正在处理的I/O任务以确认所有的I/O任务都已被处理。例如,在继续修改软件组件之前,确定与代理计数对象相关联的计数器为零(即,软件组件处没有活跃的代理计数对象)。而且,待机操作包括在软件组件处促使关闭会话任务(例如,针对文件的打开句柄);但是,代理对象组件中的相应代理引用对象处于挂起状态。此外,在代理对象组件处接收到的新的任务请求处于挂起状态并不会被立即处理。代理对象组件还可促使保留和恢复软件组件的状态信息。

在考虑代理计数对象、代理引用对象和新的传入任务请求之后,软件组件可被删除、修改和恢复,而无需关闭与软件组件相关联的VM。然后,代理对象组件可启动恢复模式以基于代理对象组件和软件组件处的恢复操作来进行处理。恢复操作可包括为在代理对象组件中处于挂起状态的代理引用对象重新生成引用对象,并处理在待机模式期间接收时也处于挂起状态的新的任务请求。经修改的软件组件还可检索并恢复经保留的状态信息并继续正常的软件组件操作。

首先参考图1,图1例示了在其中本公开的实现可被采用的示例性代理对象系统100。具体而言,图1示出了根据本公开实现的具有节点110的代理对象系统100的高级架构,该节点110具有代理对象组件120、高速缓存存储130、数据存储(VHD团块存储)140和驱动程序组件150。在未示出的其他组件中,代理对象系统100包括运行VM 112的节点110、计算设备、用户客户端160和管理员客户端170,其中参考图6和7更详细地描述节点、VM和计算设备。

如本文中使用的系统指代任何设备、过程或服务或其组合。可以使用作为硬件、软件、固件、专用设备或其任何组合的组件来实现系统。系统可被集成到单个设备中或者其可以分布在多个设备上。系统的各种组件可以是共处一处的或分布式的。该系统可由其他系统及其组件形成。应当理解,本文中描述的这种及其他布置仅作为示例来阐明。

已经标识出了代理对象系统100的各种组件,需要注意,任意数量的组件可被采用来实现本发明的范围内的期望的功能。尽管为了清楚起见用线条示出了图1的各组件,但是在实际上,各组件的描绘并不是那样清楚,并且按比喻的说法,线条更精确地将是灰色的或模糊的。此外,虽然图1的某些组件被描述成各单独的组件,但是该描绘在性质上和数量上是示例性的,且不应该解释为对本发明的所有实现的限制。代理对象系统100的功能可基于上文列出的组件的功能和特征被进一步描述。

作为所示的布置及元素的补充或替换,可使用其他布置及元素(例如机器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本文中描述的许多元素是功能实体,其可被实现为分立或分布式组件,或者结合其他组件且以任何合适的组合和位置来实现。本文中被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行被储存在存储器中的指令的处理器来执行。

下文参考诸如使用驱动程序组件150、高速缓存存储130和数据存储(VHD团块存储)160支持的文件系统操作的示例来详细描述本公开的实施例。附加地,讨论了示例性任务(例如,I/O任务和会话任务)。尽管如此,所指示的具体示例并不意味着限制。在一个示例性实施例中,如图2所示,代理对象系统200包括代理组件204,该代理组件204具有用于通信的接口260,用于保存状态信息270的存储、以及作为代理对象系统框架的一部分的代理对象(代理计数对象280、代理引用对象290)。在较高级别,代理对象系统利用基于代理主体的机制,以在修改软件组件时允许有限的操作中断。代理对象作为软件组件的代理(主体)进行操作,以防止在对软件组件进行修改时停机。

继续参考图2,图2例示了示例性代理对象系统200,该代理对象系统200具有操作系统202、代理对象组件204、驱动程序组件206、文件系统存储208(例如,备份存储(VHD团块存储)和高速缓存存储)。操作系统202负责处理虚拟机和/或节点中的操作。操作系统202管理计算机硬件和软件资源并为程序提供公共服务。具体而言,操作系统202支持用于提供代理对象系统功能的操作。操作系统202处理任务请求以在虚拟机上执行操作。操作系统202接收访问与虚拟机相关联的资源的请求。例如,操作系统202可接收访问文件系统中的文件的任务请求。任务请求可以是输入/输出(I/O)任务通信或打开文件句柄以访问文件的会话任务。在此方面,当访问文件或检索信息以满足I/O任务时,I/O任务可相对快速地完成,而在会话任务期间,文件句柄可能会打开一段时间,因为在此时文件被打开以供处理。例如,文件句柄与文件关联,直到进程终止或句柄关闭。本公开的实施例构想了任务请求的其他类型的变化和组合。

驱动程序组件206负责处理经由操作系统接收的任务请求以访问系统资源。驱动程序组件206通常可以指代支持硬件或软件组件的功能的程序。驱动程序组件206可作为操作系统的一部分被包括在内,或者单独地被初始化和部署。驱动程序组件206可支持与利用驱动程序的系统资源进行通信。作为示例,可使用驱动程序来支持对虚拟硬盘(VHD)的访问。驱动程序组件206还可具有驱动程序组件的各组件所支持的特定功能(例如,用于文件系统的重定向器驱动程序或用于管理和控制数据操作的数据访问组件驱动程序)。作为示例,驱动程序组件206可具体地支持文件代理格式的文件代理,该文件代理格式被用于将数据访问请求重定向到文件系统存储(例如,缓存存储或备份存储)。请求实体(例如,经由VM的用户客户端160)将数据访问请求定向到作为块设备安装的VHD,但基于重定向器驱动程序组件操作以提供对备份存储的访问,将数据请求从文件代理格式转换为blob存储格式。此外,驱动程序组件206还可以是使用备份存储的数据访问组件,并且高速缓存存储还将高速缓存存储数据结构、高速缓存块延迟写入和数据访问限制实现为模块化数据操作系统的一部分。驱动程序组件206与操作系统一起工作以处理访问文件系统存储208的任务请求。如上文所描述的,驱动程序组件206处理I/O任务和会话任务。

代理对象组件204操作以促进与代理对象组件204相关联的驱动程序组件的无缝修改。代理对象组件204可被初始化或集成为驱动程序组件206的一部分,以借助于代理主体机制专门支持驱动程序组件206的功能。代理对象组件204作为驱动程序组件206的代理(主体)进行操作,以防止在对驱动程序组件206进行修改时停机。代理对象组件206可基于代理对象组件206来实现,该代理对象组件支持用于通信的接口260、用于保存状态信息270的存储、以及代理对象(代理计数对象280、代理引用对象290)。代理对象组件204接收或截获传递给操作系统202的任务请求,该任务请求被指向驱动程序组件以执行I/O任务或会话任务。代理对象组件204可截获任务请求,并在一个实现中确定该任务是I/O任务还是会话任务以便执行附加处理。

代理对象组件204负责为任务请求生成代理对象并将任务请求传递给驱动程序组件206。代理对象组件204在对驱动程序组件206的修改之前生成用于任务请求的代理对象,以便在修改驱动程序组件206之前避免关闭驱动程序组件。所生成的代理对象对应于在驱动程序组件206处处理任务请求时基于任务请求生成的驱动程序组件206对象。代理对象组件204基于被截获的任务请求的类型生成代理对象。如此,当代理对象组件204确定任务请求是I/O任务时,代理对象组件204生成代理计数对象,而当代理对象组件206确定任务请求是会话任务请求时,代理对象组件206生成代理引用对象。

代理计数对象280可被实现为跟踪I/O任务的计数器。当I/O任务作为输入处理时计数器增加,而当该任务作为输出处理时计数器减少。经由代理对象组件204向驱动程序组件206传递I/O任务和处理来自驱动程序组件206的I/O任务指示已完成的I/O任务不再需要在代理对象组件204处被跟踪。计数器继续跟踪驱动程序组件206处的任何活跃的I/O任务。代理引用对象290可被实现为指向驱动程序组件处的对应引用对象的指针。指针在代理对象组件204中作为对驱动程序组件206处的引用对象的引用。当驱动程序组件206已完成处理与引用对象相关联的会话任务时,代理引用对象可被删除。代理对象组件204将任务请求传递给驱动程序组件206以使得在驱动程序组件206处对该任务请求进行处理。驱动程序组件206可能在不知晓在代理对象组件204处执行的截获和处理的情况下进行操作。

代理对象组件204负责确定对驱动程序组件206的修改指示已经被请求,并且在对驱动程序组件进行修改之前实现待机模式,并且在已执行修改后实现后续恢复模式。可基于驱动程序组件206的管理员选择执行正运行的驱动程序组件206的软件维护,从计算设备(例如,管理员客户端170)传递修改指示。代理对象组件204可以以若干不同的方式确定或接收修改指示。例如,操作系统202可向驱动程序组件206发送通信以关闭,以便修改驱动程序组件206,并随后驱动程序组件206可将此通信转发到代理对象组件204。代理对象组件204还可将接口260实现为用于与驱动程序组件206进行通信的代理,使得代理对象组件204截获与驱动程序组件206进行的通信。如此,代理对象组件204能够接收将对驱动程序组件206进行修改的通信。修改指示或通信可以用于在驱动程序组件206上执行软件维护。修改通常可涉及对驱动程序组件206的适应性,完善性,矫正性和预防性变化。驱动程序组件206的经修改版本替换了驱动程序组件206的先前版本。例如,可安装新版本的驱动程序组件并卸载旧版本。本公开的各实施例构想了传递将在驱动程序组件上执行的修改操作的指示的其他变形和通信方法以及待执行的修改操作的类型。

代理对象组件204负责启动执行待机操作的待机模式。待机模式与代理对象组件204和驱动程序组件206相关联,以执行与每个组件相关联的待机操作。待机操作指的是如下动作:在代理对象组件处将传入任务请求置于挂起状态、在驱动程序组件处关闭I/O任务和会话任务的处理、并将驱动程序组件206中的引用对象的相应代理引用对象置于挂起状态。例如,代理组件204可确定已经处理了代理计数对象并减少了针对每个已完全处理的I/O任务的计数器。代理对象组件204还可确定对应于代理引用对象的引用对象在驱动程序组件206处是关闭的。然后,代理对象组件206将在代理对象组件206处接收到的代理引用对象和一个或多个新的任务请求置于挂起状态。然后,代理对象组件204可与操作系统通信以开始对驱动程序组件206的修改。然后,代理对象组件204可确定或接收驱动程序组件已被修改为驱动程序组件206的经修改版本的指示。

代理对象组件204还负责启动执行恢复操作的恢复模式。恢复模式与代理对象组件204和驱动程序组件206相关联,以执行与每个组件相关联的恢复操作。恢复操作指的是如下动作:在代理对象组件204处在修改处于挂起状态的驱动程序组件206之前为代理引用对象重新生成引用对象;在代理对象组件处处理处于挂起状态的新的任务请求;并且在现已被修改的驱动程序组件206处传递新的任务请求以进行处理。例如,请求被传递以在挂起状态下为代理引用对象重新生成引用对象,以及在驱动程序组件206的修改期间接收到的一个或多个新的任务请求被作为代理计数对象或代理引用对象处理并被传递给现已被修改的驱动程序组件206。

代理对象组件204还可包括保留和恢复驱动程序组件的状态信息的待机操作和恢复操作。状态信息可能指的是驱动程序组件的数据变量的值,例如,在驱动程序组件206执行的任何给定时间的存储器位置的内容。状态信息可以是在修改驱动程序组件206之前获取的数据变量或存储器内容的快照。待机操作可包括传递用于保存驱动程序组件状态信息的消息的动作。状态信息被保存使得在针对经修改的驱动程序组件进行驱动程序组件206的修改时,状态信息可在经修改的驱动程序组件处被检索和恢复。恢复操作包括如下动作:将用于检索和恢复状态信息的消息传递给经修改的驱动程序组件。状态信息可与代理对象组件204相关联地存储。作为示例,在待机模式中,待机操作可包括代理对象组件向驱动程序组件206传递请求保存状态信息并将状态信息传递给代理对象组件204,并且代理对象组件204存储该状态信息。然后,在恢复模式中,恢复操作可包括将状态信息传递给经修改的驱动程序组件,以使经修改的驱动程序组件恢复状态信息并且至少部分地基于经恢复的状态信息开始处理任务请求。本公开的各实施例构想了用于保护和恢复来自驱动程序组件206的状态信息的方法的其他变型和组合。

参考图3,提供了用于实现代理对象组件的系统和方法的示意图。图3包括操作系统202、代理对象组件204、驱动程序组件206和文件系统存储208。在步骤210,操作系统202将任务请求传递给驱动程序组件206。在步骤212,代理对象组件204截获指向驱动程序组件206的任务请求并处理该任务请求。处理任务请求包括代理对象组件204基于任务请求是针对I/O任务还是会话任务来确定任务请求是I/O任务还是会话任务以生成代理对象。具体而言,当任务请求是I/O任务时生成代理计数对象,而当任务是会话任务时生成代理引用对象。代理计数对象被实现为跟踪I/O任务的计数器,使得,当I/O任务作为输入进行通信时计数器增加,而当I/O任务作为输出进行通信时计数器减少。代理引用对象被实现为指向驱动程序组件206中的对应引用对象的指针。

在步骤214,代理对象组件204传递任务请求以致使在驱动程序组件206处处理任务请求。驱动程序组件206处理I/O任务或会话任务。在步骤216,驱动程序组件206与文件系统存储208进行通信,以处理任务请求。具体而言,处理I/O任务包括接收输入并传递来自文件系统存储208的输出,而处理会话任务包括打开用于访问文件系统存储208中的文件的文件句柄。在步骤218,可将任务请求状态从驱动程序组件传递给代理对象组件。例如,可处理I/O任务并完成经传递的I/O任务,使得I/O代理计数对象在代理对象组件204处的计数器处减少,或者会话任务代理引用对象在与驱动程序组件处的引用对象相关联的句柄关闭时关闭。在步骤220,操作系统还可接收任务请求状态信息,例如,指示I/O任务完成的消息或被传递以指示存在用于文件的和开始访问来自文件系统存储208的文件的应用的打开文件句柄。

在步骤222,操作系统202可将修改指示传递给代理对象组件204。修改指示可传递将会需要关闭驱动程序组件206的将在驱动程序组件206上执行的软件维护(例如,驱动程序升级或降级)。在框224,代理对象组件204接收修改指示以修改驱动程序组件206,并然后代理对象组件204启动执行待机操作的待机模式。在代理对象组件204和驱动程序组件206处执行待机操作,以允许操作系统202将驱动程序组件206修改为经修改的驱动程序组件。具体而言,待机操作可包括传递消息,在步骤226,驱动程序组件执行待机操作;在步骤228,基于启动待机模式处理驱动程序组件206处的消息;在步骤230,与文件系统存储208传递消息;并在步骤232,在代理对象组件204处接收消息;步骤226-232有助于确定代理计数对象已被处理;确定与代理引用对象相对应的驱动程序组件206中的引用对象在驱动程序组件206处被关闭;将在待机模式下接收的代理引用对象和一个或多个新的任务请求置于挂起状态;以及保留驱动程序组件206的状态信息,其中状态信息在经修改的驱动程序组件上被检索和恢复。

在步骤234,代理对象组件234向操作系统202传递操作系统202可以开始对驱动程序组件206进行修改的指示。在步骤236,操作系统202实施修改以执行软件维护。在步骤238,操作系统202向代理对象组件204传递修改已被完成。

在框240,代理对象组件204接收修改已被完成的通信,并然后代理对象组件204启动执行恢复操作的恢复模式。在代理对象组件204和驱动程序组件206(经修改的驱动程序组件)处执行恢复操作以允许使用经修改的驱动程序组件处理处于挂起状态的代理对象组件和新的任务请求处的对象。具体而言,恢复操作可包括传递消息,在步骤242,驱动程序组件206执行恢复操作;在步骤244,基于启动恢复模式处理驱动程序组件206处的消息;在步骤246,与文件系统存储208传递消息;并在步骤248,在代理对象组件204处接收消息;步骤242-248有助于在经修改的驱动程序组件处检索和恢复在驱动程序组件206被修改之前从驱动程序组件保留的状态信息;在经修改的驱动程序组件中为处于挂起状态的代理引用对象重新生成引用对象;以及传递处于挂起状态的一个或多个新的任务请求以便在经修改的驱动程序组件处进行处理。

现在转向图4,提供了例示用于实现代理对象系统的方法400的流程图。最初在框410,截获指向驱动程序组件的任务请求。在框420,作出任务请求是输入/输出(I/O任务)还是会话任务的确定。在框430,当任务请求是I/O任务时生成代理计数对象,而当任务是会话任务时生成代理引用对象。在框440,传递任务请求以使得在驱动程序组件处处理该任务请求。在框450,接收修改驱动程序组件的修改指示。在框460,启动执行待机操作的待机模式;待机模式包括基于待机操作处理任务请求和代理对象。在470,作出驱动程序组件已被修改为驱动程序组件的经修改版本的确定。在480,启动执行恢复操作的恢复模式;恢复模式包括基于恢复操作处理任务请求和代理对象。

现在转向图5,提供了例示用于实现代理对象系统的方法500的流程图。最初在框510,在驱动程序组件处从代理对象组件接收任务请求。在框520,在驱动程序组件处处理任务请求。基于任务请求是I/O任务请求还是会话任务请求来处理该任务请求。在框530,部分地基于接收修改指示的代理对象组件来接收启动待机模式的指示。修改指示传递待修改的驱动程序组件。在框540,在驱动程序组件处启动待机模式。待机模式包括基于待机操作处理任务请求和代理对象。驱动程序组件处的待机操作包括:处理驱动程序组件上活跃的I/O任务,而不接受新的I/O任务;在驱动程序组件处关闭具有相应的代理引用对象的引用对象;保留驱动程序组件的状态信息;以及启动对驱动程序组件的关闭。

在框550,初始化驱动程序组件的经修改版本。在框560,在初始化经修改的驱动程序组件时,启动恢复模式。恢复模式包括基于恢复操作处理任务请求和代理对象。驱动程序组件处的恢复操作包括:在驱动程序组件被修改之前检索和恢复从驱动程序组件保留的状态信息;为处于挂起状态的代理对象组件上的代理引用对象重新生成引用对象;以及处理一个或多个任务请求,新的任务请求将从代理对象组件处的挂起状态中移除并被传递给驱动程序组件以进行处理。

参考代理对象系统,本文描述的各实施例利用基于代理主体的机制允许在修改软件组件时操作中的有限中断。代理对象系统服务平台组件指的是用于管理对数据的访问的集成组件。集成组件是指使用代理对象系统服务平台来支持数据访问功能的硬件架构和软件框架。硬件架构是指物理组件及其相互之间的关系,而软件框架是指提供可以用在设备上被操作的硬件来实现的功能的软件。端到端的基于软件的代理对象系统服务平台可在代理对象系统服务平台组件内操作,以对计算机硬件进行操作来提供代理对象系统服务平台功能。如此,代理对象系统服务平台组件可管理资源并为代理对象系统功能提供服务。本发明的各实施例构想了它们的任何其他变化及组合。

作为示例,代理对象系统服务平台可包括API库,该API库包括针对例程、数据结构、对象类及变量的规范,这些规范可支持设备的硬件架构与代理对象系统服务平台系统的软件框架的交互。这些API包括针对代理对象系统服务平台系统的配置规范,使得其中的驱动程序组件和组件可在代理对象系统服务平台中彼此通信,如本文所描述的。

在简要描述了本发明各实施方式的概览之后,以下描述其中可实现本发明的各实施方式的示例性操作环境,以便为本发明各方面提供通用上下文。首先具体参考图6,示出了用于实现本发明的各实施方式的示例性操作环境,并将其概括地指定为计算设备600。计算设备600只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将计算设备600解释为对所例示的任一组件或其组合有任何依赖性或要求。

本发明可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令(包括诸如程序模块之类的计算机可执行指令)的一般上下文中描述。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。

参考图6,计算设备600包括直接或间接耦合以下设备的总线610:存储器612、一个或多个处理器614、一个或多个呈现组件616、输入/输出端口618、输入/输出组件620和说明性电源622。总线610表示可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。虽然为了清楚起见利用线条示出了图6的各框,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等呈现组件认为是I/O组件。而且,处理器也具有存储器。可以认识到,这是本领域的特性,并且重申,图6的图示只是例示可结合本发明的一个或多个实施方式来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图6的范围之内的并且被称为“计算设备”。

计算设备600通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备600访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性与非易失性、可移动与不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或能用于储存所需信息且可以由计算设备600访问的任何其他介质。计算机存储介质将信号本身排除在外。

通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”意指以在信号中对信息进行编码的方式来使其一个或多个特性被设定或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。

存储器612包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备600包括从诸如存储器612或I/O组件620等各种实体读取数据的一个或多个处理器。呈现组件616向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等等。

I/O端口618允许计算设备600逻辑上耦合至包括I/O组件620的其他设备,其中某些设备可以是内置的。说明性组件包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。

现在参考图7,图7例示了在其中本公开的实现可被采用的示例性分布式计算环境700。具体而言,图7示出了云计算平台710中的代理对象系统(“系统”)的高级架构,其中系统支持软件组件的无缝修改。应当理解,本文中描述的这种及其他布置仅作为示例来阐明。作为所示的布置及元素的补充或替换,可使用其他布置及元素(例如机器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本文中描述的许多元素是功能实体,其可被实现为分立或分布式组件,或者结合其他组件且以任何合适的组合和位置来实现。本文中被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行被储存在存储器中的指令的处理器来执行。

数据中心可支持分布式计算环境700,该分布式计算环境700包括云计算平台710、机架720、和机架720中的节点730(例如,计算设备、处理单元或刀片)。该系统可用云计算平台710实现,该云计算平台710跨不同的数据中心和地理区域运行云服务。云计算平台710可实现结构控制器740组件,该结构控制器组件供应并管理云服务的资源分配、部署、升级和管理。典型地,云计算平台710用于以分布式的方式来存储数据或运行服务应用。数据中心中的云计算基础设施710可被配置为主存和支持特定服务应用中的端点的操作。云计算基础设施710还可以是公共云、私有云、或专用云。

可为节点730提供在节点130上运行经定义的软件栈的主机750(例如,操作系统或运行时环境)。节点730还可被配置为执行云计算平台710内的专用功能(例如,计算节点或存储节点)。节点730被分配以运行承租者的服务应用的一个或多个部分。承租者可指代利用云计算平台710的资源的顾客。云计算平台710的支持特定承租者的服务应用组件可被称为承租者基础结构或承租。术语服务应用、应用或服务在本文中可互换地被使用,并宽泛地指代在数据中心之上运行或访问数据中心内的存储和计算设备位置的任何软件或软件部分。

当多于一个分开的服务应用被节点730支持时,该节点可被划分成虚拟机(例如,虚拟机752和虚拟机754)。物理机还可并发地运行各分开的服务应用。虚拟机或物理机可被配置成云计算平台710中的资源760(例如,硬件资源和软件资源)所支持的个性化计算环境。构想了可为特定服务应用配置资源。此外,每个服务应用可被划分成各功能部分,以使得每个功能部分能够在分开的虚拟机上运行。在云计算平台710中,多个服务器可被用于运行服务应用并执行群集中的数据存储操作。具体而言,服务器可独立地执行数据操作,但被展现为被称作群集的单个设备。群集中的每个服务器可被实现成节点。

客户端设备180可被链接到云计算平台710中的服务应用。客户端设备780可以是任何类型的计算设备,其可对应于例如参考图7描述的计算设备700。客户端设备780可被配置成向云计算平台710发出命令。在各实施例中,客户端设备780可通过虚拟因特网协议(IP)与各服务应用通信以及与将通信请求定向到云计算平台710中的指定端点的负载平衡器或其他装置通信。云计算平台710的组件可以经由网络(未示出)彼此通信,网络可包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。

已经描述了分布式计算环境700和云计算平台710的各个方面,需要注意,任意数量的组件可被采用来实现本发明的范围内的期望的功能。尽管为了清楚起见用线条示出了图7的各组件,但是在实际上,各组件的描绘并不是那样清楚,并且按比喻的说法,线条更精确地将是灰色的或模糊的。此外,虽然图7的某些组件被描述成各单独的组件,但是该描绘在性质上和数量上是示例性的,且不应该解释为对本发明的所有实现的限制。

在以下段落中描述的各实施例可以与专门描述的替换实施例中的一者或多者相组合。具体而言,所要求保护的实施例可在替换方案中包含对多于一个其他实施例的引用。所要求保护的实施例可指定对所要求保护的主题的进一步限制。

[用于字面支持PCT权利要求的未决的最终权利要求集合]

本文用细节来描述本发明的各实施例的主题以满足法定要求。然而,描述本身并非旨在限制本专利的范围。相反,发明人已构想所要求保护的主题还可结合其他现有或未来技术以其他方式来实施,以包括与本文中描述的步骤类似的不同步骤或步骤组合。此外,尽管术语“步骤”和/或“框”可在本文用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序时,术语不应被解释为意味着本文公开的各个步骤之中或之间的任何特定顺序。

出于本公开的目的,单词“包括(including)”具有与单词“包含(comprising)”一样广义的含义,并且单词“访问(accessing)”包括“接收(receiving)”、“引用(referencing)”或“检索(retrieving)”。另外,诸如“一(a)”和“一(an)”包括复数以及单数,除非另外相反地指明。这样,例如,“一个特征”的限定满足存在一个或多个特征的情况。而且,术语“或(or)”包括连接的、分离的和这两者(a或b包括要么a要么b,以及a和b)。

为了以下详细讨论的目的,参考头戴式显示器单元来描述本发明的各实施例;然而本文所描绘的头戴式显示器单元仅仅是示例性的。组件可被配置成用于执行各实施例的新的方面,其中被配置的方式包括被编程来执行特定任务或者使用代码实现特定抽象数据类型。此外,尽管本发明的各实施例一般可指在本文所描述的头戴式显示器单元和示意图,但设想了所描述的技术可被扩展到其他实现环境。

参考各具体实施例描述了本发明的各实施例,各具体实施例在所有方面都旨在是说明性的而非限制性的。在不偏离本发明范围的情况下,各替换实施例对于本发明所属领域的技术人员将变得显而易见。

从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对结构而言显而易见且固有的其他优点。

将理解,某些特征和子组合是有用的,并且可以在不参考其他特征或子组合的情况下使用。这是通过权利要求所构想的并且落在权利要求的范围内。

相关技术
  • 对象关系映射系统的动态代理系统和方法
  • 对象存储集群的代理访问方法、系统及计算机设备
技术分类

06120113822822