用于管理锁的系统和方法技术方案

技术编号:2826823 阅读:192 留言:0更新日期:2012-04-11 18:40
在存在对锁的第一共享持有的条件下管理锁。存在对锁的第一独占持有的第一未决请求;对第一独占持有的第一未决请求在第一共享持有被授权之后作出。存在对锁的第二独占持有的第二未决请求;对第二独占持有的第二未决请求在对第一独占持有的第一未决请求之后作出。存在对第二共享持有的第三未决请求;对第二共享持有的第三未决请求在对第二独占持有的第二未决请求之后作出。第一程序指令响应于第一共享持有被释放而授权对独占持有的未决请求之一。第二程序指令响应于独占持有的释放而授权对第二共享持有的第三未决请求,该独占持有先前响应于对独占持有的一个请求而被授权。第三程序指令响应于第二共享持有被释放而授权对独占持有的请求中的另一个。

【技术实现步骤摘要】

本专利技术 一般涉及计算机系统,并且特别涉及在计算机系统中管理可用 于共享的和独占的所有权的锁。
技术介绍
已知要提供锁以使得计算机程序或程序函数能够访问每个资源,该锁 允许对例如数据结构、工作队列、设备、适配器、文件、数据库和目录的 计算机资源的独占的和共享的持有。例如,计算机程序(在单一处理器或 多处理器环境中执行)可以获得对文件的锁的独占持有以更新该文件。独 占持有阻止任何其它程序在其正被更新时访问该文件,甚至是读取该文件。 这阻止了其它程序访问该文件中的陈旧或不一致数据。然而,如果一个或 多个程序只想读取文件(该文件当前未被独占地锁上),则其可以全部同 时获得对该锁的共享持有,以及同时读取(而非更新)该文件,因为这些程序中没有任何一个将改变数据。 一些锁管理操作可以由内联(inline )扩 展以生成代码的宏来执行。这种宏可以处理最通常的情况。其它锁管理操 作可以由程序子程序来执行,其中,宏将剩余情况下的处理委托给该程序 子程序。由此避免了通常情况下的子程序链接的开销。在一些情况下,程序或程序函数中的执行线程通过循环或旋转而 等待直到其请求的锁变得可用并且被授权。在这种情况下,锁被认为是旋 转锁,,。在其它情况下,线程请求锁并且被推迟直到其被授权。在此期间, 相同或其它程序或程序函数的其它线程可以在处理器上执行。典型地,当 执行不同线程的单个计算机中存在多个处理器使用旋转锁,并且资源在被 锁^床护的同时在线程的非可先占部分中4皮访问。例如,计算机中可以存在多个应用、单个操作系统和多个处理器。每 个处理器拥有其自己的分配器函数和调度器函数,以及共享存储器中存在 公共工作队列。在每个处理器上执行的分配器或调度器程序函数可能需要 锁以访问公共工作队列。典型地,这种锁是旋转锁,并且分配器或调度器 程序函数旋转以等待锁。在最简单的实现中,旋转锁不必以它们被请求的 顺序而被授权。作为替代,它们是由首先碰巧发现该锁处于可用状态的任 一处理器而获得的。然而,当存在在同一处理器上执行的多个不同程序(以 时间共享的方式)时,每个程序通常请求推迟类型的锁。通常,对推迟类有技术中已知的锁管理器释放功能通常从队列前端移除单个独占请求或一 串连续的共享请求,以及当被其当前持有者释放时将锁授权给那些请求者。 当存在对于对锁的共享持有的多个有序/交^l晉请求并且只要锁状态允 许则对于共享持有的请求继续被授权时,已知类型的锁管理器出现问题。 在此情况下,只要存在至少一个还未被释放的未决的共享持有,对于共享 锁的请求就将继续被授权。在此期间,对于独占持有的请求将被延迟。例如,对于共享持有的第一请求在时刻0出现,以及该请求者持有该锁l 秒钟。对于对同一锁的共享持有的第二请求在时刻0.9秒出现并且被授 权,以及该请求者持有该锁l秒钟,即直到时刻1.9秒。对于对同一锁 的共享持有的第三请求在时刻1.7,,出现并且被授权,以及该请求者持有 该锁1.5秒钟,即直到时刻3.2秒。对于对同一锁的共享持有的第四请 求在时刻3.0秒出现并且被授权,以及该请求者持有该锁1秒钟,即直 到时刻4.0秒。在这种情况下,在时刻0.5秒作出的对于对同一锁的 独占持有的请求将不被授权,直到一串重叠的共享持有被全部释放并且在 此期间不存在对于共享持有的其它请求。这延长了锁对于独占持有不可用 的时间。这个问题称为活锁(livelock),,,并且可以甚至当对于独占持 有的请求在对于对同一锁的共享持有的请求被接收(以及被授权)之前被接收到时饿死,,对于独占持有的请求。在前述实例中,在时刻0.5秒 作出的对于独占持有的请求将不会被授权至少直到时刻4.0秒。在过去,活锁问题已通过严格按到达时间排序锁请求并且先入先出地 授权它们而得到解决。然而,在虛拟化环境中,这将导致低效率,因为下 一个被授权给锁的处理器当该锁变得可用时不可以被羞础管理程序分配, 而其它处理器可以。这将导致所述已分配请求者在如果锁纟皮授权则其可以 立即〗吏用该锁时继续旋转。严格按到达时间排序锁请求的第二个问题是,如果独占和共享请求被 交错,则将对于锁的共享持有的请求捆绑到一起时是低效的。作为实例,假设锁未被持有并且对于该锁的独占持有的请求在时刻0秒被作出并且 被授权。同样假设所有锁持有者将持有该锁1秒钟。现在假设,在时刻1.0之前存在共享请求,其后是独占请求,其后是共享请求,其后是独占请求。在该实例中,严格排序的锁管理器在时刻1.0处理初始独占请求的释放 并且授权持续1秒的共享持有。在时刻2.0,共享持有被释放并且独占 持有被授权。在时刻3.0,独占持有被释放并且另一共享请求被授权。 在时刻4.0,共享持有被释放并且独占请求被授权。以及最后,在时刻 5.0,独占持有被释放。然而,如果在时刻1.0两个未决的共享请求 被捆绑并且一起被授权,则接下来的独占请求仍然在时刻2.0被授权, 但是第三独占请求将更早即在时刻3.0被授权,并且在时刻4.0释放 独占持有,其提前一秒结束。因此,仅当共享请求在其间没有独占请求的 情况下一个接一个到达时,严格排序的锁管理器才可以受益于捆绑共享请 求。当存在后随有对于该锁的共享持有的多个重叠请求的对于锁的独占持 有的多个连续请求时,已知类型的锁管理器出现另一问题。在这种情况下, 共享持有的多个请求者全部必须等待在前的对于独占持有的请求中的每一个都被满足。换句话说,可以至少部分上以重叠方式被满足的共享持有的 许多请求者必须等待每个仅满足单个请求者的对于独占持有的每个请求。以下锁授权算法也是已知的。根据该算法,对于对锁的独占持有的未 决请求优先于对于对同一锁的共享持有的任何未决请求。当独占请求很少 时,该算法是最优的,但当独占请求较多时会导致共享请求的长久等待。因此,本专利技术的目的是减少请求者的平均等待时间,特别是当存在共 享请求和独占请求的混合时。
技术实现思路
本专利技术在于一种用于在其中存在对锁的第一共享持有的条件下管理锁 的计算机系统、方法和程序。存在对于对锁的第一独占持有的第一未决请求;对于所述第一独占持有的所述第一未决请求是在该第一共享持有被授 权之后被作出的。存在对于对锁的笫二独占持有的第二未决请求;对于所述第二独占持有的所述第二未决请求是在对于该第 一独占持有的所述第一未决请求之后被作出的。存在对于笫二共享持有的第三未决请求;对于所 述第二共享持有的所述第三未决请求是在对于该第二独占持有的所述第二 未决请求之后被作出的。第 一程序指令响应于所述第一共享持有被^^t而 授权对于独占持有的所述未决请求中的一个。第二程序指令响应于对独占 持有的释》文而授权对于所述笫二共享持有的所述第三未决请求,其中,所 述独占持有先前响应于对于独占持有的一个请求而^L授权。笫三程序指令 响应于所述第二共享持有被释放而授权对于独占持有的请求中的另 一个。根据本专利技术的特征,存在对于对锁的第三共享持有的第四请求;对于 所述第三共享持有的所述笫四请求是在对于所述第二共享持有的所迷第三 请求之后以及在独占持有的释放之前被作出的,其中,所述独占持有先前 响应于对独占持有的一个请求而被授权。所述笫二程序指令授权对所述第 三共享持有的第四请求以与所述第二共享持有基本上同时地持有。根据本专利技术的另一特征,本文档来自技高网
...

【技术保护点】
一种用于在一些条件下管理锁的计算机系统,所述条件包括:存在对锁的第一共享持有、对于对所述锁的第一独占持有的第一未决请求,对于所述第一独占持有的所述第一未决请求是在所述第一共享持有被授权之后被作出的,存在对于对所述锁的第二独占持有的第二未决请求,对于所述第二独占持有的所述第二未决请求是在对于所述第一独占持有的所述第一未决请求之后被作出的,存在对于第二共享持有的第三未决请求,对于所述第二共享持有的所述第三未决请求是在对于所述第二独占持有的所述第二未决请求之后被作出的,其中,所述计算机系统包括:    用于响应于所述第一共享持有被释放而授权对于独占持有的所述未决请求之一的装置;    用于响应于所述独占持有的释放而授权对于所述第二共享持有的所述第三未决请求的装置,其中所述独占持有是先前响应于对于独占持有的所述一个请求而被授权的;以及    用于响应于所述第二共享持有被释放而授权对于独占持有的所述请求中的另一个的装置。

【技术特征摘要】
US 2007-1-30 11/668,5741.一种用于在一些条件下管理锁的计算机系统,所述条件包括存在对锁的第一共享持有、对于对所述锁的第一独占持有的第一未决请求,对于所述第一独占持有的所述第一未决请求是在所述第一共享持有被授权之后被作出的,存在对于对所述锁的第二独占持有的第二未决请求,对于所述第二独占持有的所述第二未决请求是在对于所述第一独占持有的所述第一未决请求之后被作出的,存在对于第二共享持有的第三未决请求,对于所述第二共享持有的所述第三未决请求是在对于所述第二独占持有的所述第二未决请求之后被作出的,其中,所述计算机系统包括用于响应于所述第一共享持有被释放而授权对于独占持有的所述未决请求之一的装置;用于响应于所述独占持有的释放而授权对于所述第二共享持有的所述第三未决请求的装置,其中所述独占持有是先前响应于对于独占持有的所述一个请求而被授权的;以及用于响应于所述第二共享持有被释放而授权对于独占持有的所述请求中的另一个的装置。2. 根据权利要求1的计算机系统,其中,存在对于对所述锁 的第三共享持有的第四请求,对于所述第三共享持有的所述第四 请求是在对于所述第二共享持有的所述第三请求之后以及在所述 独占持有的释放之前被作出的,其中所述独占持有是先前响应于 对于独占持有的所述一个请求而被授权的;并且所述计算机系统还包括用于授权对于所迷第三共享持有的所述第四请求以与所述 第二共享持有基本上同时地持有的装置。3. 根据权利要求1的计算机系统,其中,存在对于对所述锁 的第三共享持有的第四请求,对于所述笫三共享持有的所述第四 请求是在对于所述第二共享持有的所述第三请求之后以及在所述独占持有的释放之后被作出的,其中所述独占持有是先前响应于对于独占持有的所述一个请求而被授权的;并且所述计算机系统 还包括用于在所...

【专利技术属性】
技术研发人员:KS亚当斯MJ洛朗克DL奥西塞克
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1