在加锁消息中传递受保护数据的制作方法

文档序号:6655296阅读:176来源:国知局
专利名称:在加锁消息中传递受保护数据的制作方法
技术领域
本发明的一个实施例涉及采用加锁机制来保护数据的通信和计算机系统,具体而言,一个实施例涉及在加锁消息中传递受保护数据;更具体而言,一个实施例涉及通过利用独立于存储机制的锁管理器在加锁消息中传递受保护数据来绕开固有(native)存储装置。
背景技术
在很多多处理器环境中,通过共享全局存储器来提供处理器间通信。一般通过锁来保护到该存储器的访问。通过代码临界区耦合了到这些资源的访问的等待时间,所述等待时间包括获得锁、读数据、写数据和最终释放锁。注意,除非明确说明,否则本文中描述或引用的任何内容都不应被视为本申请的现有技术。
图1示出了一种这样的现有手段,其示出了3个请求者如何请求和获得对受保护数据的访问。注意,如图1所示,锁管理器独立于存储机制,因为它不从其固有存储装置访问受锁保护的数据。事实上,图1的锁管理器从不传递或处理受保护数据的值。
如图所示,每个请求者都向锁管理器发送请求,锁管理器通过向请求者之一发送许可消息来提供到受保护数据的独立访问。然后,被许可的请求者读受保护数据,执行其处理,将受保护数据写回存储器,然后发送释放请求到锁管理器,以指示它已经完成了对受保护数据的处理。这一过程重复进行,下一请求者被许可访问数据。因此,在代码临界区中可能出现大量的等待时间,尤其是当多个处理器在单个锁队列之后排队时。对依赖于处理器单元中的缓存来提供临时存储和提供直接处理器间通信以便传输数据的处理器而言,也存在大量等待时间。
此外,一种已知系统包括I/O子系统中的锁管理器,其允许消息包括加锁和数据存储请求。这允许I/O子系统中的请求者代理进程接收具有锁请求和I/O请求的消息。在响应中,该代理进程向锁管理器请求锁,并且响应于许可,其进行对应于I/O请求及其固有存储装置的相应I/O请求。当受保护数据位于另一子系统中时,该手段可减少一些消息和等待时间,但是响应于每个许可,I/O固有存储装置仍会被访问。

发明内容
本发明公开了用于在加锁消息中传递受保护数据的方法、设备、数据结构、计算机可读介质、机制和装置等。使用锁来保护数据,受保护数据有时被包括在加锁消息中,这可以减少整体处理等待时间,和/或减少访问受保护数据的固有存储装置的带宽需要和/或存储操作数。例如,在一个实施例中,锁管理器接收来自每个请求者的锁请求,并选择性地许可这些锁请求。当锁被高度竞争或至少有两个访问数据的请求未决时,受保护数据一般在加锁消息中被传递。锁管理器通过在许可消息中指示请求者将受保护数据包括在其释放消息中来发起序列。然后,锁管理器把在释放消息中接收到的该数据拷贝到其对下一请求者的许可消息中。虽然该操作可能需要锁管理器临时存储接收到的包括受保护数据的释放消息,但是它在等待例如接收下一请求时并不在本地缓存或存储受保护数据。如果没有其他请求者在等待,则许可消息包括对不发送受保护数据的指示,因此请求者一般将该受保护数据存储在存储装置中,使其可在将来被访问。
一个实施例包括被配置为控制经由锁对受保护数据的访问的锁管理器,所述受保护数据被维护在独立于锁管理器的固有存储装置中。锁管理器不从固有存储装置访问受保护数据,而是将接收到的受保护数据拷贝到被发送到下一请求者的许可消息中。锁管理器被配置为接收来自多个请求者的对锁的锁请求,选择性地许可锁请求,这包括从锁管理器传递许可到多个请求者,并且至少一个被传递的许可包括受保护数据。
在一个实施例中,至少一个被传递的许可不包括受保护数据。在一个实施例中,每个被传递的许可都包括对受保护数据是否被一起传递的指示。在一个实施例中,每个被传递的许可都包括对受保护数据是否被请求利用相应的锁释放被发送到锁管理器的指示。在一个实施例中,每个锁请求都包括对多个请求者中相应的那一个是否将接受来自锁管理器的受保护数据的指示。
一个实施例包括控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器。该锁管理器不从固有存储装置访问受保护数据。锁管理器接收对用于控制对受保护数据的访问的锁释放,其中接收到的释放包括受保护数据。响应于接收到锁释放,要被许可锁的下一请求者被识别。受保护数据被从释放拷贝到许可消息中,包括受保护数据的许可消息被发送到下一请求者。在一个实施例中,许可消息包括这样的指示如果另一请求者正在等待锁,则指示受保护数据被请求在与该许可消息相对应的释放消息中被发送到锁管理器,否则指示受保护数据不被请求在释放消息中被发送到锁管理器。
一个实施例包括控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器。锁管理器不从固有存储装置访问受保护数据。锁管理器接收来自第一请求者和第二请求者的对控制对受保护数据的访问的锁的锁请求。锁管理器发送不包括受保护数据的第一许可消息到第一请求者,并且响应于识别出一个或多个请求者正在第一请求者之后等待锁,对返回受保护数据的指示被包括在许可消息中。然后,对锁的包括受保护数据的第一释放消息从第一请求者被接收到。
在一个实施例中,第二许可消息被发送到第二请求者,其中第二许可消息包括受保护数据和对是否在第二释放消息中发送受保护数据的指示。在一个实施例中,响应于识别出另一请求者正在等待访问锁,第二许可消息包括对在第二释放消息中发送受保护数据的指示。在一个实施例中,响应于识别出另一请求者不在等待访问锁,第二许可消息包括对不在第二释放消息中发送受保护数据的指示。在一个实施例中,第二许可消息包括不在第二释放消息中发送受保护数据的指示,响应于不在第二释放消息中发送受保护数据的指示,第二请求者存储受保护数据,并且不将受保护数据包括在第二释放消息中。


所附权利要求具体列出了本发明的特征。结合附图,从下面的详细描述可最好地理解本发明及其优点,在附图中图1示出了用于使用锁来保护对数据的访问的现有手段;图2示出了在一个实施例中使用的用于保护对数据的访问的手段,其中受保护数据与加锁消息结合起来传递;图3示出了一个实施例中使用的加锁消息;图4A-B示出了一个实施例中使用的锁管理器过程;图4C示出了一个实施例中使用的请求者过程;以及图5A示出了一个实施例的包括锁管理器和多个请求者的系统;以及图5B示出了一个实施例中使用的用于实现锁管理器和/或一个或多个请求者的系统或组件。
具体实施例方式
本发明公开了用于在加锁消息中传递受保护数据的方法、设备、数据结构、计算机可读介质、机制和装置等。
这里描述的实施例包括各种元素和限定,其中没有任何元素或限定应被认为是必不可少的元素或限定。每个权利要求自身都记载了本发明的一个完整的方面。此外,所描述的一些实施例可能包括但不限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质等。一个或多个系统、设备、组件等可包括一个或多个实施例,其可包括由相同或不同的系统、设备、组件等执行的要求的一些元素或限定。下文描述的实施例体现了本发明的范围和精神中的各个方面和配置,附图示出了示例性和非限制性的配置。
在这里使用的术语“分组”是指所有类型的分组,或信息或数据的任何其他单元,包括但不限于固定长度信元和可变长度分组,其中的每一个都可以或不可以被分割为更小的分组或信元。这里使用的术语“分组”还指分组本身或分组指示,例如但不限于分组或分组头部的全部或部分、数据结构值、指针或索引,或者是分组的直接或间接标识及其相关信息的任何其他部分。例如,路由器通常对分组的一个或多个字段(尤其是头部)执行操作,因此在分组头部被操作时,分组的主体常常存储在独立存储器中,并且基于分组(在本例中是分组头部)处理的结果,整个分组被转发或丢弃,等等。此外,这些分组可能包含一种或多种信息,包括但不限于语音、数据、视频和音频信息。这里一般使用术语“项目”来指分组或任何其他信息或数据单元或段、设备、组件、元件或任何其他实体。短语“处理分组”和“分组处理”一般指基于分组内容(例如分组头部或其他字段)来执行一些步骤或动作,这些步骤或动作可以也可以不包括修改、存储、丢弃和/或转发分组和/或相关数据。
术语“系统”在这里一般用来描述任何数量的组件、元件、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机制,或者是其多个组件的组合。术语“计算机”在这里一般用来描述任何数量的计算机,包括但不限于个人计算机、嵌入式处理元件和系统、控制逻辑、ASIC、芯片、工作站、大型计算机等。术语“处理元件”在这里一般用来描述任何类型的处理机制或设备,例如处理器、ASIC、现场可编程门阵列、计算机等。术语“设备”在这里一般用来描述任何类型的机制,包括计算机或系统或其组件。术语“任务”和“过程”在这里一般用于描述任何类型的运行程序,包括但不限于计算机进程、任务、线程、执行应用、操作系统、用户进程、设备驱动器、固有代码、机器或其他语言等等,并且可以是交换和/或不交互的、本地和/或远程执行的、在前台和/或后台执行的、在用户和/或操作系统地址空间中执行的、库例程和/或独立应用,并且不限于任何特定的存储器分区技术。图中示出的步骤、连接和信号及信息处理包括但不限于任何块和流程图和消息序列图,并且一般可以相同或不同的串行或并行方式执行,和/或由不同组件和/或进程、线程等执行,和/或通过不同的连接并结合其他实施例中的其他功能执行,除非这使得实施例不能实现,或者明确或明显需要某个顺序(例如对于读值、处理值的顺序来说,在处理值之前必须先获取值,但是在读操作之前、同时和/或之后也可执行一些相关处理)。此外,术语“识别”一般用来描述用于直接或间接断言某事的任何方式或机制,其可包括但不限于接收、从存储器取得、确定、定义、计算、生成,等等。
此外,术语“网络”和“通信机制”在这里一般用来描述一个或多个网络、通信介质或通信系统,包括但不限于因特网、专用或公共电话、蜂窝电话、无线、卫星、有线、局域、城域和/或广域网、线缆、电连接、总线等等,以及诸如消息传递、进程间通信、共享存储器等内部通信机制。术语“消息”在这里一般用来描述一段信息,其可能是也可能不是,但是一般是经由一个或多个任何类型的通信机制传递的。
术语“存储机制”包括任何类型的存储器、存储设备或用于以任何格式维护指令或数据的其他机制。“计算机可读介质”是一个可扩展术语,包括任何存储器、存储设备、存储机制和其他存储和信令机制,包括诸如网络接口卡和其中的缓冲器等接口和设备,以及任何通信设备和被发送接收的信令,以及计算机化的系统可翻译、接收和/或发送的其他当前和发展中的技术。术语“存储器”包括任何随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路,和/或其他存储器组件或元件。术语“存储设备”包括任何固态存储介质、盘驱动器、磁盘、联网服务、磁带驱动器和其他存储设备。存储器和存储设备可存储要由处理元件和/或控制逻辑执行的计算机可读指令,以及由处理元件和/或控制逻辑操纵的数据。术语“数据结构”是一个可扩展术语,指任何数据元素、变量、数据结构、数据库,和/或可被应用于数据以便辅助翻译数据或对其执行操作的一个或多个组织机制,例如但不限于存储器位置或设备、集合、队列、树、堆、列表、链表、数组、表、指针,等等。数据结构一般被维护在存储机制中。术语“指针”和“链接”在这里一般用来指用于引用或标识其他元件、组件或实体的某些机制,可包括但不限于引用存储器或其他存储机制或其中的位置、数据结构中的索引、值,等等。
术语“一个实施例”在这里用于引用特定实施例,其中每次提到“一个实施例”时可能是指不同的实施例,在这里描述相关特征、元件和/或限定时重复使用该术语并不建立每个实施例都必须包括的相关特征、元件和/或限制的累积集合,但是一个实施例一般可包括所有这些特征、元件和/或限定。此外,短语“用于xxx的装置”一般包括包含用于执行xxx的计算机可执行指令的计算机可读介质。
此外,术语“第一”、“第二”等在这里一般用来指不同的单元(例如第一元件、第二元件)。在这里使用这些术语不一定是意味着某种顺序,例如一个单元或事件发生或出现在另一个之前,而是提供了一种区分特定元件的机制。此外,对名词单数的使用是非限制性的,其使用一般包括一个或多个特定对象,而非仅仅一个(例如使用“存储器”一词一般是指一个或多个存储器,而无需指定“一个或多个存储器”或“至少一个存储器”等)。此外,短语“基于x”和“响应于x”用来指引起或导致某事的项目x的最小集合,其中“x”是可扩展的,而且不一定描述被执行操作的项目的完整列表。此外,短语“耦合到”用来指两个元件或设备之间某种级别的直接或间接连接,并且耦合的一个或多个设备修改或不修改被耦合的信号或被传递的信息。术语“子集”用来指一个集合的所有元素全体或其中的一些的群组。术语“子树”用来指树的全部或部分。此外,术语“或”在这里用来指对相关项目中的一个或多个(包括全部)的选择。此外,过渡性术语“包括”是“含有”、“包含”或“特征在于”的同义词,它可以是封闭式的也可以是开放式的,而且不排除额外的、未记载的元件或方法步骤。
锁可以用于很多目的。例如,Williams等人于2003年11月12日提交的题为“Using Ordered Locking Mechanisms to Maintain Sequences of ItemsSuch as Packets”的美国专利申请10/706,704中描述了锁的一种应用,该申请通过引用结合于此。
本发明公开了用于在加锁消息中传递受保护数据的方法、设备、数据结构、计算机可读介质、机制和装置等。使用锁来保护数据,受保护数据有时被包括在加锁消息中,这可以减少整体处理等待时间,和/或减少访问受保护数据的固有存储装置的带宽需要和/或存储操作数。例如,在一个实施例中,锁管理器接收来自每个请求者的锁请求,并选择性地许可这些锁请求。当锁被高度竞争或至少有两个访问数据的请求未决时,受保护数据一般在加锁消息中被传递。锁管理器通过在许可消息中指示请求者将受保护数据包括在其释放消息中来发起序列。然后,锁管理器把在释放消息中接收到的该数据拷贝到其对下一请求者的许可消息中。虽然该操作可能需要锁管理器临时存储接收到的包括受保护数据的释放消息,但是它在等待例如接收下一请求时并不在本地缓存或存储受保护数据。如果没有其他请求者在等待,则许可消息包括不发送受保护数据的指示,因此请求者一般将该受保护数据存储在存储装置中,使其可在将来被访问。
一个实施例包括被配置为控制经由锁对受保护数据的访问的锁管理器,所述受保护数据被维护在独立于锁管理器的固有存储装置中。锁管理器不从固有存储装置访问受保护数据,而是将接收到的受保护数据拷贝到被发送到下一请求者的许可消息中。锁管理器被配置为接收来自多个请求者的对锁的锁请求,选择性地许可锁请求,这包括从锁管理器传递许可到多个请求者,并且至少一个被传递的许可包括受保护数据。
在一个实施例中,至少一个被传递的许可不包括受保护数据。在一个实施例中,每个被传递的许可都包括对受保护数据是否被一起传递的指示。在一个实施例中,每个被传递的许可都包括对受保护数据是否被请求利用相应的锁释放被发送到锁管理器的指示。在一个实施例中,每个锁请求都包括对多个请求者中相应的那一个是否将接受来自锁管理器的受保护数据的指示。
一个实施例包括控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器。该锁管理器不从固有存储装置访问受保护数据。锁管理器接收对用于控制对受保护数据的访问的锁释放,其中接收到的释放包括受保护数据。响应于接收到锁释放,要被许可锁的下一请求者被识别。受保护数据被从释放拷贝到许可消息中,包括受保护数据的许可消息被发送到下一请求者。在一个实施例中,许可消息包括这样的指示如果另一请求者正在等待锁,则指示受保护数据被请求在与该许可消息相对应的释放消息中被发送到锁管理器,否则指示受保护数据不被请求在释放消息中被发送到锁管理器。
一个实施例包括控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器。锁管理器不从固有存储装置访问受保护数据。锁管理器接收来自第一请求者和第二请求者的对控制对受保护数据的访问的锁的锁请求。锁管理器发送不包括受保护数据的第一许可消息到第一请求者,并且响应于识别出一个或多个请求者正在第一请求者之后等待锁,对返回受保护数据的指示被包括在许可消息中。然后,锁的包括受保护数据的第一释放消息从第一请求者被接收到。
在一个实施例中,第二许可消息被发送到第二请求者,其中第二许可消息包括受保护数据和对是否在第二释放消息中发送受保护数据的指示。在一个实施例中,响应于识别出另一请求者正在等待访问锁,第二许可消息包括对在第二释放消息中发送受保护数据的指示。在一个实施例中,响应于识别出没有另一请求者正在等待访问锁,第二许可消息包括对不在第二释放消息中发送受保护数据的指示。在一个实施例中,第二许可消息包括不在第二释放消息中发送受保护数据的指示,响应于不在第二释放消息中发送受保护数据的指示,第二请求者存储受保护数据,并且不将受保护数据包括在第二释放消息中。
一个实施例提供了通过连接到很多处理器的锁机制的间接进程间通信绕行通道。这些处理器一般通过共享的全局存储器进行通信,并且使用锁来实现一致性。在某些条件下,数据可通过加锁消息传送,而不必通过共享的全局存储器。通过锁机制,数据可被捎带应答到锁释放消息,并且可被捎带应答到锁许可消息。数据不在锁机制中存储很长时间。加锁消息一般包括用于指示何时条件适于使用绕行通道的控制信号。这实现了可能要被绕过的共享存储器位置的一致性。
当要求将数据捎带应答到加锁消息时,绕行通道可以与加锁消息通道串行或并行,只要存在加锁消息到绕行数据的强绑定即可。在一个实施例中,当请求锁时,请求消息包括是否希望通过绕行通道接受数据的指示。当锁被最终许可时,许可消息指示它在绕行通道中是否有数据,以及在锁队列中在它之后是否有希望通过绕行通道接受数据的条目。如果许可指示绕行通道中存在数据,则临界区可跳过读全局共享存储器位置,而是使用来自绕行通道的数据。
如果许可指示锁队列中的下一条目希望接受来自绕行通道的数据,则代码临界区可跳过写全局共享存储器位置,并通过绕行通道来发送数据。代码临界区可以总是通过绕行通道来发送数据,希望锁队列中的新来者可使用该数据,但是如果它不是很确定的话,它必须首先写全局共享存储器。当锁被释放时,在释放消息中作出绕行通道中是否有数据的指示。在锁机制中,绕行通道中的数据一般不被存储在存储器中,相反,它仅从释放消息被拷贝(可能使用临时存储位置或检测器)并被附加到后续的许可消息。
返回附图,图2示出了在一个实施例中用来保护对数据的访问的手段,其中受保护数据与加锁消息被结合起来传递。锁管理器200接收来自请求者-A 204、请求者-B 206和请求者-C 208的锁请求211-213。注意,锁管理器200独立于存储机制/受保护数据202,因为它不从其固有存储装置访问存储的受锁保护数据202,如图2所示。
这种锁请求的一个示例是图3所示的锁请求消息300。如图所示,请求消息300包括关于哪个锁被请求的指示301、请求者标识302,以及关于请求者是否支持加锁消息中的受保护数据的指示303。当然,一个实施例使用另一通信机制和/或值301-303中的一些、全部或不使用值301-303。此外,对某些字段示出的位数仅是示例性的。
为了说明,图2的描述将假设所有请求者将总是支持加锁消息中的受保护数据(因此不需要指示303)。在一个实施例中,当所有请求者不总是支持在加锁消息中传递受保护数据时,锁管理器200将仅在下一请求者支持时才请求受保护数据,并将受保护数据在加锁消息中提供给支持的请求者。
图3还示出了在一个实施例中使用的许可消息310,以及在一个实施例中使用的释放消息320。如图所示,许可消息310包括标识锁的锁标识311、用于包括受保护数据的字段312、关于字段312是否被填充以受保护数据的指示313,以及关于是否作出绕开固有存储装置以获得受保护数据的显式请求的指示314。
在一个实施例中,如果设置了固有存储装置绕过请求,则请求者必须在相应的释放消息中返回受保护数据的最近值,在发送释放之前,请求者可能或可能没把受保护数据存储在其固有存储装置中(即固有存储装置中的受保护数据可能是也可能不是最近的值)。如果固有存储装置绕过请求指示未被设置,则请求者必须在发送释放之前将受保护数据的最近值存储在其固有存储装置中,释放可能包括也可能不包括受保护数据的值,如果它包括这样的值,它就是受保护数据的最近值。在这种情况下,将值存储在固有存储装置中是很重要的,因为锁管理器在等待下一请求者时将不缓存、向固有存储装置写或维护受保护数据的值。如果请求者在接收到包含受保护数据的释放消息时不是正在等待,则锁管理器丢弃受保护数据,因此下一请求者将需要从固有存储装置获取受保护数据。
当到锁管理器的带宽不成问题或者用于受保护数据的位字段总被分配和发送从而它也可被填充以受保护数据时,任选地或总是在释放消息中发送受保护数据可能是特别有用的。因此,如果锁管理器接收到包括受保护数据的释放消息,则它知道它可以将受保护数据发送到下一请求者,因为它包括受保护数据的最近值。如果在许可时没有其他请求者正在等待锁(因此对返回受保护数据的请求一般不被包括在许可消息中),而当接收到任选地包括受保护数据的释放消息时请求者正在等待锁,这可能是特别有用的。在此情形下,等待的请求者可接收受保护数据,而不必从受保护数据的固有存储位置获取它。
图3还示出了释放消息320,其包括标识锁的锁指示321、用于包括受保护数据的字段322、关于字段322是否被填充以受保护数据的指示323。当然,在保持本发明的范围和精神的情况下,实施例也可使用很多不同的消息、消息中的字段,以及这些消息和字段的语义。
返回图2所示的处理,锁管理器200(一般根据接收顺序)选择接收到的锁请求之一,并在接收到锁释放之前将其他请求排队。为了说明,锁管理器200将依次处理锁请求211、212和213。
响应于锁请求211,锁管理器200准备和发送(211)许可到请求者-A204。响应于一个或多个未决的其他锁请求,锁管理器200将对把受保护数据包括在相应的释放消息中的指示(例如对绕过固有存储装置的主动请求)包括在许可中。响应于该许可,请求者-A 204一般从一般对于所有请求者204-208都可用的共享存储器读(222)和接收(223)受锁保护数据202。在完成对受保护数据的处理之后,请求者-A 204响应于对把受保护数据包括在释放消息中的请求,向锁管理器200传递(225)具有受保护数据的最近值的锁释放。
响应于接收到锁释放和受保护数据,锁管理器200准备包括从接收到的释放拷贝的接收到的受保护数据的许可,并发送(231)许可到请求者-B 206。响应于一个或多个未决的其他锁请求,锁管理器200还将对把受保护数据包括在相应的释放消息中的指示包括在许可中。响应于该许可,请求者-B 206基于在许可消息中接收到的受保护数据进行处理(232)。注意,它不需要读存储的受锁保护数据202,因为其最近值被包括在许可中。此外注意,至少在一个实施例中,受保护数据的当前值可以不同于存储的受锁保护数据202的值。在完成对受保护数据的处理之后,请求者-B206响应于对把受保护数据包括在释放消息中的请求,向锁管理器200传递(233)具有受保护数据的最近值的锁释放。
响应于接收到锁释放和受保护数据,锁管理器200准备包括从接收到的释放拷贝的接收到的受保护数据的许可,并发送(241)许可到请求者-C 208。响应于没有未决的锁请求,锁管理器200还将对把保护数据必须被写入其固有存储装置中(例如并且受保护数据可以或可以不包括在相应的释放消息中)的指示(例如对绕过固有存储装置的非主动请求)包括在对该受保护数据的许可中。响应于该许可,请求者-C 208基于在许可消息中接收到的受保护数据进行处理(242)。注意,它不需要读存储的受锁保护数据202,因为其最近值被包括在许可中。在完成对受保护数据的处理之后,请求者-C 208响应于对不把受保护数据包括在释放消息中的请求,将受保护数据的当前值写(243)到存储的受锁保护数据202,并向锁管理器200传递(244)可能没有受保护数据的最近值的锁释放。
图4A-B示出了在一个实施例中使用的锁管理器过程。先看图4A,过程开始于过程块400,并进行到过程块402,接收锁请求。在过程块404确定如果锁处于锁定状态,则在过程块408,锁请求被排队。否则在过程块406,许可被传递到请求者,并且锁被标记为处于锁定状态。过程在过程块410处结束。
图4B的流程图的过程开始于过程块420,并进行到过程块422,接收锁释放。在过程块424确定如果没有未决的请求,则在过程块426,锁被标记为处于未锁定状态;过程在过程块444处结束。
否则,在过程块428,(一般从锁队列的头部或基于某些其他方法)识别对许可的下一锁请求。在过程块430确定如果没有另一未决请求,则在过程块432,设置对在相应的释放消息中发送受保护数据的指示(即绕过固有存储装置请求指示);否则在过程块434清除这一指示。
在过程块436确定如果在接收到的锁释放中接收到受保护数据,则在过程块438,受保护数据被从接收到的释放消息拷贝到许可消息,并且设置对受保护数据被包括在许可消息中的指示。否则,在过程块440,一般在许可消息中包括对受保护数据没有被传递的指示。在过程块442,许可消息被发送到识别出的下一锁请求者,过程在过程块444处结束。
图4C示出了一个实施例中使用的请求者过程。过程开始于过程块450,并进行到过程块452,接收许可。在过程块454处确定如果包括受保护数据,则在过程块456处基于接收到的受保护数据执行处理。否则,在过程块458处,从存储装置获取受保护数据,并基于获取的受保护数据执行处理。
在对受保护数据的处理完成后,在过程块460确定如果接收到的许可指示要绕过固有存储装置,则过程进行到过程块468。否则在过程块462,受保护数据的最近值被存储在其固有存储位置。在过程块464确定如果受保护数据要被包括在释放中(例如它总是或基于某些判决结果而被任选地包括),则过程进行到过程块468。否则,在过程块466,没有受保护数据的释放消息被发送到锁管理器。在过程块468,包括受保护数据的最近值的释放消息被发送到锁管理器。过程在过程块469处结束。
图5A示出了包括一个实施例中的锁管理器501和多个请求者511-519的系统。图5A示出了可被应用于应用的本发明一个实施例的可扩展本质。锁管理器501和多个请求者511-519可以是过程、独立处理元件,或一个或多个系统、元件或组件中的任何其他处理机制或实体。如图所示,锁管理器501经由通信机制509与多个请求者511-519可通信地耦合,多个请求者511-519还可通信地耦合到用于存储受保护数据和/或其他资源的机制502。
图5B示出了在一个实施例中使用的用于实现锁管理器和/或一个或多个请求者的系统或组件。在一个实施例中,系统或组件540执行与图示的或这里描述的流程图中的一个相对应的一个或多个过程。例如,在一个实施例中,锁管理器和请求者是运行在处理元件541上的进程,存储器542用于在受保护数据未用加锁消息传递时存储受保护数据。
在一个实施例中,系统或组件540包括处理元件541、存储器542、存储设备543,以及用于发送和接收分组、项目、和/或其他信息的接口544,它们一般经由一个或多个通信机制549(为了说明目的,示为总线)来耦合。组件540的各个实施例可包括更多或更少元件。组件540的操作一般由处理元件541使用存储器542和存储设备543来控制,以执行一个或多个任务或过程。存储器542是一种计算机可读介质,一般包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路、和/或其他存储器组件。存储器542一般存储要由处理元件541执行的计算机可执行指令,和/或由处理元件541操纵的数据,用于实现根据实施例的功能。存储设备543是另一种计算机可读介质,一般包括固态存储介质、盘驱动器、磁盘、联网服务、磁带驱动器和其他存储设备。存储设备543一般存储要由处理元件541执行的计算机可执行指令,和/或由处理元件541操纵的数据,用于实现根据实施例的功能。
通过可应用本发明原理的多个可能的实施例,应当理解这里参考附图描述的实施例和方面仅是说明性的,而不应被理解为限制本发明的范围。例如,本领域的技术人员应当理解,很多过程块操作都可以被重新排序,以便在其他操作之前、之后或基本并发地被执行。此外,在各个实施例中可使用很多不同形式的数据结构。这里描述的本发明包括落在所附权利要求及其等同物的范围内的所有这些实施例。
权利要求
1.一种使用锁来保护数据的装置,该装置包括锁管理器,该锁管理器被配置为控制利用锁对维护在独立于所述锁管理器的固有存储装置中的受保护数据的访问,其中所述锁管理器不从所述固有存储装置访问所述受保护数据;以及多个请求者;其中所述锁管理器被配置为从所述多个请求者中的每一个接收对锁的锁请求,并选择性地许可所述锁请求,包括将许可从所述锁管理器传递到所述多个请求者,其中被传递的许可中的至少一个包括所述受保护数据。
2.如权利要求1所述的装置,其中所述被传递的许可中的至少一个不包括所述受保护数据。
3.如权利要求1所述的装置,其中所述被传递的许可中的每一个都包括对所述受保护数据是否被一起传递的指示。
4.如权利要求1所述的装置,其中所述被传递的许可中的每一个都包括对所述受保护数据是否被请求利用相应的锁释放被发送到所述锁管理器的指示。
5.如权利要求1所述的装置,其中所述被传递的许可中的每一个都包括对所述多个请求者中相应的一个是否将接受来自所述锁管理器的所述受保护数据的指示。
6.一种由控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器执行的方法,其中所述锁管理器不从所述固有存储装置访问所述受保护数据,所述方法包括接收用在控制对所述受保护数据的访问的锁释放,所述释放包括所述受保护数据;响应于所述接收锁释放,识别要被许可锁的下一请求者;将所述受保护数据从所述释放拷贝到许可消息中;以及将所述许可消息发送到所述下一请求者,所述许可消息包括所述受保护数据。
7.如权利要求6所述的方法,其中所述许可消息包括这样的指示如果另一请求者正在等待锁,则指示所述受保护数据被请求在与所述许可消息相对应的释放消息中被发送到所述锁管理器,否则指示所述受保护数据不被请求在释放消息中被发送到所述锁管理器。
8.一种包含计算机可执行指令的计算机可读介质,所述指令用于由控制对维护在独立于锁管理器的固有存储装置中的受保护数据的访问的锁管理器来执行以下步骤,其中所述锁管理器不从所述固有存储装置访问所述受保护数据,所述步骤包括接收用在控制对所述受保护数据的访问的锁释放,所述释放包括所述受保护数据;响应于所述接收锁释放,识别要被许可锁的下一请求者;将所述受保护数据从所述释放拷贝到许可消息;以及将所述许可消息发送到所述下一请求者,所述许可消息包括所述受保护数据。
9.如权利要求8所述的计算机可读介质,其中所述许可消息包括这样的指示如果另一请求者正在等待锁,则指示所述受保护数据被请求在与所述许可消息相对应的释放消息中被发送到所述锁管理器,否则指示所述受保护数据不被请求在释放消息中被发送到所述锁管理器。
10.一种锁管理器,用于控制对维护在独立于所述锁管理器的固有存储装置中的受保护数据的访问,其中所述锁管理器不从所述固有存储装置访问所述受保护数据,所述锁管理器包括用于接收用在控制对所述受保护数据的访问的锁释放的装置,所述释放包括所述受保护数据;用于响应于所述接收锁释放,识别要被许可锁的下一请求者的装置;用于将所述受保护数据从所述释放拷贝到许可消息并将所述许可消息发送到所述下一请求者的装置。
11.如权利要求10所述的锁管理器,还包括用于将这样的指示包括在所述许可消息中的装置如果另一请求者正在等待锁,则指示所述受保护数据被请求在与所述许可消息相对应的释放消息中被发送到所述锁管理器,否则指示所述受保护数据不被请求在释放消息中被发送到所述锁管理器。
12.一种由锁管理器执行的方法,所述锁管理器控制对维护在独立于所述锁管理器的固有存储装置中的受保护数据的访问,其中所述锁管理器不从所述固有存储装置访问所述受保护数据,所述方法包括接收来自第一请求者和第二请求者的对控制对所述受保护数据的访问的锁的锁请求;发送第一许可消息到所述第一请求者,所述第一许可消息不包括所述受保护数据,并且响应于识别出所述第一请求者之后的一个或多个请求者正在等待锁,将对返回所述受保护数据的指示包括在所述第一许可消息中;接收来自所述第一请求者的与对锁的第一许可消息相对应的第一释放消息,所述第一释放消息包括所述受保护数据。
13.如权利要求12所述的方法,包括发送第二许可消息到所述第二请求者,所述第二许可消息包括所述受保护数据,以及对是否在第二释放消息中发送所述受保护数据的指示。
14.如权利要求13所述的方法,其中响应于识别出另一请求者正在等待对锁的访问,所述第二许可消息包括对在所述第二释放消息中发送所述受保护数据的指示。
15.如权利要求13所述的方法,其中响应于识别出另一请求者不在等待对锁的访问,所述第二许可消息包括对不在所述第二释放消息中发送所述受保护数据的指示。
16.如权利要求13所述的方法,其中所述第二许可消息包括对不在所述第二释放消息中发送所述受保护数据的指示;所述方法包括响应于所述对不在所述第二释放消息中发送所述受保护数据的指示,所述第二请求者存储所述受保护数据,并且不将所述受保护数据包括在所述第二释放消息中。
17.一种包含计算机可执行指令的计算机可读介质,所述指令用于由管理器来执行以下步骤,其中所述管理器控制对维护在独立于所述锁管理器的固有存储装置中的受保护数据的访问,并且所述锁管理器不从所述固有存储装置访问所述受保护数据,所述步骤包括接收来自第一请求者和第二请求者的对控制对所述受保护数据的访问的锁的锁请求;发送第一许可消息到所述第一请求者,所述第一许可消息不包括所述受保护数据,并且响应于识别出所述第一请求者之后的一个或多个请求者正在等待锁,将对返回所述受保护数据的指示包括在所述第一许可消息中;接收来自所述第一请求者的与对锁的第一许可消息相对应的第一释放消息,所述第一释放消息包括所述受保护数据。
18.如权利要求17所述的计算机可读介质,所述步骤还包括发送第二许可消息到所述第二请求者,所述第二许可消息包括所述受保护数据,以及对是否在第二释放消息中发送所述受保护数据的指示。
19.如权利要求18所述的计算机可读介质,其中响应于识别出另一请求者正在等待对锁的访问,所述第二许可消息包括对在所述第二释放消息中发送所述受保护数据的指示。
20.如权利要求18所述的计算机可读介质,其中响应于识别出另一请求者不在等待对锁的访问,所述第二许可消息包括对不在所述第二释放消息中发送所述受保护数据的指示。
21.如权利要求18所述的计算机可读介质,其中所述第二许可消息包括对不在所述第二释放消息中发送所述受保护数据的指示;所述步骤包括响应于所述对不在所述第二释放消息中发送所述受保护数据的指示,所述第二请求者存储所述受保护数据,并且不将所述受保护数据包括在所述第二释放消息中。
22.一种锁管理器,用于控制对维护在独立于所述锁管理器的固有存储装置中的受保护数据的访问,其中所述锁管理器不从所述固有存储装置访问所述受保护数据,所述锁管理器包括用于接收来自第一请求者和第二请求者的对控制对所述受保护数据的访问的锁的锁请求的装置;用于发送不包括所述受保护数据的第一许可消息到所述第一请求者,并且响应于识别出所述第一请求者之后的一个或多个请求者正在等待锁,将对返回所述受保护数据的指示包括在所述第一许可消息中的装置;用于接收来自所述第一请求者的锁的第一释放消息的装置,所述第一释放消息包括所述受保护数据。
23.如权利要求22所述的锁管理器,包括用于发送第二许可消息到所述第二请求者的装置,所述第二许可消息包括所述受保护数据,以及对是否在第二释放消息中发送所述受保护数据的指示。
24.如权利要求23所述的锁管理器,包括用于响应于识别出另一请求者正在等待对锁的访问,在所述第二许可消息中包括对在所述第二释放消息中发送所述受保护数据的指示的装置。
25.如权利要求23所述的锁管理器,包括用于响应于识别出另一请求者不在等待对锁的访问,在所述第二许可消息中包括对不在所述第二释放消息中发送所述受保护数据的指示的装置。
26.如权利要求23所述的锁管理器,包括用于在所述第二许可消息中包括对不在所述第二释放消息中发送所述受保护数据的指示的装置;以及用于响应于所述对不在所述第二释放消息中发送所述受保护数据的指示,使所述第二请求者存储所述受保护数据,并且不将所述受保护数据包括在所述第二释放消息中的装置。
全文摘要
使用锁来保护数据,受保护数据有时被包括在加锁消息中。例如,锁管理器接收来自每个请求者的锁请求,并选择性地许可这些锁请求。当锁被高度竞争或至少有两个访问数据的请求未决时,受保护数据一般在加锁消息中被传递。锁管理器通过在许可消息中指示请求者将受保护数据包括在其释放消息中来发起序列。然后,锁管理器把在释放消息中接收到的该数据拷贝到其对下一请求者的许可消息中。如果没有其他请求者在等待,则许可消息包括不发送受保护数据的指示,因此请求者一般将该受保护数据存储在存储装置中,使其可在将来被访问。
文档编号G06F17/30GK1957325SQ200580007383
公开日2007年5月2日 申请日期2005年2月27日 优先权日2004年3月27日
发明者约翰·J·小威廉斯, 约翰·安德鲁·费戈哈特, 乔纳森·罗森 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1