维持多个独立进程的高速缓存的一致性的方法和系统的制作方法

文档序号:6567436阅读:167来源:国知局
专利名称:维持多个独立进程的高速缓存的一致性的方法和系统的制作方法
技术领域
本发明通常涉及软件工程,更具体地说,描述了一种方法和系统,
的信息技术环k中用于长期维持可:独立进程访问的高速緩存;储器 中的数据一致性。
背景技术
虽然近年来对计算机及其中央处理单元(CPU,即英语技术文献
中的中央处理单元)的功率的计算实际上已经在增长,但日益增长的
功率中的这种增长。特别是在当它们必须访问在中央存储器中可用的 数据时的情况下,所述中央存储器必须存储大量信息,例如包含用于 空中交通的全球出价的数据库。必须能够从无数旅行社和销售点连续
查阅这些数据,并且基于24-7'在全球通过航班来更新它们。
无论配置如何,用于获得这种结果的计算机网络和IT方案、期望 的性能、特别是对所找寻的信息的短的访问时间总是涉及存储器等级 体系的使用。事实上,即使存储器可能不包含可能被找寻的所有信息, 但所找寻的信息也必须被馈送给所述存储器,中央单元可以充分快速 地访问所述存储器。这种类型的存储器被称为高速緩存存储器或大容 量存储器。高速緩存存储器用于存储系统在给定时间最频繁访问的数 据,因此使得中央单元和计算机处理器的等待情况减少。
在中央单元中,必须被同时执行的不同的独立进程之间必须能够 共享必要受限大小的高速緩存存储器。此外,当它们对公共数据操作 时,多个独立进程应该优选地能够进行该操作,而不必复制这些数据。
因此,可由多个进程访问的高速緩存存储器的管理是一种复杂的 事务。具体地说,必须保持对一些进程共同的数据的一致性。如果所 述一些进程中的一个必须修改所述数据,则极其重要的是,另一进程 能够在数据已经被完全修改和更新之前使用它们。虽然已知的是,可 以通过在多个进程之间交换消息来实现这种处理,但这是一种由于交 换消息所需的时间而导致的对所述数据的访问速度造成严重影响的方 法。
当前所使用的另一方法包括使得进程能够专有地并且临时地获得 对访问共享数据的权限,因此阻塞其它进程的访问,所述其它进程必 须等待。然而, 一旦进程已经获得这样的对访问的专有权限,它自身 还可能必须等待另一进程释放它还必须使用的数据。因此,明显的是, 存在两个或更多进程被交互锁定的情况, 一个进程必须等待其它进程 完成,反之亦然。这些进程必须执行的任务不进行下去,并存在阻塞。
当然,能够具有与进程同样多的高速緩存存储器。因此,在高速 緩存存储器中存在公共数据的副本,这是将要大力避免的,以确保对 可用的存储器空间的更好的使用,并再次提出了存储器中的副本的一 致性的问题。
此外,高速緩存存储器不仅包含由进程自身使用的工作数据,而 且还必须对其进行严格的组织。事实上,高速緩存存储器总是对于较 慢的低成本但非常大的存储器中的所有数据的部分的、高动态的视图, 所述非常大的存储器位于典型具有磁盘組的背板上,能够存储太字节
(1012字节)的数据。在工作数据被传送到共享高速緩存存储器之后,
它们全部潜在地可在给定时间由多个进程来访问。因此,高速緩存存 储器中的所组织的数据必须能够在高速緩存存储器中实际在给定时间 出现的工作数据以及在背板存储器中它们的对应物之间的一致性。然 而,如果在进程正常终止之前中断进程(例如仅因为操作者过早地终 止请求)或如果由于软件的较差的编程而导致不正确地执行进程,则 因此可以出现高速緩存存储器的有組织的数据不完全被更新或被不正 确地更新。包含所述有组织的数据的控制表其后部分被破坏。虽然应
用软件通常被设计为容忍崩溃和错误以防止部分破坏产生重大后果, 但它们在必须长期昼夜不停地操作的系统中的累积会通过减少实际可 以使用的存储器大小,特别在长期范围内使得高速緩存存储器的性能 和效率恶化,这使得可以由必须在给定时间被执行的所有进程共享的 充足的工作数据不再能够响应于从必须对大型数据库(例如包含关于 世界空中交通或对大型宾馆链的预订的信息的数据库)进行访问的计 算机得到的多个请求。
因此,可以被有效使用的高速緩存存储器的大小是操作的关键参 数。必需对其进行优化。具体地说,即使高速緩存存储器已经是满的, 进程也必须总是能够提供新的工作数据以响应于新的客户机请求。这 仅可以通过释放空间并且因此从存储器移除不太可能再被使用的工作 数据或过期或太陈旧的数据来实现。该方案存在一系列缺点,如果基 本任务不再正常地执行,则因为以过期的数据来填充高速緩存存储器, 所以高速緩存存储器很快地变得不可用。此外,基本任务通常不能释 放由尚未完全执行或正常执行的进程所破坏的数据。
然而,在必须昼夜不停地操作并且因此从不重新启动的系统中, 其可靠性必须基于典型地对上述基本任务的单个元素的正确操作,然 而,这是常有的情况。
在提交到美国专利局或USPTO (美国专利商标局)的、2003年 10月16日公开的、题为"Transaction-aware caching for access control metadata"的第2003/0195866号专利申请中已经提出了想要弥补上述 的现有技术的一些弱点的机制,然而,该专利申请没有尝试描述用于 在已经满的高速緩存中释放空间的任何具体机制。因此,在从不重启 的系统中,在特定使用时间之后,这是经常需要的操作,其中,连续 的请求趋向于在高速緩存存储器中不断地累积数据。
因此,本发明的目的通常在于弥补现有技术的弱点,本发明通过 防止进程的任何锁定来改进高速緩存存储器的管理,从而特别在存储 器必须容纳新的数据时释放空间。

发明内容
本发明描述了 一种用于维持可由独立进程访问的高速緩存存储器 的一致性的机制。多个进程可以共享公共数据。多个进程执行同时数 据搜索操作,之后可选地使数据可用于所述进程,移除所述数据或插 入新数据。 一旦已经由独立进程发起搜索、移除和插入操作,就全面 地执行这些操作。当这些操作必须对公共数据进行操作时,相互排斥 地执行这些操作。移除或插入操作均是完全可逆的。在上下文中,本
发明规定用于使数据可用、移除数据或插入数据的操作具有有限或 受限的执行持续时间以防止任意锁定。具体地说,如果需要浏览整个 分区以进行选择,则插入操作包括当高速緩存存储器的分区是满的时 释放输入的阶段,然而,如果到达最大浏览时间,则所述插入操作可 以被中断。在此情况下,在已经浏览的输入中释放最合适的输入。穷 尽地(exhaustively)浏览分区的输入,这是通过对每次释放之后分区 的最新查阅的地址进行存储实现的。


本发明的目的、目标以及特点和优点将从由以下附图所示的优选 实施例的详细描述中变得更加清楚,其中 图l描述实现本发明的环境。
图2示出由独立进程对CLE (高速緩存逻辑实体)的共享。
图3描述独立进程访问几个CLE的情况。
图4描述CLE的数据表的结构。
图5描述与数据表关联的控制表。
图6给出控制表的分区的内容的示例。
图7描述分区表的结构。
图8描述散列表的结构和寻址。
图9描述搜索CLE中的数据的方法。
图IO描述用于使数据在CLE中可用、移除、替换和插入数据的 方法。
图ll描述用于释放完全数据表中的输入的方法。
图12描述执行用于维持所述表的一致性的进程的各阶段。
具体实施例方式
如图1中示意性所示,本发明涉及一种系统(100),其包括一个 或多个计算机中央单元(CU ) (110 ),其共享快速访问存储装置(120 )。 然而,在大小受限的情况下,共享存储器(SM)自身可以访问一个或 多个大容量存储器(MM),所述MM位于背板中,并且通常包括能 够存储大量数据的磁盘组(130)。具体地说,例如是必须由全世界的 旅行社查阅并且收集关于世界空中交通或国际宾馆链的预约状态的信 息的数据库。中央单元在操作系统的控制下进行操作。例如,因为 UNIX不仅使很多用户(140)能够被同时处理,而且还能够生成同时 独立操作的大量进程任务,所以UNIX是频繁使用的操作系统。在包 括控制机制(125)的共享系统中,直接地或通过在所述操作系统中集 成的附加软件层,操作系统因此能够定义一个或多个高速緩存逻辑实 体(CLE)。如已经在现有技术的段落中所讨论的那样,这些高速緩 存存储器(150)的目的在于能够将由中央单元(110)发起的独立 进程在给定时间必须能够对其操作的数据从大容量存储器(130 )提供 给快速访问存储器,即共享存储器(120)。
图2更详细地描述本发明的新的方面,其使得独立进程(200)(在 该示例中标号1至5)能够在仅这些进程中的一个进程必须找到大容 量存储器(230)中的数据并执行格式化和计算(220)之后共享公共 数据实体(210),在该示例中,所述一个进程在该示例中由数字3来 表示,其中,所述格式化和计算是对可能必须在给定时间操作这些数 据的所有进程进行高效使用所需要的。在该示例中,由于仅通过由数 字3所表示的进程来执行格式化计算,因此,这个过程实际上通过将 共享存储器的效率增加到相同程度并大量解除中央单元来减少包含在
共享存储器中的高速緩存存储器中的存储需求。
图3期望示出在相同CLE的进程中是否可以有利地共享数据。在
一些CLE共存(300)于共享存储器中的情况下,本发明还确保进程 (310)不必对所有CLE进行访问。因此,在这个特定示例中,进程 l访问CLEA和C,而进程2访问CLEB和C。因此,仅出现在CLE C中的数据对于进程1和2是公共的,可以将该情况看作是有用的, 例如用于防止进程2改变仅授权进程1修改的数据,即其后将优选地 被包含在CLE A中的数据。
下面的附图描述了由CLE使用以在给定时间找到并更新被包含 在高速緩存存储器中的数据的不同的表。图4描述数据表的组织。如 名称所暗示的那样,数据表(44)主要用于存储用户数据以及以下描 述的与其关联的唯 一 代码或识别代码以及参数。可以在系统的配置期
间设置可出现在CLE中的数据表的最大数量。例如,可以授权创建一 百个数据表。此外,这些表中的每一个可以包括可变数量的输入(410 ), 在该示例中是四个,从而这些表可以更好地适用于它们必须在本发明 的特定应用中要容纳的用户数据,可以在配置时间指定所述输入自身 的大小。每一数据表输入的格式包括以下字段
-代码大小(420),
-用户数据大小(430),
-识别数据的唯一代码(440)。典型地,该代码是几十个字节的 字段,包括足够的信息以识别关联数据的类型,
-用户数据自身(450)。例如,对于给定目的地和给定时段,其 可以是航空公司收取的价格。
图5描述控制表,所述控制表用于跟踪在CLE中在给定时间出现 的用户数据。在控制表(500)和数据表(510, 520)的输入之间存在 ——对应。因此,控制表中的输入的数量与在配置时间指定的数据表 的最大数目乘以这些表中的每一个中的输入的数量是相同的。在图5 中的简单示例中,仅示出两个数据表,第一数据表(510)包括四个输 入,第二数据表(520 )包括五个输入,因此,关联的控制表(500 ) 包括9个激活的输入。
应注意,这些表中的输入0总是未使用的,从而每个字段O具有
特定意义指示缺少对输入的参考。 控制表中的每一输入包括以下信息 -与数据关联的散列值。 -插入数据的日期。 -数据到期的日期。
-被存储在数据表的对应的输入的数据的大小。 -在控制表和数据表的输入(空闲或已使用)的链表中的下一输入。
-如果不存在其它链式输入,则前述链式输入或0值。 -参照图8所描述的散列表的对应的输入,或在空闲输入的链表 的情况下的值0。
-与控制表的所述输入关联的数据表的数量。 -数据表中的对应输入。
-使用计量(用于确定最近使用了哪些输入)。
-各种参数,具体地说,包括二进制指示符,用于指示对应的输
入是空闲的并且可以被使用。
图6给出与图5中的数据表l对应的控制表的分区可以包含的内 容的示例。为了清楚,上述列表中的参数并不都在图6中的表中出现。
在该示例中,输入2和4空闲(600)。它们是双链式的,从而可 以在两个方向浏览列表,并且它们可以被用于存储用户数据。因此, 空闲输入2参考网络空闲输入4(610)。后者参考前述空闲输入2( 620)。
所使用的输入1和3在此属于相同的链表,所述链表用于解决由 于不同代码的相同的散列化而导致的冲突。它们参考散列表(630)的 特定输入,即输入123。以下在图8中详细讨论散列表和标识代码的 散列化。类似于空闲输入的列表,用于解决冲突的列表也是双链式的 输入1参考下一个所使用的输入(640) 3,输入3其自身参考列表中 的前面的输入1 (650)。
如上所述,"下一输入"和"先前输入"列中的零值不参考任何 输入,并作为链表的开始或结束。
图7描迷分区表(700)。如其名称所暗示的那样,分区表用于存 储用于确定如何对控制表和数据表进行组织和分区所需的信息。因此, 存在与数据表同样多的分区表中的输入(710),即,在前面附图中所 示的示例中是两个。参考对应的数据表的分区表中的每一输入(第一 输入参考l号表,等等)包括以下参数,然而,为了清楚,在图7中 的分区表的示图中将不完全出现所述参数
-控制表中用于对应分区的第一输入(720 )的索引
-用于最后输入的索引(730)
-该分区中的输入的数量
-该分区中的输入的大小
-空闲输入的数量
一空闲输入的链表中的第一输入(740) -分区锁定指示符
-控制表中用于开始对可能被移除的输入的下一搜索的索引。 图8描述散列表(800),所述散列表是用于CLE中的任意搜索 的开始点。
散列表中的开始点(810 )是由于对数据标识代码散列化而产生的 值,所述数据标识代码是与数据关联的唯一代码,在前面附图中对其 进行了描述。由于已经提及的原因,输入O必须保持未被使用,散列 函数必须返回在1和散列表寻址上限之间的值。可以在系统配置期间 设置散列表。本发明不假设使用特定散列函数。为了尝试获得最小冲 突,任何散列函数的最终目标可能取决于代码的结构,将可能选择多 个散列函数和方法中的一个或其它,所述散列函数和方法已经在关于 该主题的大量技术文献中被提出。然而,必须选择或采用散列函数, 从而0值总是被排除。
在图8所示的本发明的优选实施例中,唯一标识代码(840)(典 型地需要50至100字节)经历第一散列化(850),以获得64比特字 段中的值,例如,以下被称为H[intl。然而,由于散列表实际上不能 包括2"个输入,因此执行H[int的第二散列化(860),以获得合理
大小的表(80)。例如,你可能期望将64比特的字段减少到18比特 的字段,即大约256,000个输入(218)。进行双重散列化的优点在于, 能够获得合理大小的散列表,同时允许可以由处理器快速处理的比特 字段(64比特)中的比较,以移除对散列表中的冲突事件的疑问。事 实上,例如,即使在额外减少到18比特之后冲突将会更多,对于第一 散列函数的仔细选择也允许最接近于零的冲突概率。因此将无需多于 一次地执行对包括50至100字节的代码的完全比较,如上结合图9所 讨论的那样。
再次参考图6,因此,包括上述示例中的64比特的中间散列值 H[int]出现在控制表(660)中,并将主要用于对所述比较进行加速。
与数据H[CLEF关联的代码的最终散列值(810)用于查阅散列 表。对应的输入包含以下信息
-输入的锁定指示符(V),用于仅使得一次一个进程能够修改 链表(820 ),以散列表中的所述输入开始。稍后在说明书中讨论本发 明的这个方面。
-在控制表中链表的第一输入,用于解决由于代码散列化而导致 的可能的冲突。当然,如果数据代码散列化没有对散列表的特定输入 施加冲突,则对应的链表将被减少到单个元素。
散列表(830 )中的零值不参考控制表中的任意输入。没有数据代 码给出用于该输入的散列值。
图9描述访问(900) CLE中的数据的方法。对CLE中的数据的 搜索开始于与所找寻的数据关联的代码的散列化(910)。所获得的值 用于对先前描述的散列表进行寻址(920)。如果对应的输入是零,则 可以立即宣告所述搜索不成功(932)。该结果被立即告知(940 )给 搜索数据的进程,以通知该进程所述数据没有出现在所询问的CLE 中。
如果被寻址的输入不是零(934),则必须在散列表所参考的输入 处读取CLE的控制表(950 )。该输入包含可能包括所找寻的信息的 输入的链表的第一元素,可能是仅有的元素。
然而,如果由另一进程锁定对应的输入(945),则所述对控制表 的查阅将不立即产生。其后,将需要等待所述另一进程来对输入解锁 以继续。如果进行的进程可能涉及表的修改(移除或插入),则进程 中的进程依次锁定散列表中的输入(947)。
执行散列代码值的第一比较(960),即将所找寻的代码散列化的 值与从控制表中提取的值进行比较。如图8所讨论的那样,在本发明 的优选实施例中,对中间散列值H[int]进行所述比较。
如果所述散列值不同(974),则如果链表包含多于一个的元素, 则所述搜索必须通过浏览所述链表而继续。如果仅有一个元素,或如 果已经到达列表(982 )中的最后元素,则必须宣告所述搜索不成功 (940)。
然而,如果所述散列值相同(972 ),则可能已经找到所找寻的代 码。然而,无论那个散列函数能够返回两个相同的散列值,从不同的 代码开始,都必须对该进程进行验证。为了消除任意疑问,其后必须 对代码进行比较(990)。在本发明的优选实施例中,首先对所找寻的 数据的大小与存储在数据表中(在与控制表的输入对应的输入处)的 数据大小进行比较,以加速所述比较。如果代码具有不同大小,则它 们不会相同,如果链表包含多于一个的元素,则搜索必须如前面那样 通过浏览所述链表而继续(994 )。如果链表不包含多于一个的元素, 则必须宣告所述搜索不成功(940)。
如果代码大小相同,则最终执行这些代码的完全比较。如果代码 高效地相同(992),则搜索成功。所找寻的数据出现在数据表中。如 果代码不同,则所述搜索必须如前面那样通过浏览链表而继续。
应注意,当实际上已经找到数据时,在多数情况下,将需要代码 的单个完全比较(从50到100字节)。必须执行多于一个的代码完全 比较的概率取决于用于对冲突进行最小化的第一散列函数的有效性, 如图8所描述的那样。如已经讨论的那样,该概率实际上是零。
图IO描述了在CLE中的数据搜索之后的不同动作。
在所有情况下,如果搜索不成功,则将该结果通知给发起搜索的
进程(1000 )。
如果搜索成功,并且为了查阅数据而已经由进程发起所述搜索, 则从数据表中提取数据,并将所述数据提供给发起所述搜索的进程
(1010)。
如果搜索成功,并且为了移除(1020) CLE中对应的数据而已经 由进程发起所述搜索,则必须修改控制表(1025)。必须从用于分区 的输入的链表中移除该分区的对应的输入,并将其添加到空闲输入的 列表。通过重建而从所使用的链表中明显地移除输入,根据需要,链 表修改"下一个"和"前一个"输入字段,如图6所示。
如果在CLE中插入新数据的进程(1030 )主要取决于代码是否已 经出现在其中,则所述插入总是需要首先计算能够插入该数据所需的 大小,以确定可以使用来自数据表的哪些空闲输入。
如果搜索不成功,则所述插入其后将取决于获知是否存在保持为 容纳新的数据的足够大小的至少一个空闲空间。如果情况如此(1042), 则选择空闲输入(1060 ),并执行新数据的插入(1070 )。该进程包 括修改和创建控制表中的链表。
如果不存在足够大小的空闲空间(1044 ),则需要释放CLE中的 空间(1050 ),以进行所述插入(1070)。图11中更详细地描述释放 空间的方法。
如果搜索成功,则所找寻的代码已经出现,并且需要修改被包含 在数据表中的数据。其后,该进程需要获知是否存在充足的空间来存 储所述输入中的数据。如果答案为"是,,(1046),则可以立即进行 所述插入(1070)。然而,如果大小不适合(1048),则如前面那样 将需要释放足够大小的输入(1050)。被看作不足以被再次使用的大 小的输入还在先前已经被释放。该阶段等同于前面所描述的包括从 CLE中移除数据的阶段(1020)。
最终,关于图10,应注意,在涉及表的修改的操作(即移除操作 (1025 )或插入操作(1070 ))的结束,因为操作已经结束,所以必 须对散列表的对应的输入进行解锁。
图11更具体地描述图10的阶段(1050),该阶段包括当不存在 用于容纳将被插入的数据的空闲空间时搜索将被释放的最佳输入。使 用控制表(1100)的分区的示例来描述该方法,所述控制表包括全部 被使用的8个充足大小的输入以容纳新的数据。为了清楚,仅陈述用 于理解插入机制所需的控制表中的字段。
在该示例中,参考1号数据表(1110 )和输入0-7 (1120 )的分区 包括3个链表(1130),分别以地址1、 4和5以及3、 3和2输入开 始。已经描述了被散列表寻址的链表自身的开始。
为了释放输入,插入算法将使用以下的在控制表中出现的信息集 合中的一个或另一个或两者。
-与输入关联的数据的有效性将期满的时间(小时/日期) (1140)。必须对该时间和当前时间进行比较,以通过浏览所有分区 输入确定多个输入中的一个是否已经期满并且是否可以对其进行移 除。实际上,如所示的那样,该时间采用当数据有效性时间期满时简 单计数器必须到达的值的形式。
-输入的有效使用(1150),使其能够被确定哪个输入尚未被使 用达到最长时间(这些主题在英文才支术文献中是"least recently used"或"LRU",)。在图11的示例中,"use"字段的最大值指 示仍旧保留未被使用达到最长时间的输入,即控制表中的地址7的输 入(1155)。因此,该输入有可能被替换。
取决于本发明的使用类型,可以不同地设置用于选择移除一个输 入而不是另一输入的准则。这些参数的正常使用包括首先,确定是 否存在数据已经期满的输入。存在满足该准则的至少一个输入,则例 如当浏览所有输入(1160)时,选择所发现的第一输入。如果没有输 入具有期满数据,则能够移除保留未被使用达到最长时间的输入 (1155)。然而,为了避免太快地移除数据,必须建立阈值以考虑这 个最后的参数。其后可能发生的是在初始时段内不满足用于移除输 入的准则,在此情况下,算法必须提供最少约束后退策略,例如使得 期满时间尽可能接近于当前时间的输入能够被选择的策略。
应注意,如果本发明没有假定使用这些参数来释放输入的特定方 法,则将暗含地假设将总是释放输入以在高速緩存中容纳新数据。
图11值的示例假定由于当前时间具有值16,因此,因为用于控 制表的输入2的数据在时间12期满,所以可以移除该输入,当前时间 超过期满时间(1145)。由于输入2形成链表的一部分,因此列表必 须被修改(1134),并且必须插入(1132)仅包括一个元素的新的输 入。因此,新的分区状态如下部的表(1105)所示。
在该示例中,暗含地假设新的输入还与散列表中的新的输入对应, 因此不存在冲突。当然,应理解,新的输入可以与已经被使用的散列 表对应。在此情况下,应将其添加到对应的链表,而不是形成仅包括 用于该时间的一个元素的附加列表。链表的处理实际上对于本领域技 术人员是已知的,因此下面不对其进行描述。
如已经讨论的那样,在描述的进程中,进程是空闲的,以同时使 用CLE。仅有两个限制用于防止进程使用另一进程不完全修改的数 据。
-如图8中已经示出的那样,散列表中的每一输入包括锁定指示 符,用于防止两个进程尝试同时修改CLE的输入。如图9中的阶段
(945)中更详细地示出的那样,如杲已经从该输入执行了必须修改数 据表的进程,则阻塞访问。然而,可以存在与散列表中的不同输入同 样多的对CLE的同时访问。仅对于涉及修改表的操作,来自相同散列 值的多个访问是不可能的,这是因为它们将导致必须对相同链表操作。 -还存在图7中描述的分区表的输入中的锁定指示符。该锁定的 目的在于保护对相同分区中操作的独立进程将修改的空闲输入的链表 的更新。具体地当释放空间时(即在图10中描述的阶段(1045 )、
(1050)或(1025))锁定分区表的输入,以及在与散列表相同的条 件下解锁。
因此在修改过程中,在另一个进程可以重新使用输入之前,总是 穷尽地执行由涉及修改数据表的进程所发起的操作。必须对控制表的 共同输入操作的进程在它们的执行期间彼此相互排斥。 如图ll所示,还应注意,插入算法假定在完全控制表中可以必须 释放输入,其后必须浏览该表以选择最合适的输入。为了防止进程锁 定输入达到太长时间,可以例如通过指定最大数量的控制表的连续读
取来限制本发明中的该浏览进程。这是由于图7中所描述的分区表还 包括用于指定每当该机制被激励时必须恢复对输入的搜索的点的参 数。这是为了防止控制表总是从相同点(例如第一输入)被浏览。最 后,该操作使得所有输入被浏览,并且允许替换所有输入中的每一个。
由于进程是具有有限持续时间的,或是受限的,直到考虑请求通 过浏览控制表来释放输入,因此不可能产生持久的锁定。
图12解释在控制CLE的表的执行进程中必须正常改变(1200) 控制CLE的表的进程的情况。
这主要是图10中描述的插入新数据的操作的情况,其需要创建或 修改链表。
必须修改CLE的表并且没有完成的进程例如通过发布将不再被 正常浏览的、用于锁定数据表的关联输入的链表,而不会使得表停留 在不一致的状态。本发明规定潜在危险的进程在它们被执行之前必 须保存表的上下文(1210),即,如果它们被不完全地执行或如果在 执行进程中检测到异常,则它们必须存储能够恢复表是先前状态所需 的所有信息。
每一进程具有唯一标识符(ID),并使用专用工作存储器区域, 在所述专用工作存储器区域中,该信息在其整个执行进程中被存储。 例如,如果在散列表中创建锁定,则连同对应的散列表的输入的参考 一起注册进程的标识符。相似地,还注册将由进程修改的链表的链接。 如果进程遇到问题(1232 ),则在恢复先前状态时调用与进程关联的 函数(1240)。在上述示例中,释放对散列表的锁定,并恢复链表的 链接。在其执行期间(1220 ),每一进程不仅建立还用于测量高速緩 存存储器的效率的统计,而且还建立用于确定是否已经正常完成进程 的完成状态(1234)。
表的上下文的保存和恢复以及进程的完成状态的建立不需要对于
本发明特殊的机制。可以使用用于实现这样的机制的对软件工程专家 公知的所有方法,因此,不进一步对其进行描述。
权利要求
1、一种用于保持能由多个独立进程(20)访问的至少一个高速缓存存储器(150)的一致性的方法,所述多个独立进程(20)能够共享公共数据(210),所述多个进程执行对于所述数据的同时搜索操作(900),其后可选地提供(1010)所述数据、移除(1020)所述数据或插入(1030)所述数据,一旦所述搜索、移除和插入操作由所述多个独立进程发起,就穷尽地执行所述搜索、移除和插入操作,当对所述公共数据进行操作时,所述搜索、移除和插入操作彼此相互排斥,以及所述搜索、移除和插入操作均完全可逆,在所述方法中,所述搜索操作具有有限或受限的执行持续时间,所述搜索操作之后可选地进行所述用于提供所述数据、移除所述数据或插入所述数据的操作中的一个。
2、 如权利要求1所述的方法,其中,所述插入操作包括以下阶段 如果控制表的分区是满的,则释放(1050)所述控制表的所述分区中 的输入,所述方法包括浏览(1160)所述分区,以进行选择,如果 到达最大浏览时间,则能够中断所述浏览;从所浏览的输入中选择最 适合的输入(1145);释放所述输入(1050 )。
3、 如权利要求2所述的方法,其中,所述选择阶段包括无条件 地选择充足大小的所浏览的输入中的最后输入,以容纳新的数据。
4、 如权利要求2所述的方法,其中,所述浏览阶段(1160)的特 征在于穷尽地浏览所述分区的所有输入。
5、 如权利要求4所述的方法,其中,通过对每次释放之后查阅的 最后地址进行存储(700)来获得所述浏览的穷尽性。
6、 一种用于使多个中央处理单元(110)能用于处理存储在大容 量存储器(130 )中的数据的系统,其具体是一种高速緩存存储器(15 ), 所述系统包括用于实现前述权利要求中的任意一项中所描述的方法的 装置。
7、 一种可以由计算机读取的介质,包含可由所述计算机执行的程 序的指令,所述程序实现如权利要求1至5中的任何一个所述的方法。
全文摘要
本发明涉及保持能由多个独立进程访问的高速缓存存储器的一致性的方法和系统。进程能共享公共数据。进程执行同时数据搜索操作,其后可选地提供数据给进程、移除数据或插入新数据。一旦由独立进程发起,就全面执行搜索、移除和插入操作。当操作公共数据时,搜索、移除和插入操作彼此排斥地执行。移除和插入操作均完全可逆。在此情况下,提供、移除或插入数据的操作有受限的执行持续时间以防止锁定。具体地,若到达最大浏览时间,则可能中断插入操作,插入操作包括若要浏览整个分区以进行选择,则当高速缓存存储器的分区满时释放输入。在此情况下,释放最适当的所浏览的输入。穷尽地浏览分区的输入是通过存储每一释放之后查阅的最后地址来实现的。
文档编号G06F12/08GK101185068SQ200680016430
公开日2008年5月21日 申请日期2006年3月8日 优先权日2005年3月16日
发明者克洛迪娜·雷诺, 吕克·伊斯纳尔迪, 吕迪·达尼埃罗, 弗雷德里克·罗斯, 韦恩·鲁本施泰因 申请人:阿玛得斯两合公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1