CN1174323C - 管理共享内存的方法 - Google Patents

管理共享内存的方法 Download PDF

Info

Publication number
CN1174323C
CN1174323C CNB981069541A CN98106954A CN1174323C CN 1174323 C CN1174323 C CN 1174323C CN B981069541 A CNB981069541 A CN B981069541A CN 98106954 A CN98106954 A CN 98106954A CN 1174323 C CN1174323 C CN 1174323C
Authority
CN
China
Prior art keywords
variable
maintenance
distribute
affairs
locking bolt
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.)
Expired - Fee Related
Application number
CNB981069541A
Other languages
English (en)
Other versions
CN1197955A (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.)
Alcatel Lucent NV
Original Assignee
Alcatel NV
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 Alcatel NV filed Critical Alcatel NV
Publication of CN1197955A publication Critical patent/CN1197955A/zh
Application granted granted Critical
Publication of CN1174323C publication Critical patent/CN1174323C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本方法组合了两种已知的存取类型:按指针存取和按变量存取。这两种存取类型通过管理锁栓的具体规则:“保持”,“读锁栓”和“写锁栓”而互相兼容。可用于软件平台,尤其用于通信系统的平台。

Description

管理共享内存的方法
技术领域
本发明涉及共享内存中数据的管理,该内存是计算机主存,其中众多进程同时执行。
背景技术
每个进程本身一般由众多基本任务组成,这些基本任务可能互相竞争对数据的存取以便读取它们或修改它们。这类管理方法由称为“数据管理程序”的软件所实施。一个计算机包括一个主存和一个海存,主存的容量有限但它的所有单元都可直接存取因此可很快地存取,而海存一般由具有很大容量的硬盘所组成,但它的存取慢得多,因它需选择道并等待道上所需单元移至面对读头的位置。常规情况下计算机操作系统只将给定时刻实际需要的数据装入主存,而装载是通过称为高速缓存的专用快速小型存储器实现的,依靠预测机制造成使硬盘存取加速的印象,该预测机制利用一般应用程序顺序地使用数据这一事实。常规数据管理程序考虑数据通过高速缓存这一事实从而得到优化。
半导体存储器技术所取得的进展有可能提供一个具有大得足够接收计算机中执行的所有进程所分享的所有数据的容量的主存,甚至可供处理大量数据的应用程序使用。于是硬盘保持主存内所有数据的更新复制内容而只用于将这些数据后备。将所有数据都装载入主存的做法对并非顺序地使用数据的应用程序特别有利,高速缓存对这类应用程序用处不大。这尤其适用于控制通信交换机的应用程序。因此需要设计用于管理全部装入主存的数据的优化的数据管理程序。
面向对象数据库内所用数据管理程序已知是关系数据库中所用数据管理程序。
有两种存取数据的类型:读取和写存。已知对于每一种存取类型有两种在数据管理程序和基本任务之间传送信息的传送模式:按值传送模式和按指针传送模式。
在读取或写存变量值时,按值传送模式包括在包含变量当前值的内存单元处读写或写变量值;而按指针传送模式包括将称为“指针”的地址提供给请求读或写的任务,该指针指明其中存有待读值的内存单元或其中准备写存值的内存单元,只要该任务拥有该指针,该任务随时都可在此单元中读或写。当任务按指针模式存取一个变量时,已知可为所述任务将称为“保持”的锁栓分配给包括所述变量当前值的内存单元,以便保持每个任务所用数据的一致性。只要不释放该保持,该保持是唯一具有存取所述变量当前值的权利者。
在面向对象数据管理程序中已知按指针传送模式。它所提供的优点是有可能快速存取。它允许数据作为编程语言的变量进行处理。但是对象数据管理程序的缺点或是不提供多任务事务(因此也就没有竞争),或是不提供对象的锁栓(任何竞争的结果是将负面锁住并将页面全部复制至记录区中。这种基粒度级别因而增大费用)。
使用按值传送模式时不必管理存取竞争。存取竞争是由数据库的数据管理程序应用的“事务性”协议管理的。
与众多变量相关的并由一个任务所请求的在同一请求中的一组读操作和/或写操作称为“事务”。在事务中,每个操作可用按值传送模式也可用按指针传送模式完成。任务事务可分为三个阶段:
—启动阶段,在此期间数据管理程序向启动事务的任务提供单个事务标识符,该标训符指明一个包含事务描述符的内存单元。
—存取阶段,在此期间由启动事务的任务执行读操作或写操作,但除此事务外用户看不到这些操作;及在此期间由实际事务调用的讨论中的内存单元上的读锁栓和写锁栓被分配给该事务。在一种已知存取方法中,当事务完成写存时,它临时地将新变量值输入称为“记录区”并分配给所述变量的事务的内存单元中。此记录区只能由所述事务存取。
—结束或验证阶段,在此期间对写和读进行验证。在上述已知方法中,新值(包含于分配给事务的记录区中)被输入至包含相应当前值的单元中,同时能被所有任务看见。待读值被实际上读取。
可将锁栓分配给包含变量当前值或新值的内存单元以阻止其它操作可能会危及数据一致性。锁栓可分配给整个数据表。有两类锁栓:
—分配给一个给定事务的给定内存单元的读锁栓是一个分配给事务的非唯一权利,授权所述事务读取存于该内存单元中的值和不让其它希望写入内存单元的事务得到验证。
—分配给一个给定事务的给定内存单元的写锁栓是一个分配给事务的唯一权利,授权所述事务也只有所述事务将值写入内存单元。
在一定系统中,当两个事务竞争对变量完成不同操作时,可分配优先级给变量以使一种操作类型(读或写)具有比其它类型高的优先级。请求较高优先级操作的事务称为所述变量的“优先”事务。
读锁栓或写锁栓可为可流产也可为不可流产:
—如它是可流产的,当一个与拥有可流产锁栓的事务竞争的事务具有高的优先级时,该锁栓被释放。拥有该锁栓的事务即被流产。
—如它是不可流产的,当一个与拥有可流产锁栓的事务竞争的事务具有高的优先级时,该锁栓不被释放。拥有该锁栓的事务不被流产。
当拥有可流产锁栓的事务得到验证时,该可流产锁栓进入不可流产状态。与此同时,进行竞争的事务的可流产锁栓被释放,同时该进行竞争的事务即被流产。
一定事务性协议有可能完成一个事务并同时保证称为“ACID”的四个特性:
—整体性(由一个事务请求的存取或全部处理或一个都不处理);
—一致性(所有数据自一个稳态变为另一个稳态);
—隔离性(在事务结束之前,在事务外部看不见变量新值);
—持久性(一旦事务得到验证,变量新值能经受存放它们的站的故障,因为所述新值在盘上或处于工作状态中的另一站中有后备);以及
—串行性(如众多事务并行地发生,则它们的结果如同它们是连续地发生一样)。
专利申请FR 2,727,222描述这样一个事务性协议。已知的数据管理程序保证“ACID”性质但具有不能提供按指针存取的缺点。因此现有技术提供不出完全满意的方法。
发明内容
本发明一个目的是提供一种管理共享内存中数据的方法,它通过提供按指针存取而平均来说达成对数据的极快存取而尽管如此仍在事务完成期间保证“ACID”性质。
本发明提供一种管理共享内存的方法,其中包含在内存中的数据由不同的竞争过程共享,每个过程一般由多个竞争任务组成;所述方法包括:
(A)执行事务外部的读操作时,其中对于每个待读变量,读操作包括:
(i)如果存在一个分配给待读变量的保持,则等待该保持被释放,所述保持阻止对所述变量的存取;
(ii)向待读变量分配一个保持;
(iii)向请求所述读操作的过程提供一个指针,该指针指定一个包含所述变量当前值的内存段;或提供该变量的当前值并以整体方式将其复制到属于请求所述读操作的任务的内存单元中;并
(iv)释放该保持;以及
(B)执行事务外部的写操作时,其中对于每个待写变量,  写操作包括:
(i)如果已有一个保持被分配给该变量当前值,则等待该保持被释放;
(ii)如果没有分配给该变量的保持,则在写入该变量所需的时间内向该变量分配一个保持;
(iii)如果存在一个写锁栓,则释放该保持,等待该写锁栓被释放,然后向该变量分配一个新的保持;
(iv)如果没有写锁栓但存在一个读锁栓,则在请求所属读操作的任务优先于任何写任务的情况下,等待所述读锁栓被释放,在其它情况下,释放该读锁栓并中断其所属的事务;
(v)如果不存在写锁栓和读锁栓,则分配一个不可中断的写锁栓,该写锁栓阻止其它任何写操作;并
(vi)向请求所述读操作的任务提供一个指针,该指针指定一个包含变量段的当前值的内存段,所述变量段包含该变量的当前值;或为每个待写变量提供一个新值,并将该新值复制到一个记录区,释放该不可中断写锁栓并释放所述保持;以及
(C)执行事务内部的读操作时,其中对于每个待读变量,一个读操作包括:
(i)如果已有一个为该事务而分配给该变量的记录区,则依据步骤A(i)至A(iv)执行一个读操作;
(ii)如果已有一个为该事务而分配给该变量的记录区,则按照下述步骤(a)至(e)执行一个读操作:
(a)如果已有一个分配给该变量的保持,则等待释放该保持;
(b)如果没有分配给该变量的保持,则在读取该变量所需的时间内向该变量分配一个保持;
(c)如果没有分配给该变量的不可中断写锁栓,则释放该保持并等待释放该不可中断写锁栓,然后重复前述步骤(a)和(b);
(d)如果没有分配给该变量的不可中断写锁栓,则向该变量分配一个不可中断读锁栓;所述不可中断读锁栓在读任务优先于任何写任务的情况下,阻止任何事务外部的写操作,在其它情况下释放所述不可中断读锁栓;
(e)为每个待读变量向请求所述读操作的任务提供一个指针,其中该指针指定包含该变量值的记录区;或提供该变量的值并将其以整体方式复制到一个属于请求所述读操作的过程的内存段中;然后释放该保持;以及
(D)执行事务内部的写操作时,其中对于每个待写变量,一个写操作包括:
(i)如果没有用于所述事务的记录区,则依据下述步骤(a)至(d)执行写操作:
(a)如果已有一个分配给所述变量值的保持,则等待释放该保持;如果没有分配给该变量当前值的保持,则在写入一个新值所需的时间内向该变量当前值分配一个保持;
(b)如果已有一个写锁栓,则释放该保持并返回前已步骤(a);
(c)如果没有写锁栓,则分配一个阻止任何其它写操作的可中断写锁栓,若该事务被中断,则释放该保持;向该变量分配一个记录区,向所述记录区分配一个第二保持;将变量当前值写入该记录区中;并释放先前分配给该变量当前值的第一保持;
(d)为每个待写变量提供一个指定该记录区的指针,或将新值复制到该记录区中,然后释放该保持;
(ii)如果这个事务已有一个记录区,则依据下述步骤(a)至(b)执行写操作:
(a)如果已有一个分配给包含变量新值的记录区的保持,则等待释放该保持;如果没有分配给包含该变量新值的记录区的保持,则向所述记录区分配一个保持;
(b)提供一个指定该记录区的指针;或为每个待写变量提供一个新值,将该新值复制到该记录区中,然后释放该保持。
以此方式表现其特征的方法平均来说达成对数据的更快存取,因为有可能使用指针存取变量,而如可能使变量涉及众多任务,则允许管理竞争。当两个不同任务分别请求对同一变量进行读取和写存,或两个写存时,上面所给规则能解决出现的矛盾。
以此方式表现其特征的方法提供的优点是对存取提供整体性:如按指针存取则使用保持,或如按值存取使用读锁栓或写锁栓。
以此方式表现其特征的方法因而保证事务所需四个特性(整体性,一致性,隔离性和持久性),因为保持提供整体性,锁栓提供一致性,记录区提供隔离性,和用于验证每个值的修改的协议提供持久性。
附图说明
参照附图所作对本发明数据管理程序例子的下列描述能使本发明更好地被理解和发现其它细节,附图中:
图1是不在事务内部读取时所涉及步骤的流程图;
图2是在事务内部读取时所涉及步骤的流程图;
图3是不在事务内部写存时所涉及步骤的流程图;以及
图4是在事务内部写存时所涉及步骤的流程图。
具体实施方式
下面表格总结了在两个事务之间出现竞争时,根据本发明的可用规则:对于同一个变量,第一锁栓早已分配给第一事务,第二锁栓即将分配给第二事务;而该表格标志出第二锁栓的分配是可能的(是)或是被拒绝(否)。
                        表一
  分配第二锁栓的可能性     第一锁栓
    读锁栓可流产   读锁栓不可流产   写锁栓可流产  写锁栓不可流产
  第二锁栓 读锁栓可流产     是   是   是  否
读锁栓不可流产     是   是   是  否
写锁栓可流产     是   是   否  否
写锁栓不可流产     否   否   否  否
在结束事务时,分配给第一事务的第一锁栓与分配给第二事务的第二锁栓之间的矛盾作为这两个事务的相应优先级的函数而加以解决,它们的优先级预先为每个变量确定。有两个明确的方法用于实施本方法,这决定于当可流产写锁栓转换为不可流产写锁栓时所设置的规则。
下列表格总结在实施本发明中转换第二锁栓的可能性。
                           表二
    转换第二锁栓的可能性 读锁栓可流产 读锁栓不可流产 写锁栓可流产
    第二锁栓   读锁栓可流产→不可流产
  写锁栓可流产→不可流产 —如优先级给予写者:则流产第一锁栓及其事务。—如优先级给予读者:则转换不可能。 不论优先级如何:转换不可能 不可能有此情况
图1至4显示数据管理程序如何对应于本发明方法的这种实施进行操作。
图1显示不在事务内部读取时数据管理程序完成的一系列步骤1。当请求读取的任务在同一请求中并不请求任何其它存取时,不在事务内部完成按值或按指针读取变量。
首先,数据管理程序完成步骤10,其中测试确定是否有保持为此变量分配给一个任务:
—如存在保持,在步16中等待分配给该变量的保持被释放;以及
—如不存在或不再存在分配给所述变量的保持,在步11中分配一个保持给所述变量;由于此保持阻止其它任务的任何存取,它能保证数据不被其它任务修改;然后在步12中测试确定读取是否为按指针读取:
--如读取是按指针的,则在步15中向请求读操作的任务提供一个指明包含变量当前值的内存单元的指针;以及
--如读取不是按指针的,而是按值读取,则在步13中以整体方式将变量当前值复制入对于请求读取的任务是特定的内存单元中;以及最后在步14中释放由步11分配的保持。
图2是在事务内部读取时数据管理程序所完成步骤的流程图。当请求读取的任务在同一请求中也请求其它存取时,在事务内部完成按值或按指针读取变量。
首先步20中测试确定是否存在分配给该变量的用于暂时存放所述变量新值的记录区:
—如存在这一记录区,则数据管理程序完成与上面参照图1描述过的不在事务内部读取的一系列步骤1完全相同的一系列步骤1’;以及
—如不存在分配给该变量的记录区,步21中测试确定是否存在一个分配给变量当前值的保持;
--如有保持分配给变量当前值,则步30中等待保持被释放;以及
--如不存在或不再存在分配给所述变量当前值的保持,则步22中在需读取变量时分配一个保持给所述变量当前值;由于此保持阻止其它任务进行任何存取,它保证了操作的整体性;然后步23中测试确定是否存在分配给变量当前值的不可流产写锁栓:
---如有分配给变量当前值的不可流产写锁栓,则步29中释放该保持并等待该不可流产写锁栓被释放,因设置写锁栓与不可流产写锁栓的存在是不兼容的(见表一中左列),然后重新启动步21、22、23可能还有步30;以及
---如没有不可流产写锁栓,然而可能会有可流产写锁栓,及如请求读取的任务所具有优先级高于任何进行竞争的写任务,则步24中分配一个可流产读锁栓给变量当前值(如表一中所标明的,当早已存在可流产写锁栓时,有可能分配一个可流产或不可流产写锁栓);及步25中确定该读取是按指针读取还是按值读取:
----如它是按指针读取,则步28中向请求读操作的任务提供待读变量的指针,该指针指明包含所述变量当前值的内存单元;以及
----如它是按值读取,步26中提供变量当前值和以整体方式将它复制入对请求读操作的任务为特定的内存单元中;并最后释放该保持。
图3显示不在事务内部写操作时数据管理程序所完成的步骤。当请求写存的任务在同一请求中并不请求其它存取时,不在事务内部完成按值或按指针写变量。
步30中首先测试确定是否存在分配给变量的保持:
—如有保持,则步41中等待保持被释放,然后重新启动步30;以及
—如不存在或不再存在保持,则步31中分配一个保持给所述变量;然后步32中确定是否存在分配给所述变量的可流产或不可流写锁栓:
--如有写锁栓,则步40中释放由步31分配的保持,然后等待写锁栓被释放,同时重复步30、31、32可能还有41;以及
--如不存在或不再存在写锁栓,则在步33中确定是否有可流产或不可流产的读锁栓:
---如没有读锁栓,则步34中分配不可流产写锁栓给所述变量,该锁栓阻止其它任务的任何写或读操作;然后步35中确定该写存是按值写存还是按指针写存:
----如它是按值写存,则步36的一系列操作中将位于属于请求写操作的任务的内存单元中的新值复制入分配给变量的内存单元中,然后释放该写锁栓,然后再释放该保持;以及
----如该写存是按指针写存,则步37中向请求写操作的任务提供一个指明包含变量当前值的内存段的指针,该任务然后能将新值输入此单元中;以及
---如至少有一个读锁栓,步42中测试确定该锁栓是否可流产:
----如它是可流产读锁栓,即如至少有一个进行竞争的读任务,则步38中确定该至少一个进行竞争的读任务所具有的优先级是否高于任何其它读任务(应用位于表二的第二列中的规则):
-----如至少一个进行竞争的任务所具有的优先级高于任何写任务,则完成步40(撤消该保持并等待该读锁栓被释放);以及
-----如没有一个进行竞争的读任务具有优先级,则步39的一系列操作中释放分配给进行竞争的任务的每个可流产读锁栓,及将读锁栓所属的事务流产(遵照表二);然后完成步34(设置一个不可流产写锁栓);以及
----如该读锁栓不是可流产的,则完成步40。
图4是在事务内部写存时数据管理程序所完成步骤的流程图。当请求写操作的任务在同一请求中还请求其它存取时,在事务内部完成按值或按指针写存变量。
在第一步50中确定是否存在着分配给讨论中的变量的记录区,对于讨论中的写存事务:
—如不存在这类记录区,在步51中确定是否存在分配给变量当前值的保持:
--如不存在或不再存在保持,则步52中分配一个保持给变量当前值;此保持使该操作具备整体性;然后完成步53,步53中确定是否存在分配给该变量的写锁栓:
---如没有写锁栓,则在步54的一系列操作中向讨论中的事务的变量当前值分配一个可流产的写锁栓(如果讨论中的事务与其它事务相竞争)(表一的规则允许);然后分配一个记录区给此当前值,分配一个保持给记录区,该保持使复制变量当前值入记录区的操作整体化;再复制变量当前值入记录区;然后释放分配给当前值的保持;及最后在步55中确定写操作是按指针还是按值写操作:
----如它是按值写操作,则在步56的一系列操作中将变量新值复制入记录区,然后释放分配给记录区的保持;以及
----如它是按指针写操作,则在步57中向写任务提供指明记录区的指针,该指针允许将新值写入记录区;然后一旦事务得到验证后新值即被转送至当前值的内存单元中;以及
---如早已存在一个分配给变量当前值的可流产或不可流产的写锁栓,则步58中释放该保持和等待写锁栓被释放,及重新启动步51;以及
--如步51确定存在一个分配给变量当前值的保持,则步59中等待该保持被撤消,重新启动步51;以及
—如步50确定对于讨论中的事务存在着一个分配给变量的记录区,则在步61中确定是否存在分配给所述记录区的保持:
--如存在一个分配给所述记录区的保持,则步67中通过重复操作61等待保持被撤消;以及
--如不存在分配给所述记录区的保持,则步62中分配一个保持给记录区,该保持阻止对记录区的任务存取;然后在步63中确定写操作是按指针还是按值;
---如它是按值写操作,则在步64的一系列操作中提供新值给变量,将新值复制入记录区,然后释放该保持;以及
---如它是按指针写操作,则在步66中向写任务提供一个指明记录区的指针以便所述任务能在其中写入新值。

Claims (1)

1.一种管理共享内存的方法,其中包含在内存中的数据由不同的竞争过程共享,每个过程一般由多个竞争任务组成;所述方法包括:
(A)执行事务外部的读操作时,其中对于每个待读变量,读操作包括:
(i)如果存在一个分配给待读变量的保持,则等待该保持被释放,所述保持阻止对所述变量的存取;
(ii)向待读变量分配一个保持;
(iii)向请求所述读操作的过程提供一个指针,该指针指定一个包含所述变量当前值的内存段;或提供该变量的当前值并以整体方式将其复制到属于请求所述读操作的任务的内存单元中;并
(iv)释放该保持;以及
(B)执行事务外部的写操作时,其中对于每个待写变量,写操作包括:
(i)如果已有一个保持被分配给该变量当前值,则等待该保持被释放;
(ii)如果没有分配给该变量的保持,则在写入该变量所需的时间内向该变量分配一个保持;
(iii)如果存在一个写锁栓,则释放该保持,等待该写锁栓被释放,然后向该变量分配一个新的保持;
(iv)如果没有写锁栓但存在一个读锁栓,则在请求所属读操作的任务优先于任何写任务的情况下,等待所述读锁栓被释放,在其它情况下,释放该读锁栓并中断其所属的事务;
(v)如果不存在写锁栓和读锁栓,则分配一个不可中断的写锁栓,该写锁栓阻止其它任何写操作;并
(vi)向请求所述读操作的任务提供一个指针,该指针指定一个包含变量段的当前值的内存段,所述变量段包含该变量的当前值;或为每个待写变量提供一个新值,并将该新值复制到一个记录区,释放该不可中断写锁栓并释放所述保持;以及
(C)执行事务内部的读操作时,其中对于每个待读变量,一个读操作包括:
(i)如果已有一个为该事务而分配给该变量的记录区,则依据步骤A(i)至A(iv)执行一个读操作;
(ii)如果已有一个为该事务而分配给该变量的记录区,则按照下述步骤(a)至(e)执行一个读操作:
(a)如果已有一个分配给该变量的保持,则等待释放该保持;
(b)如果没有分配给该变量的保持,则在读取该变量所需的时间内向该变量分配一个保持;
(c)如果没有分配给该变量的不可中断写锁栓,则释放该保持并等待释放该不可中断写锁栓,然后重复前述步骤(a)和(b);
(f)如果没有分配给该变量的不可中断写锁栓,则向该变量分配一个不可中断读锁栓;所述不可中断读锁栓在读任务优先于任何写任务的情况下,阻止任何事务外部的写操作,在其它情况下释放所述不可中断读锁栓;
(g)为每个待读变量向请求所述读操作的任务提供一个指针,其中该指针指定包含该变量值的记录区;或提供该变量的值并将其以整体方式复制到一个属于请求所述读操作的过程的内存段中;然后释放该保持;以及
(D)执行事务内部的写操作时,其中对于每个待写变量,一个写操作包括:
(i)如果没有用于所述事务的记录区,则依据下述步骤(a)至(d)执行写操作:
(a)如果已有一个分配给所述变量值的保持,则等待释放该保持;如果没有分配给该变量当前值的保持,则在写入一个新值所需的时间内向该变量当前值分配一个保持;
(b)如果已有一个写锁栓,则释放该保持并返回前已步骤(a);
(c)如果没有写锁栓,则分配一个阻止任何其它写操作的可中断写锁栓,若该事务被中断,则释放该保持;向该变量分配一个记录区,向所述记录区分配一个第二保持;将变量当前值写入该记录区中;并释放先前分配给该变量当前值的第一保持;
(d)为每个待写变量提供一个指定该记录区的指针,或将新值复制到该记录区中,然后释放该保持;
(ii)如果这个事务已有一个记录区,则依据下述步骤(a)至(b)执行写操作:
(a)如果已有一个分配给包含变量新值的记录区的保持,则等待释放该保持;如果没有分配给包含该变量新值的记录区的保持,则向所述记录区分配一个保持;
(b)提供一个指定该记录区的指针;或为每个待写变量提供一个新值,将该新值复制到该记录区中,然后释放该保持。
CNB981069541A 1997-04-17 1998-04-16 管理共享内存的方法 Expired - Fee Related CN1174323C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9704744A FR2762418B1 (fr) 1997-04-17 1997-04-17 Procede de gestion d'une memoire partagee
FR9704744 1997-04-17

Publications (2)

Publication Number Publication Date
CN1197955A CN1197955A (zh) 1998-11-04
CN1174323C true CN1174323C (zh) 2004-11-03

Family

ID=9506029

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB981069541A Expired - Fee Related CN1174323C (zh) 1997-04-17 1998-04-16 管理共享内存的方法

Country Status (8)

Country Link
US (1) US6009426A (zh)
EP (1) EP0872796B1 (zh)
JP (1) JPH10301834A (zh)
CN (1) CN1174323C (zh)
AT (1) ATE262696T1 (zh)
CA (1) CA2233407A1 (zh)
DE (1) DE69822541T2 (zh)
FR (1) FR2762418B1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100365632C (zh) * 2006-04-05 2008-01-30 华为技术有限公司 实现内存数据和数据库数据事务一致性的处理方法

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3756352B2 (ja) * 1999-06-29 2006-03-15 富士通株式会社 コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体
AU2112301A (en) * 1999-09-24 2001-04-24 Sun Microsystems, Inc. Mechanism for enabling session information to be shared across multiple processes
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US6735765B1 (en) * 1999-12-07 2004-05-11 Storage Technology Corporation Sharing data between operating systems
GB2364143A (en) * 2000-06-30 2002-01-16 Nokia Corp Resource allocation
US6810470B1 (en) * 2000-08-14 2004-10-26 Ati Technologies, Inc. Memory request interlock
CN1326073C (zh) * 2001-04-02 2007-07-11 佳能株式会社 用于建立计算机文字信息的索引和进行检索的方法和系统
US7266722B2 (en) * 2001-09-21 2007-09-04 Hewlett-Packard Development Company, L.P. System and method for efficient lock recovery
US6748479B2 (en) 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7752281B2 (en) * 2001-11-20 2010-07-06 Broadcom Corporation Bridges performing remote reads and writes as uncacheable coherent operations
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6912602B2 (en) * 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
US7227870B2 (en) * 2001-11-20 2007-06-05 Broadcom Corporation Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams
US7206879B2 (en) * 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
CN1307558C (zh) * 2001-12-29 2007-03-28 中兴通讯股份有限公司 通信系统中分系统间的虚拟内存分配管理方法
US7246119B2 (en) * 2002-03-08 2007-07-17 Kabushiki Kaisha Toshiba Method and implementation of session-based file locking for network applications
US20030204444A1 (en) * 2002-03-29 2003-10-30 Van Luchene Andrew S. Method and apparatus for managing and providing offers
WO2004064001A1 (en) * 2002-03-29 2004-07-29 Walker Digital, Llc Method and apparatus for managing and providing offers
US7841514B2 (en) 2002-03-29 2010-11-30 Walker Digital, Llc Digital advertisement board in communication with point-of-sale terminals
US6965973B2 (en) 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US6993631B2 (en) * 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
CN1300703C (zh) * 2003-11-05 2007-02-14 松下电器产业株式会社 调节电路及其具有它的功能处理电路
JP4742498B2 (ja) * 2004-01-09 2011-08-10 ソニー株式会社 データ通信システム、データ処理装置、そのプログラムおよびその方法
US20050203903A1 (en) * 2004-03-10 2005-09-15 Rajan Rajeev B. System and method for locking and isolation in a storage platform
US20050216611A1 (en) * 2004-03-29 2005-09-29 Martinez Alberto J Method and apparatus to achieve data pointer obfuscation for content protection of streaming media DMA engines
DE102004017050A1 (de) * 2004-04-07 2005-10-27 Robert Bosch Gmbh Datenkonsistenz in Datenverarbeitungsanlagen
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US7823150B2 (en) 2005-01-25 2010-10-26 International Business Machines Corporation Computer-implemented method, system and program product for establishing multiple read-only locks on a shared data object
US7870545B2 (en) * 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
CN100392599C (zh) * 2006-01-10 2008-06-04 杭州东信灵通电子实业公司 通用进程间通信实现方法
CN100454241C (zh) * 2006-02-28 2009-01-21 华为技术有限公司 一种在共享内存中存储c++对象的方法及装置
US20070283319A1 (en) * 2006-04-01 2007-12-06 Mza Associates Corporation Software development framework using component-based architecture
US7840947B2 (en) * 2006-06-09 2010-11-23 Oracle America, Inc. Delayed breakpoints
US8316352B2 (en) * 2006-06-09 2012-11-20 Oracle America, Inc. Watchpoints on transactional variables
US7647454B2 (en) * 2006-06-12 2010-01-12 Hewlett-Packard Development Company, L.P. Transactional shared memory system and method of control
US7861093B2 (en) * 2006-08-30 2010-12-28 International Business Machines Corporation Managing data access via a loop only if changed locking facility
US7723601B2 (en) 2007-03-22 2010-05-25 Qualcomm Incorporated Shared buffer management for processing audio files
US8140497B2 (en) * 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US20100017581A1 (en) * 2008-07-18 2010-01-21 Microsoft Corporation Low overhead atomic memory operations
US20100064280A1 (en) * 2008-09-09 2010-03-11 International Business Machines Corporation Systems and methods for implementing test applications for systems using locks
US20110093745A1 (en) * 2009-10-20 2011-04-21 Aviad Zlotnick Systems and methods for implementing test applications for systems using locks
US8595446B2 (en) * 2009-11-25 2013-11-26 Oracle America, Inc. System and method for performing dynamic mixed mode read validation in a software transactional memory
CN103034649B (zh) * 2011-09-30 2015-07-15 阿里巴巴集团控股有限公司 一种实现数据存储和搜索的方法和系统
CN102426536B (zh) * 2011-10-26 2014-04-09 深圳市亚特尔科技有限公司 一种多任务间数据通信的实现方法及系统
CN103019829A (zh) * 2012-12-31 2013-04-03 哈尔滨工业大学 用签名实现的多核程序内存竞争记录及重演方法
US9286206B2 (en) * 2013-07-30 2016-03-15 Kabushiki Kaisha Toshiba Memory system
US10248420B2 (en) 2017-04-05 2019-04-02 Cavium, Llc Managing lock and unlock operations using active spinning
US10331500B2 (en) * 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
CN108572876B (zh) * 2018-03-07 2020-11-20 北京神州绿盟信息安全科技股份有限公司 一种读写锁的实现方法及装置
CN111240826B (zh) * 2019-12-27 2022-07-08 江苏艾佳家居用品有限公司 适用于3d模型资源的大规模展示的内存管理方法
CN113009876A (zh) * 2021-02-26 2021-06-22 共享智能铸造产业创新中心有限公司 系统集成时的数据确信方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0318935A (ja) * 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
US5721943A (en) * 1993-10-14 1998-02-24 International Business Machines Corporation Negotiable locks for concurrent access of control data by multiple programs
FR2727222B1 (fr) * 1994-11-21 1996-12-27 Cit Alcatel Protocole transactionnel, et systeme pour la mise en oeuvre de ce protocole
US5761659A (en) * 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100365632C (zh) * 2006-04-05 2008-01-30 华为技术有限公司 实现内存数据和数据库数据事务一致性的处理方法

Also Published As

Publication number Publication date
CN1197955A (zh) 1998-11-04
FR2762418B1 (fr) 1999-06-11
FR2762418A1 (fr) 1998-10-23
DE69822541T2 (de) 2005-01-27
EP0872796A1 (fr) 1998-10-21
US6009426A (en) 1999-12-28
ATE262696T1 (de) 2004-04-15
DE69822541D1 (de) 2004-04-29
CA2233407A1 (fr) 1998-10-17
EP0872796B1 (fr) 2004-03-24
JPH10301834A (ja) 1998-11-13

Similar Documents

Publication Publication Date Title
CN1174323C (zh) 管理共享内存的方法
CA2377649C (en) Dynamic cluster database architecture
CN1331817A (zh) 用于并发数据库管理系统表操作的方法和设备
CN1096642C (zh) 高效利用空间的对象加锁的系统和方法
CN100345143C (zh) 数据处理方法和装置
US8301589B2 (en) System and method for assignment of unique identifiers in a distributed environment
CN1308820C (zh) 计算系统中分区之间的动态处理器再分配的装置和方法
CN1112642C (zh) 配置工具中的设计部件复用方法
US5692174A (en) Query parallelism in a shared data DBMS system
CN1208890A (zh) 操作系统的重启动方法
CN1975679A (zh) 用于优化分段资源分配的方法和设备
CN1503942A (zh) 包含准备操作的群集计算机系统中的资源动作
US20050246705A1 (en) Method for dynamically allocating and managing resources in a computerized system having multiple consumers
EP0969380A2 (en) Method for efficient non-virtual main memory management
CN1702622A (zh) 用于校正管理程序工作的分布的系统
DE112010005705T5 (de) Umplanen von Workload in einer hybriden Datenverarbeitungsumgebung
CN1906598A (zh) 信息处理设备、存储区管理方法和计算机程序
US20230038051A1 (en) Data transmission method and apparatus
CN1838078A (zh) 在数字信号处理器内调换码的方法及系统
CN1829961A (zh) 无共享数据库系统中的所有权再分配
CN1096025C (zh) 信息处理装置及多任务控制方法
CN1794285A (zh) 并行批量处理方法
von Bültzingsloewen et al. Design and implementation of KARDAMOM—A set-oriented data flow database machine
CN115934728A (zh) 文件导入方法、装置及电子设备
JP2787107B2 (ja) バッファ制御方式及び装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Applicant after: Alcatel N. V.

Applicant before: Alcatel Arce

Applicant before: Tom Ge Corp

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: ALCATEL ALSTHOM COMPAGNIE GENERALE D ELECTRICITE TO: ALCATEL CORP.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee