CN101390055A - 对锁管理资源的先期改变 - Google Patents

对锁管理资源的先期改变 Download PDF

Info

Publication number
CN101390055A
CN101390055A CNA2007800049783A CN200780004978A CN101390055A CN 101390055 A CN101390055 A CN 101390055A CN A2007800049783 A CNA2007800049783 A CN A2007800049783A CN 200780004978 A CN200780004978 A CN 200780004978A CN 101390055 A CN101390055 A CN 101390055A
Authority
CN
China
Prior art keywords
lock
request
resource
change
license
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800049783A
Other languages
English (en)
Other versions
CN101390055B (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.)
Oracle International Corp
Oracle America Inc
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN101390055A publication Critical patent/CN101390055A/zh
Application granted granted Critical
Publication of CN101390055B publication Critical patent/CN101390055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种方法和系统被提供用于对通过加锁机制管理的资源执行先期改变。想要修改资源的实体(例如数据库系统中的事务)请求修改资源的许可。但是,在接收到许可之前,实体对资源的私有版本进行先期改变。这些实体被阻止将先期改变变成永久性改变,直到它们接收到对进行改变的许可为止。因为它们可以在接收到许可之前进行改变并进行其它操作,所以接收许可时的延迟对它们性能的负面影响较小。

Description

对锁管理资源的先期改变
技术领域
本发明涉及用于控制对计算机系统内的资源的访问的机制。
背景技术
计算机在执行计算机程序期间使用诸如存储器、调制解调器和打印机之类的资源。这些资源中的很多资源仅仅是被任意给定的计算机程序周期性地使用。例如,字处理应用要求打印机打印文档的时间量通常比字处理应用被用于创建文档的时间量小。如果访问打印机的进程只有一个字处理应用,则打印机大部分时间将保持空闲。
为了充分利用资源,已经开发了其中运行在很多计算机设备或“节点”上的进程可以共享资源的计算机网络。从而,用户可以购买一个可以被连接到拥有很多计算机的网络上的打印机,而不需要为每台计算机购买一个打印机。网络上的每个计算机上的进程只在进程需要打印机时才访问打印机。
即使按照上述方式资源可以被共享,但很多资源还是不能在任意给定的时间被一个以上的进程使用。例如,很多打印机不能同时打印一个以上的文档。其它资源(例如存储介质中的数据块或者被存储在存储介质上的表)可以同时被多个进程以某些方式访问(例如,读取),但是在同一时间只能被一个进程以其它方式访问(例如,写入)。因此,已经开发了控制对资源的访问的机制。
一种这样的机制被称为锁。锁是一种数据结构,该数据结构指示特定进程已被赋予了针对资源的某些权利。有很多类型的锁。一些类型的锁可以被很多进程共享,而其它类型的锁阻止任何其它锁被赋予相同的资源。
例如,NULL模式锁对表的所有权不允许进程以任何方式访问表。同时读取锁的所有权允许进程读取表,但不保证没有其它进程在同时写入表。受保护的读取锁的所有权允许进程读取表,并且保证没有其它进程在同时写入表。同时写入锁的所有权允许进程写入表,但不保证没有另一进程也在写入表。受保护的写入锁的所有权允许进程写入表,并且保证没有另一进程也在写入表。排他模式锁的所有权允许进程对表做任何事情,并且保证没有其它进程在对表执行任何操作。
由于与这些锁相关联的各种许可和保证,所以某些锁组合是不允许的。例如,如果一个进程拥有对资源的排他模式锁,则其它进程不能被赋予除NULL模式锁以外的任何锁。如果一个进程拥有受保护的写入锁,则其它进程不能被赋予排他模式锁、受保护的写入锁、受保护的读取锁或同时写入锁。如果一个进程拥有受保护的读取锁,则其它进程不能被赋予排他模式锁、受保护的写入锁或同时写入锁。如果一个进程拥有同时写入锁,则其它进程不能被赋予排他模式锁、受保护的写入锁或受保护的读取锁。如果一个进程拥有同时读取锁,则其它进程不能被赋予排他模式锁。
一种可以同时被一个以上的进程持有的锁被称为共享锁。例如,两个进程可以同时持有对相同资源的同时读取锁,因此同时读取锁是共享锁。为了说明的目的,以下描述将参考排他模式锁、共享锁和NULL模式锁。
在一个进程可以执行对资源的操作之前,需要该进程得到赋予该进程对资源执行期望操作的权利的锁。为了得到锁,进程向锁管理器发送对锁的请求。锁管理器是负责赋予、排队和跟踪针对一个或多个资源的锁的进程。为了管理对网络系统中的资源的使用,锁管理器在网络中的一个或多个节点上被执行。
根据一种现有技术的实现方式,锁管理器实现两种对象:资源对象和锁。资源对象是与实际资源相对应的数据结构。使用锁管理器的应用建立实际资源和资源对象之间的映射。每个资源对象具有两个队列:被赋予队列(granted queue)和转换队列。被赋予队列是已被赋予的锁的无序列表。转换队列是已被请求但尚未被赋予的锁的部分有序表。通常,对锁的请求实际上就是转换请求,其中持有锁的进程请求其所持有的锁从一种模式的锁被转换为不同模式的锁。
锁是标识进程和锁模式的数据结构。锁管理器将锁附加到资源对象的赋予队列,以指示锁中所标识的进程已被赋予了针对与被附加了锁的资源对象相对应的资源的锁中所指示的类型的锁。
图1是示出了典型的锁管理器106的框图。锁管理器106是被配置为管理存储在存储器108中的资源对象100的进程。资源对象包括被赋予队列102和转换队列104。锁管理器106已将三个锁110、112和114附加到被赋予队列102,并且将一个转换请求130附加到转换队列104。
所有的锁和转换请求都具有进程ID部分和锁模式部分。锁110的进程ID部分116指示进程PROC_1拥有锁110,并且锁110的锁模式部分118指示锁110是排他锁。锁112的进程ID部分120指示锁112被进程PROC_2拥有,并且锁112的锁模式部分122指示锁112是NULL模式锁。锁114的进程ID部分124指示锁114被进程PROC_3拥有,并且锁114的锁模式部分126指示锁114是NULL锁。转换请求130的进程ID部分132指示转换请求130与进程PROC_4相关联,并且转换请求130的锁模式部分136指示PROC_4当前持有对资源的NULL模式锁。除了锁模式部分136之外,转换请求130还具有指示PROC_4正在请求排他模式锁的被请求模式部分134。
锁管理器106已将锁110、112和114附加到被赋予队列102,指示PROC_1当前具有对与资源对象100相对应的资源的排他所有权。锁管理器106已将转换请求130附加到转换队列104,指示PROC_4已请求但尚未被赋予对与资源对象100相关联的资源的排他模式锁。
关于任何给定资源的信息可以被存储在与资源相对应的资源对象中。每个资源对象被存储在单一节点的存储器中。其上存储有资源对象的节点被称为该资源对象的管理节点。
根据一种锁管理方法,进程首先对该进程将可能使用的所有资源建立NULL模式锁。然后,当进程实际需要访问资源时,进程请求其NULL模式锁被转换为赋予该进程执行期望操作的权利的锁。
例如,为了删除表,进程必须得到对与表相对应的资源对象的排他模式锁。为了得到排他模式锁,进程向控制与表相对应的资源对象的锁管理器发送消息。在该消息中,进程请求其当前NULL模式锁被转换为排他模式锁。如果没有其它进程请求转换,并且如果没有当前被赋予的锁会阻止排他模式锁的赋予,则该请求进程所持有的当前锁被转换为排他模式锁。一旦锁管理器执行了所请求的转换,锁管理器就向请求进程发送消息,指示所请求的转换操作已被执行。
如果进程需要进行访问以从表中读取数据,则该进程必须得到共享锁。为了得到共享锁,进程请求控制与表相对应的资源对象的锁管理器将其当前锁转换为共享锁。如果没有其它进程请求转换,并且如果没有当前被赋予的锁阻止共享锁的赋予,则该请求进程所持有的当前锁被转换为共享锁。
如果已经对表赋予了排他模式锁,则共享锁不能被赋予。在这些情况下,锁转换请求被放在资源对象的转换队列中。当阻塞进程准备好释放其排他锁时,阻塞进程可以向锁管理器发送锁降级请求。锁管理器通过将排他模式锁转换为允许共享锁的赋予的次要锁(lesserlock)来作出响应。随后,通过将共享锁请求从被请求队列移动到被赋予队列并向请求进程发送消息以通知请求进程共享锁已被赋予,来赋予共享锁。
资源对象的转换队列是保存所有待处理(未被赋予)的锁请求的部分有序表。如果待处理锁请求都没有被赋予,则未被赋予的锁请求之一将位于转换队列的“头部”。即使当前被赋予的锁没有阻止锁管理器赋予特定的锁请求,但是如果转换队列不为空,则该锁请求也被置于转换队列上。这种策略防止了“活锁(livelock)”,即,一个进程不能在系统中进行,而其它进程可以进行。
很多进程同时持有对资源的共享锁的情况是普遍的。持有对特定资源的共享锁的一组进程在本文中被统称为“共享锁持有者”。
如果共享锁持有者之一(“请求者”)想要转换成排他模式锁,则请求者必须首先向资源的管理节点发送转换请求。当共享至排他请求到达资源的管理节点中的转换队列的头部时,管理节点向所有共享锁持有者发送向下转换请求消息,要求它们向下转换或关闭它们的锁。管理节点只有在所有共享锁持有者向管理节点确认它们已经向下转换了它们的锁之后才能将排他锁赋予请求者。在请求者发送升级请求的时间与排他锁被赋予的时间之间,请求者不得不等待,并且即使请求者已经在其缓存中具有资源的当前备份,也不能开始更新资源或执行任何后续工作。
在本部分中所描述的方法是可以被继续研究的方法,而不一定是先前已经构想或研究过的方法。因此,除非另外指明,否则不应当仅仅因为这些方法被包括在本部分中就认为本部分所描述的任一种方法是现有技术。
附图说明
在附图中通过示例而不是通过限制来图示了本发明。在附图中,相似的标号表示类似的元件,并且其中:
图1是用于管理对资源的锁的锁管理器和对象资源的框图;
图2是图示了根据本发明的实施例、想要修改资源的进程所执行的步骤的流程图;
图3是图示了根据本发明的实施例、锁管理器所执行的步骤的流程图;以及
图4是可以在其上实现本发明的实施例的计算机系统的框图。
具体实施方式
在下面的描述中,为了说明的目的,给出了大量的具体细节以提供对本发明的完整理解。然而,应当理解本发明可以在没有这些具体细节的情况下被实行。在其它示例中,公知的结构和设备以框图的形式被显示,以避免不必要地模糊本发明。
概览
以下描述用于减小在进程请求修改资源的许可的时间和该进程被允许开始修改资源的时间之间的延迟的技术。为了说明的目的,将给出其中资源是磁盘区块的示例,其中,磁盘区块的备份被存储在缓存中。然而,这只是这些技术可以被应用于的资源的一个示例。本发明的技术不限于任何特定类型的资源。
当进程持有对磁盘区块的共享锁时,磁盘区块的当前备份通常已存在于其中进程正在执行的节点的缓存中。以下所描述的技术允许想要修改资源的进程(“请求者”)在不等待资源的管理者允许它们修改资源的情况下更新它们私有的资源备份。因此,请求者请求更新资源的时间和资源被更新的时间之间的延迟被减小。
共享至排他升级
为了例示的目的,假设请求者持有对资源的共享锁并且想要对资源的排他锁。提供了这样的技术:即使是在共享至排他请求者被赋予排他锁之前,该技术也允许该请求者开始修改(请求者已拥有的)私有的区块的当前备份。
根据一个实施例,无论何时出现对资源的共享至排他请求,该资源的管理者都以不同于其它类型的转换请求的方式对待该请求。具体而言,接收到这样的请求之后,管理者确定该请求是否可以被立即准予。如果该请求不能被立即准予,则管理者确定(1)在赋予队列上是否只有共享锁持有者(没有排他持有者)以及(2)在转换队列上是否有未决的排他请求,而不是简单地将该请求置于转换队列中。
如果在赋予队列上只有共享锁持有者并且在转换队列上没有未决的排他请求,则管理者将转换请求放在转换队列的头部并向请求者发送“继续进行”消息。管理者还向所有当前的共享锁持有者发出向下转换请求消息。
非常有意义的是,即使一个或多个当前被赋予的锁与被请求的许可不相容,继续进行消息也被发送,因此防止了许可在当前被准予。因此,继续进行消息指示所请求的许可可能被准予,但是所请求的许可尚未被准予。
当请求者接收到继续进行消息时,请求者可以开始更新私有存储器中的区块。(1)在继续进行消息之后和(2)所请求的许可被准予之前对区块进行的改变在本文中被称为“先期改变(anticipatory change)”。只有进行了先期改变的进程才被允许访问包括先期改变的资源的备份。可以为先期改变生成重做记录,但是在改变仍然是先期改变时,被改变的区块和重做记录都不能被交付(commit)(“变成永久性的”)。
当所有共享锁持有者向下转换它们的锁并向管理者发送了确认消息时,管理者向请求者发送锁赋予消息,将排他锁赋予请求者。一旦请求者接收到锁赋予消息,所述改变就不再是“先期改变”,而变成“被许可的改变”。一旦改变变成了被许可的,该改变就可以被交付。
事务
在诸如数据库系统之类的一些系统内,一系列操作可以作为一个“事务”被执行。通过事务进行的改变必须以原子单元来交付。因此,只要事务具有任何待处理的先期改变,则通过该事务所进行的改变都不可以被交付。
根据一个实施例,通过事务所进行的先期改变被跟踪。可以使用很多种机制来跟踪事务的先期改变。本发明不局限于任何特定类型的跟踪机制。被用于跟踪先期改变的信息在本文中将被统称为“跟踪信息”。
当事务接收到对修改特定资源的许可时,跟踪信息被更新以指示该事务对所述特定资源进行的任何先期改变都已经被许可。只要跟踪信息指示通过事务所进行的任何先期改变尚未被许可,则该事务就不被允许交付(即使该事务的所有操作可能都已经通过其它方式被成功地完成)。
一旦所有的先期改变都已变成被许可的改变,事务就可以交付了。当事务交付时,交付时间(通常以系统交付号码的形式)被指派给事务。交付时间根据需要被添加到为事务所生成的重做记录上。重做记录随后被链接到检验点队列以被成组写入(flush)磁盘中以使得所述改变成为永久性的。在改变成为永久性的之后,所述改变可以被其它进程或实例(instance)访问。
修改请求
在前一部分中,描述了其中请求者从共享锁升级到排他锁的情形。然而,这里所描述的技术可以应用于涉及请求修改利用锁管理的资源的任何场景中。因而,例如当请求是针对升级到“同时写入”锁或“受保护写入”锁的请求时,同样可以应用该技术。对修改资源的许可的请求在本文中被称为“修改请求”。
请求者操作
图2是示出了根据本发明的一个实施例、在支持先期改变的系统中的想要修改资源的事务所执行的步骤的流程图。具体而言,在步骤202中,想要修改资源的请求者向控制资源的锁管理器发送修改请求。在支持先期改变的系统中,请求者可以接收到继续进行消息。如果没有接收到继续进行消息,则控制从步骤204进行到步骤208,其中请求者将最终接收到锁赋予消息。在请求者接收到锁赋予消息之后,请求者可以修改资源(步骤210)。
如果请求者接收到继续进行消息,则控制从步骤204进行到步骤206。在步骤206中,请求者在还没有被赋予进行修改的许可的情况下通过修改资源的私有备份来进行先期改变。如果请求者是事务,则该请求者还更新跟踪信息以反映先期改变。非常有意义的是,在进行了先期改变之后,请求者可以继续做其它工作。该其它工作可以包括进行附加的先期改变。因此,针对给定事务的跟踪信息可以指示任意量的待处理的尚未被许可的改变。
请求者可以在接收到进行先期改变的许可之前继续做其它工作的事实可以带来非常大的性能获益。请求许可和接收到许可之间的延迟越长,能够在不等待许可的情况下继续进行的获益就越大。因而,先期改变在包括很多节点(这些节点通常共享对相同资源的访问)的系统中特别有用。在不具备进行先期改变的能力的情况下,想要修改共享资源的进程必须等待所有其它节点进行向下转换。节点数目越大,就越可能等待很长时间。
直到先期改变被许可,改变才被“使得成为永久性的”。使改变成为永久性改变的实际过程可以随系统而变化。例如,在一些系统中,通过将标识改变的“重做记录”成组写入磁盘中来使改变成为永久性的。一些系统可以通过将改变后的区块的备份成组写入磁盘来使改变成为永久性的。其它系统可以具有使改变成为永久性改变的其它机制。这里所描述的技术不受制于任何使改变成为永久性改变的特定机制。
在步骤212中,请求者接收到对修改资源的许可。如上所述,许可的接收相对于请求者正在执行的任何其它工作是异步的,唯一的例外是许可的接收必须发生在使改变成为永久性改变之前。
如果请求者是事务,则请求者更新跟踪信息以反映先期改变已被许可。如果没有待处理的先期改变并且请求者已经通过其它方式成功地被完成(步骤214),则请求者所进行的改变被使得成为永久性的并且对其它进程而言是可见的(步骤216)。如果请求者是事务,并且不是所有的操作都是成功的且被许可的,则该事务被退回(rolled back)(步骤218)。
锁管理器操作
图3是示出了在支持先期请求的系统中的锁管理器所执行的步骤的流程图。在步骤302处,资源的管理者接收来自请求者的修改请求。在步骤304和306处,管理者确定是否存在任何已被准予的修改请求(步骤304)以及是否存在任何未决的修改请求(步骤306)。
在使用资源对象来跟踪锁的实施例中,管理者可以通过检查锁对象的被赋予队列以确定被赋予队列上的锁中是否有赋予修改特权的锁来执行步骤304。类似地,管理者可以通过检查锁对象的转换队列以确定转换队列上的转换请求中是否有对修改资源的许可的请求来执行步骤306。
如果存在任何未决的或者被准予的修改请求,则控制进行到步骤320,其中修改请求被置于转换队列上。然而,如果不存在未决的和被赋予的修改请求,则控制进行到步骤308,其中管理者向请求者发送继续进行消息,将修改请求放在转换队列的头部,并向所有不相容的锁持有者发送向下转换请求。
当管理者最终接收到来自所有不相容的锁持有者的向下转换确认时,管理者向请求者发送锁赋予消息,并将修改请求从请求队列的头部移到被赋予队列上。
当前没有持有共享锁的请求者的修改请求
在以上所给出的示例中,修改请求来自于已经持有对资源的共享锁的请求者。因为请求者已经持有共享锁,所以请求者通常将已经具有资源的当前版本的备份。然而,这里所描述的先期修改技术也可以被应用在修改请求来自于当前没有持有共享锁的请求者的情形中。
根据一个实施例,当请求者当前没有持有共享锁时,管理者使得区块的当前备份被发送给请求者。一旦请求者接收到区块的备份,请求者就可以开始进行对区块的先期改变。
在一个实施例中,如果管理者具有区块的当前备份,则管理者自己将区块的当前备份发送给请求者。在这种情况下,管理者可以使用相同的消息来既发送区块又传送“继续进行”消息。
如果管理者不具有区块的当前备份,则管理者可以向共享锁持有者之一发送消息以使得该共享锁持有者向请求者发送区块的当前备份。在这种情况下,管理者可以单独地向请求者发送“继续进行消息”。或者,管理者可以简单地指示共享锁持有者将“继续进行”消息与区块的当前备份一起发送给请求者。
在以上给出的示例中,被赋予的、阻止管理者准予修改请求的锁是共享锁。然而,存在这样的可能:因为存在当前被赋予的排他锁,所以修改请求不能被准予。在当前被赋予的排他锁阻止修改请求被准予的情况下,请求者可以开始进行对“代理”缓冲器的先期改变。在一个实施例中,如果区块的过去图像是可得到的,则请求者使用区块的“过去图像”作为代理缓冲器。区块的过去图像是反映区块过去的状态的区块的备份。因而,区块的当前备份可以包含不在过去的图像中的一些改变。当资源的当前版本到来时,请求者可以将代理缓冲器中的改变合并到资源的当前版本中。
在这种情况下,请求者通常会接收到来自排他锁的拥有者的资源的当前版本。伴随着该当前版本,排他锁的拥有者可以包括锁赋予消息,赋予请求者对资源进行改变的许可。从而,在请求者能够将改变合并到区块的当前版本的同时,改变被许可。
根据一个实施例,为在接收到区块的当前版本之前对代理缓冲器进行的先期改变生成重做。一旦区块的当前版本到来,重做就可以按照类似于恢复操作的“向前复原(roll-forward)”阶段的方式被应用于区块的当前版本。向区块的当前版本应用重做使得区块反映在重做中所标识的改变。
在一些情形中,是否可以对区块进行改变可能取决于区块中的当前值是什么。例如,假设区块包含针对表中的多个行的数据。假设已为表中的多个列中的一个列设定了单值约束条件。特定的行是否可以(通过修改区块)被插入到表中可能取决于该插入是否违反了单值约束条件。因此,根据一个实施例,在将先期改变合并到区块的当前版本中之前,基于区块的当前状态执行约束条件检查。
硬件概览
图4是示出了可以在其上实现本发明的实施例的计算机系统400的框图。计算机系统400包括用于传达信息的总线402或其它通信机构,和与总线402相耦接的用于处理信息的处理器404。计算机系统400还包括被耦接到总线402的用于存储信息和要被处理器404执行的指令的主存储器406,例如随机访问存储器(RAM)或其它动态存储设备。主存储器406还可以被用于存储在要被处理器404执行的指令的执行期间的临时变量或其它中间信息。计算机系统400还包括被耦接到总线402的用来存储用于处理器404的静态信息和指令的只读存储器(ROM)408或其它静态存储设备。诸如磁盘或光盘的存储设备410被提供并耦接到总线402用以存储信息和指令。
计算机系统400可以经由总线402被耦接到用于向计算机用户显示信息的显示器412,例如阴极射线管(CRT)。包括字母数字和其它键的输入设备414被耦接到总线402,用于向处理器404传达信息和命令选择。另一种用户输入设备是光标控制器416,例如鼠标、跟踪球或光标方向键,用于向处理器404传达方向信息和命令选择并用于控制显示器412上的光标移动。该输入设备通常具有两个轴(第一个轴(例如x轴)和第二个轴(例如y轴))上的两个自由度,允许该设备指定平面中的位置。
本发明涉及用于实现本文中所描述的技术的计算机系统400的使用。根据本发明的一个实施例,那些技术由计算机系统400响应于处理器404执行主存储器406中所包含的一个或多个具有一个或多个指令的序列而被执行。这些指令可以从诸如存储设备410之类的另一机器可读介质读取到主存储器406中。主存储器406中所包含的指令序列的执行使得处理器404执行本文中所描述的处理步骤。在替代实施例中,硬接线电路可以被用来代替软件指令或者与之组合起来以实现本发明。因而,本发明的实施例不局限于任何硬件电路和软件的特定组合。
本文中所使用的术语“机器可读介质”指参与提供使得机器以特定方式操作的数据的任何介质。在使用计算机系统400实现的实施例中,各种机器可读介质例如被用于向处理器404提供用于执行的指令。这种介质可以采用很多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘或磁盘,例如存储设备410。易失性介质包括动态存储器,例如主存储器406。传输介质包括同轴电缆、铜线和光纤,包括包含总线402的线。传输介质也可以采用声波或光波的形式,例如那些在无线电波和红外数据通信期间所生成的波。
机器可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任何其它磁性介质、CD-ROM、任何其它光介质、穿孔卡、纸带、具有孔图案的任何其它物理介质、RAM、PROM和EPROM、FLASH-EPROM、任何其它存储器芯片或卡带、下文中要描述的载波或者计算机可以读取的任何其它介质。
各种形式的机器可读介质可以被用于承载一个或多个包括一个或多个指令的指令序列以供处理器404执行。例如,这些指令最初可以承载在远程计算机的磁盘上。该远程计算机可以将这些指令载入到其动态存储器中,并使用调制解调器在电话线上发送这些指令。计算机系统400的本地调制解调器可以接收到电话线上的数据,并使用红外发射器将数据转换成红外信号。红外检测器可以接收到红外信号中所承载的数据,并且适当的电路可以将数据置于总线402上。总线402将数据运送到主存储器406,处理器404从主存储器406获取指令并执行指令。主存储器406所接收到的指令可以可选地在处理器404执行之前或之后被存储在存储设备410上。
计算机系统400还包括被耦接到总线402的通信接口418。通信接口418提供双向数据通信,与被连接到本地网络422的网络链路420耦接。例如,通信接口418可以是综合业务数字网(ISDN)卡或调制解调器,向相应类型的电话线提供数据通信连接。作为另一示例,通信接口418可以是局域网(LAN)卡,向兼容的LAN提供数据通信连接。无线链路也可以被实现。在任何这样的实现方式中,通信接口418发送并接收承载表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路420通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路420可以通过本地网络422提供到主机计算机424的连接或者提供到互联网业务提供商(ISP)426所操作的数据设备的连接。ISP 426又通过现在通常被称为“互联网”428的全球分组数据通信网络提供数据通信业务。本地网络422和互联网428都使用承载数字数据流的电信号、电磁信号或光信号。经过各个网络的信号和网络链路420上的经过通信接口418的信号是传输信息的载波的示例形式,所述信号承载去往和来自计算机系统400的数字数据。
计算机系统400可以通过网络、网络链路420和通信接口418发送消息并接收包括程序代码的数据。在互联网的示例中,服务器430可以通过互联网428、ISP426、本地网络422和通信接口418发送针对应用程序的被请求代码。
所接收到的代码在被接收时可以被处理器404执行,并且/或者可以被存储在存储设备410或其它非易失性存储装置中以供以后的执行。按照这种方式,计算机系统400可以按照载波的形式来获得应用代码。
在前述说明书中,参考大量的特定细节描述了本发明的实施例,这些特定细节是可以随着实现方式而改变的。因而,关于本发明是什么、申请人希望什么成为本发明的唯一且排他的指示标准就是本申请所发布的具有特定形式的权利要求书(包括任何后续的更正)。本文中所明确给出的对权利要求中所包含的术语的任何定义应支配在权利要求中所用到的这些术语的意思。因此,在权利要求中没有明确引述的限制、要素、特性、特征、优点或属性不应当以任何方式限制这些权利要求的范围。因此,说明书和附图应被认为是示例性的而非限制性的。

Claims (19)

1.一种机器执行的方法,包括:
发送对执行涉及特定资源的改变的许可的请求;
在接收到所述许可之前,执行所述改变,同时阻止所述改变成为永久性改变;
在执行了所述改变之后,接收执行所述改变的许可;以及
在接收到执行所述改变的许可之后,停止阻止所述改变成为永久性改变。
2.如权利要求1所述的方法,其中所述改变作为事务的一部分而被执行,并且执行所述改变同时阻止所述改变成为永久性改变的步骤包括:
对所述特定资源的私有备份执行所述改变;以及
阻止所述事务交付。
3.如权利要求2所述的方法,其中所述方法还包括:
维护跟踪信息,该跟踪信息指示所述事务是否进行了任何尚未被许可的改变;以及
只要所述跟踪信息指示所述事务进行了任何尚未被许可的改变,就阻止所述事务交付。
4.如权利要求1所述的方法,其中:
对执行所述改变的许可的请求被从请求者发送到所述资源的管理者;并且
所述方法还包括:
所述管理者判断(a)是否有针对所述资源的当前被赋予的锁赋予了修改所述资源的许可,和(b)是否有未决的锁请求是对修改所述资源的许可的请求;以及
响应于判断出没有针对所述资源的当前被赋予的锁赋予了修改所述资源的许可以及没有未决的锁请求是对修改所述资源的许可的请求,所述管理者向所述请求者发送继续进行消息;
所述请求者响应于接收到所述继续进行消息而执行所述改变。
5.如权利要求4所述的方法,其中所述方法还包括:
响应于判断出没有针对所述资源的当前被赋予的锁赋予了修改所述资源的许可以及没有未决的锁请求是对修改所述资源的许可的请求,所述管理者将对修改许可的请求放在针对所述资源的未决的锁请求队列的头部。
6.如权利要求1所述的方法,其中:
对执行所述改变的许可的请求被从请求者发送到所述资源的管理者;
在所述请求者发送所述请求时,所述请求者持有对所述资源的共享锁并且具有所述资源的当前版本的私有备份;并且
执行所述改变的步骤包括执行对所述资源的当前版本的私有备份的改变。
7.如权利要求1所述的方法,其中:
对执行所述改变的许可的请求被从请求者发送到所述资源的管理者;
在所述请求者发送所述请求时,另一进程持有对所述资源的排他锁;并且
执行所述改变的步骤包括:
在代理缓冲器上执行所述改变;并且
当所述请求者接收到所述资源的当前版本的备份时,将来自所述代理缓冲器的所述改变合并到所述资源的当前版本的备份中。
8.如权利要求7所述的方法,其中所述方法还包括响应于在所述代理缓冲器上执行所述改变而生成重做。
9.如权利要求7所述的方法,其中:
在不检查是否违反约束条件的情况下,在所述代理缓冲器上执行所述改变;并且
只有在检查是否违反约束条件之后,所述改变才被合并到所述当前版本的备份中。
10.如权利要求1所述的方法,其中:
对执行所述改变的许可的请求被从请求者发送到所述资源的管理者;
在所述请求者发送所述请求时,所述请求者不持有对所述资源的共享锁,但是一个或多个其它进程的集合持有对所述资源的共享锁;并且
所述方法还包括使所述进程集合中的进程向所述请求者发送所述资源的当前备份。
11.如权利要求10所述的方法,其中:
所述请求者响应于接收到继续进行消息来执行所述改变;并且
所述方法还包括使所述进程集合中的所述进程利用所述资源的当前备份来包括所述继续进行消息。
12.如权利要求10所述的方法,其中:
所述请求者响应于接收到继续进行消息而执行所述改变;并且
所述方法还包括使所述资源的管理者向请求者发送所述继续进行消息。
13.一种机器执行的方法,包括:
在资源的管理者处,接收来自请求者的请求,其中所述请求是针对修改所述资源的许可的请求;
在一个或多个当前被赋予的锁阻止所述管理者赋予所述请求者修改所述资源的许可的同时,所述管理者使所述请求者接收继续进行消息,该继续进行消息允许所述用户对所述资源进行先期改变,但是阻止所述改变成为永久性改变;
当没有当前被赋予的锁阻止所述管理者赋予所述请求者对修改所述资源的许可时,所述管理者向所述请求者发送锁赋予消息,该锁赋予消息允许所述请求者使所述改变成为永久性的。
14.如权利要求13所述的方法,其中所述方法还包括使得所述管理者将所述请求放在请求队列的头部,其它先前所接收的针对所述资源的锁请求之前。
15.如权利要求13所述的方法,其中所述方法还包括:
接收到所述请求之后,所述管理者判断是否有被赋予或被请求的锁是赋予对修改所述资源的许可的锁;以及
响应于判断出没有被赋予或被请求的锁是赋予对修改所述资源的许可的锁,所述管理者使得所述请求者接收继续进行消息。
16.如权利要求13所述的方法,其中:
所述请求者持有对所述资源的共享锁;并且
所述管理者通过向所述请求者发送继续进行消息来使所述请求者接收所述继续进行消息。
17.如权利要求13所述的方法,其中:
所述请求者不持有对所述资源的共享锁;并且
所述管理者通过使得不持有对所述资源的共享锁的进程向所述请求者发送(a)针对所述请求者的所述资源的当前备份和(b)继续进行消息来使得所述请求者接收到所述继续进行消息。
18.一种存储指令的计算机可读介质,所述指令在被执行时使得一个或多个处理器执行权利要求1-17中的任一个所述的方法。
19.一种计算机系统,包括一个或多个处理器和包含指令的存储器,所述指令在被所述一个或多个处理器执行时使得所述计算机系统执行权利要求1-17中的任一个权利要求所述的方法。
CN2007800049783A 2006-02-10 2007-02-09 对锁管理资源的先期改变 Active CN101390055B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/351,675 2006-02-10
US11/351,675 US7392335B2 (en) 2006-02-10 2006-02-10 Anticipatory changes to resources managed by locks
PCT/US2007/003463 WO2007095083A1 (en) 2006-02-10 2007-02-09 Anticipatory changes to resources managed by locks

Publications (2)

Publication Number Publication Date
CN101390055A true CN101390055A (zh) 2009-03-18
CN101390055B CN101390055B (zh) 2012-07-04

Family

ID=38120337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800049783A Active CN101390055B (zh) 2006-02-10 2007-02-09 对锁管理资源的先期改变

Country Status (7)

Country Link
US (1) US7392335B2 (zh)
EP (1) EP1938191B1 (zh)
JP (1) JP5320073B2 (zh)
CN (1) CN101390055B (zh)
AU (1) AU2007215295B2 (zh)
CA (1) CA2636810C (zh)
WO (1) WO2007095083A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339321A (zh) * 2011-11-09 2012-02-01 上海盛霄云计算技术有限公司 具有版本控制的网络文件系统及方法
CN107423454A (zh) * 2017-09-22 2017-12-01 郑州云海信息技术有限公司 一种分布式文件系统中文件锁的处理方法、装置及设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536502B2 (en) * 2004-07-23 2009-05-19 Funai Electric Co., Ltd. Controller device to be connected to IEEE 1394 serial bus
US8108865B2 (en) * 2006-07-31 2012-01-31 Hewlett-Packard Development Company, L.P. Process replication method and system
US7861093B2 (en) * 2006-08-30 2010-12-28 International Business Machines Corporation Managing data access via a loop only if changed locking facility
US7600063B2 (en) * 2006-09-15 2009-10-06 Oracle International Corporation Techniques for improved read-write concurrency
US8429657B2 (en) 2008-04-28 2013-04-23 Oracle International Corporation Global avoidance of hang states via priority inheritance in multi-node computing system
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8255373B2 (en) * 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US8356054B2 (en) * 2009-11-10 2013-01-15 International Business Machines Corporation Management of resources in a host system
US9032163B2 (en) * 2010-09-22 2015-05-12 Novell, Inc. Data access management
WO2012140916A1 (ja) * 2011-04-15 2012-10-18 日本電気株式会社 ログ情報記録システム、装置、方法およびプログラム
US9002790B2 (en) * 2011-09-14 2015-04-07 Google Inc. Hosted storage locking
US9747288B1 (en) * 2012-12-10 2017-08-29 Amazon Technologies, Inc. Scalable transaction-based data repository service
US9588801B2 (en) 2013-09-11 2017-03-07 Intel Corporation Apparatus and method for improved lock elision techniques
CN104714792B (zh) * 2013-12-17 2019-02-26 腾讯科技(深圳)有限公司 多进程共享数据处理方法和装置
JP6199808B2 (ja) * 2014-06-06 2017-09-20 株式会社東芝 データベース装置およびデータアクセス方法
JP6306215B2 (ja) 2015-12-14 2018-04-04 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント
CN109471735A (zh) * 2018-11-14 2019-03-15 常熟理工学院 分布式集中控制系统的现场数据信息安全控制方法及系统
CN114697285B (zh) * 2022-03-31 2023-11-07 北京字跳网络技术有限公司 信息展示和信息发送方法、装置、设备和介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893157A (en) * 1997-05-28 1999-04-06 International Business Machines Corporation Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
US5895494A (en) * 1997-09-05 1999-04-20 International Business Machines Corporation Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure
US6795901B1 (en) * 1999-12-17 2004-09-21 Alliant Techsystems Inc. Shared memory interface with conventional access and synchronization support
RU2003105686A (ru) * 2000-07-28 2004-06-20 Ксюмфоник Системз Ас (No) Способ, система и структуры данных, предназначенные для реализации вложенных баз данных
SG99941A1 (en) * 2000-08-30 2003-11-27 Ibm Transaction support on logical disks
CA2369621C (en) * 2002-01-25 2009-06-09 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for handling resource transaction requests
CN100426222C (zh) * 2004-06-15 2008-10-15 中兴通讯股份有限公司 在多任务操作系统中解决任务死锁的方法
US7627574B2 (en) * 2004-12-16 2009-12-01 Oracle International Corporation Infrastructure for performing file operations by a database server

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339321A (zh) * 2011-11-09 2012-02-01 上海盛霄云计算技术有限公司 具有版本控制的网络文件系统及方法
CN107423454A (zh) * 2017-09-22 2017-12-01 郑州云海信息技术有限公司 一种分布式文件系统中文件锁的处理方法、装置及设备

Also Published As

Publication number Publication date
CA2636810A1 (en) 2007-08-23
US7392335B2 (en) 2008-06-24
AU2007215295A1 (en) 2007-08-23
JP5320073B2 (ja) 2013-10-23
CA2636810C (en) 2013-11-19
WO2007095083A1 (en) 2007-08-23
US20070192524A1 (en) 2007-08-16
CN101390055B (zh) 2012-07-04
JP2009526324A (ja) 2009-07-16
AU2007215295B2 (en) 2011-02-24
EP1938191B1 (en) 2014-03-26
EP1938191A1 (en) 2008-07-02

Similar Documents

Publication Publication Date Title
CN101390055B (zh) 对锁管理资源的先期改变
CN111727428B (zh) 基于区块链的房间库存管理系统
US8301779B2 (en) Mechanisms for obtaining access to shared resources using a single timestamp technique
CN103544153B (zh) 一种基于数据库的数据更新方法和系统
CN100410930C (zh) 提供数据项的可用版本
US7958200B2 (en) Methods, computer program products, and apparatuses for providing remote client access to exported file systems
CN102971711A (zh) 用于处理批工作单元的设备
US8171053B2 (en) Dynamic workflow documentation system
JP2012533824A (ja) リアルタイムバッチ口座処理用のシステムおよび方式
CN101243365A (zh) 服务器侧项目管理器
JP2006505877A (ja) アプリケーション特有のアクセス制御を別個のサーバを用いてサポートするための手法
CN102667733B (zh) 数据访问装置、数据访问方法以及数据访问程序
CN110163572A (zh) 一种链码函数处理方法、装置及设备
KR20140012663A (ko) 독립된 외부 시스템과의 세션 동기화를 위한 시스템 및 방법
US7284018B1 (en) Logless transaction coordination
US20050071281A1 (en) Software license optimization
US7747829B2 (en) Arrangement and method for update of configuration cache data
CN101189581B (zh) 用于处理与锁定相关的不一致的方法
CN101523352A (zh) 用于并发控制的持久锁/资源
US20150088729A1 (en) Online property reservation service provider for reserving properties for lease
CN100487675C (zh) 分布式共享磁盘系统中的磁盘写操作
CN115456802B (zh) 一种基于数字货币的保险事件处理系统
EP4250195A1 (en) Method and system for low-impact transfer of provider- dependent items
JP4095232B2 (ja) アプリケーション管理・運用方法及びシステム及びコンピュータ読み取り可能な記録媒体
US7899909B1 (en) Method for reserving resources in a storage area network by reserving portions of properties of the resources

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1129751

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1129751

Country of ref document: HK