管理计算机内的计算机程序的临界区锁的方法技术

技术编号:2847251 阅读:282 留言:0更新日期:2012-04-11 18:40
用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的方法,该方法包括:通过在物理处理器上在时间片内执行的虚拟处理器上执行的线程,确定该线程的临界区的预期锁定时间是否超过该时间片内虚拟处理器的剩余权利;以及如果预期锁定时间超过剩余权利,则推迟获取锁。

【技术实现步骤摘要】

本专利技术的领域是数据处理,或者更具体地说,本专利技术是用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的方法、系统和产品。
技术介绍
线程是多线程计算机上执行的软件单元。即,线程是计算机系统中可执行工作实体。线程可以被看作独立的可执行计算机程序指令流。在这样一台计算机上,软件程序是以被称为“进程”的执行单元方式执行的,该“进程”涉及执行软件程序所需的所有处理器寄存器、代码段与偏移寄存器、数据段与偏移寄存器、堆栈段与偏移寄存器、标志寄存器、指令指针寄存器、程序计数器等等。为了提高效率,进一步利用线程组织“进程”,其中除了一个线程与该进程的所有其他线程共享存储器外,进程的每个线程分别具备执行所需的所有属性,这样可以降低操作系统从线程切换到线程(“上下文切换”)的开销。进程的各线程共享同一个存储空间,而且可以读和写到同一存储地址。此外,在任意两条计算机程序指令之间,正在读存储地址的线程可能被中断,而且不保证处理器在另外一个线程写入同一存储地址之前恢复运行状态。这种状况被称为“竞态状态”。当多个线程可以同时访问共享存储器,而且该线程读和修改存储器内的数据时,可能出现这种竞态状态。防止发生竞态状态的常用方法被称为“相互排斥”或者“互斥(mutex)”。在互斥中,其中共享数据被读或者被修改的代码部分被定义为“临界区(critical section)”,而且执行某种机制,以保证两个线程绝对不会同时处于相同共享数据的临界区中。保证两个线程不同时处于相同共享数据的临界区中的机制在本说明书中被称为“锁(lock)”。锁的例子包括有Unix信标量、C++中的监视级和Java中的同步方法。可以认为请求独占访问共享数据的临界区的线程要请求锁,通常利用系统调用实现请求锁,如果该锁不是立即可用的,则将系统调用将请求线程置于等待状态,直到该锁成为可用的。可以认为已经独占访问共享数据临界区的线程要保持锁。锁受护送效应作用。一次只有一个线程可以占有锁。当多个线程请求访问同一个锁时,护送(convoy)发生。所有请求线程可经历从运行状态切换到等待状态的上下文切换。他们可以离开等待状态,返回就绪状态,竞争占有处理器,再一次请求锁,而且如果该锁不是可用的,则再一次返回等待状态-以便重新开始整个进程。传统的补救方法是最小化计算机程序指令的临界区大小,以便锁持有者仅保持该锁进行相关数据处理所需的最短时间。然而,这不是一个完善的解决方案,在发生护送效应时,它们对整个计算机系统的性能别有害。逻辑分区(“LPAR”)是一组数据结构和业务,它能够在一个计算机中分配计算机资源,以使该计算机的作用如同两个或者更多个独立的计算机。管理器(hypervisor)是系统软件层,它在逻辑分区中的操作系统之下运行,以在物理处理器上调度虚拟处理器。虚拟处理器是一个子系统,它用于对逻辑分区分配处理器时间。物理处理器的共享池(pool)支持对逻辑分区分配部分物理处理器(在时间片内)。在时间片内共享的这部分物理处理器被称为“虚拟处理器”。当线程在该虚拟处理器的时间片上运行时,可以认为该线程运行在虚拟处理器上。在一组虚拟处理器之间,以运行在逻辑分区上的操作系统不可见的方式,子处理器分区时间共享物理处理器。与其中通过在中断禁用模式下运行,线程可仍控制物理处理器的操作系统中的多道作业不同,在子处理器分区中,在其虚拟处理器时间片结束时,管理器预排空该线程,以使物理处理器对不同虚拟处理器可用。因此,在子处理器分区中,如果线程要获取锁(甚至在中断禁用条件下),不能保证在该线程放弃控制物理处理器之前,该锁被释放。由于为了完成执行其临界区,只能在该线程重新获取物理处理器的控制后才能释放锁,所以这通常导致在锁获取与释放之间具有长时间延迟。这种长时间延迟将恶化分区内的锁争用,因为正在竞争该锁的其他虚拟处理器被强制等待,直到持有锁的虚拟处理器再一次获取物理处理器的控制并释放该锁。
技术实现思路
本专利技术所公开的方法、系统和计算机程序产品用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁,它们包括通过在物理处理器上在时间片内执行的虚拟处理器上执行的线程,确定该线程的临界区的预期锁定时间是否超过该时间片内虚拟处理器的剩余权利;以及如果预期锁定时间超过剩余权利,则推迟获取锁。根据更具体说明附图所示的本专利技术典型实施例,本专利技术的上述已经其它目的、特征和优点显而易见,其中同样的参考编号通常表示本专利技术典型实施例中的同样部分。附图说明图1是根据本专利技术实施例的自动计算装置的方框图,该自动计算装置包括用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型计算机。图2是根据本专利技术实施例用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型系统的原理方框图。图3A是根据本专利技术实施例用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型线程状态的状态图。图3B是根据本专利技术实施例用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型虚拟处理器状态的状态图。图4是根据本专利技术实施例用于管理计算机程序的临界区锁的4个线程和2个虚拟处理器的典型执行顺序的时序图。图5是示出用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型方法的流程图。图6是示出用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的又一个典型方法的流程图。图7是示出用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的又一个典型方法的流程图。具体实施例方式下面将从图1开始,参考附图说明根据本专利技术实施例用于管理支持多个(multiplicity)逻辑分区的计算机内的计算机程序的临界区锁的典型方法、系统和产品。根据本专利技术实施例管理支持多个逻辑分区的计算机内的计算机程序临界区锁是在自动计算装置(machinery),即,一台或者多台计算机上实现的。因此,为了进一步说明问题,图1是根据本专利技术实施例包括用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的典型计算机(152)的自动计算装置的方框图。图1所示的计算机(152)包括几个物理处理器(156);以及随机存取存储器(“RAM”)(168),通过系统总线(160)连接到该计算机的物理处理器和其他部件上。在RAM(168)中存储了逻辑分区(104)、应用程序(158)、虚拟处理器(122)、操作系统(154)、逻辑处理器(106)、线程(182)以及管理器(102)。如上所述,逻辑分区(“LPAR”)(104)是一组数据结构和业务,它可用在一个计算机中分布计算机资源,以使该计算机的作用如同两个或者更多个独立的计算机。如同它是单独计算机一样,可以对每个逻辑分区分配其操作所需的所有资源,包括处理器时间、存储器、操作系统等等。应用程序(158)是实现线程执行的用户级数据处理的计算机程序指令。虚拟处理器(122)是执行对逻辑分区处理器时间分配的子系统、数据结构和计算机程序指令。物理处理器的共享池(pool)支持对逻辑分区分配部分物理处理器(在时间片内)。在时间片内共享的这部分物理处理器被称为“虚拟处理器”。当线程在该虚拟处理器的时间片上运行时,可以认为该线程运行在虚拟处理器上。在各逻辑分区之间共享共享处理池保持的物理处理器。在该说明书的例子中,根据具有表示一本文档来自技高网
...

【技术保护点】
一种用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的方法,该方法包括:通过在物理处理器上在时间片内执行的虚拟处理器上执行的线程,确定该线程的临界区的预期锁定时间是否超过该时间片内虚拟处理器的剩余权利;以及如果预期锁 定时间超过剩余权利,则推迟获取锁。

【技术特征摘要】
US 2005-6-6 11/146,4531、一种用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的方法,该方法包括通过在物理处理器上在时间片内执行的虚拟处理器上执行的线程,确定该线程的临界区的预期锁定时间是否超过该时间片内虚拟处理器的剩余权利;以及如果预期锁定时间超过剩余权利,则推迟获取锁。2、根据权利要求1所述的方法,进一步包括通过管理器对该线程提供预期锁定时间。3、根据权利要求2所述的方法,其中提供预期锁定时间进一步包括计算该锁的平均锁定时间。4、根据权利要求2所述的方法,其中提供预期锁定时间进一步包括对在该计算机上执行的所有线程获取的所有锁,计算平均锁定时间。5、根据权利要求1所述的方法,进一步包括通过管理器对该线程提供该时间片内的虚拟处理器的所有权利;通过管理器对该线程识别在该时间片已经使用的部分权利;以及根据虚拟处理器的总权利和已经使用的部分权利,该线程计算该时间片内的虚拟处理器的剩余权利。6、根据权利要求1所述的方法,进一步包括确定是否先前已推迟获取锁;以及如果先前已推迟获取锁,则获取该锁。7、一种用于管理支持多个逻辑分区的计算机内的计算机程序的临界区锁的系统,该系统包括计算机处理器和可操作地与计算机处理器相连的计算机存储器,该计算机...

【专利技术属性】
技术研发人员:安德鲁顿西尤斯M阿卡帕蒂苏亚塔卡什亚普
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1