CN1174323C - 管理共享内存的方法 - Google Patents
管理共享内存的方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, 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)提供一个指定该记录区的指针;或为每个待写变量提供一个新值,将该新值复制到该记录区中,然后释放该保持。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100365632C (zh) * | 2006-04-05 | 2008-01-30 | 华为技术有限公司 | 实现内存数据和数据库数据事务一致性的处理方法 |
Families Citing this family (53)
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)
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 |
-
1997
- 1997-04-17 FR FR9704744A patent/FR2762418B1/fr not_active Expired - Fee Related
- 1997-04-21 US US08/844,635 patent/US6009426A/en not_active Expired - Fee Related
-
1998
- 1998-04-16 DE DE69822541T patent/DE69822541T2/de not_active Expired - Fee Related
- 1998-04-16 CA CA002233407A patent/CA2233407A1/fr not_active Abandoned
- 1998-04-16 AT AT98400941T patent/ATE262696T1/de not_active IP Right Cessation
- 1998-04-16 EP EP98400941A patent/EP0872796B1/fr not_active Expired - Lifetime
- 1998-04-16 CN CNB981069541A patent/CN1174323C/zh not_active Expired - Fee Related
- 1998-04-17 JP JP10108266A patent/JPH10301834A/ja active Pending
Cited By (1)
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 |