用于自主自适应互斥体的方法和系统技术方案

技术编号:2864467 阅读:219 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种在数据处理系统中管理互斥体的方法。对于每个互斥体,维持一个平均获取成本,该平均获取成本指示尝试获取互斥体的线程造成的计算资源的平均消耗。如果线程尝试获取已锁定的互斥体,则线程根据限制条件和此时用于互斥体的平均获取成本,进入自旋状态或者休眠状态。维持特定线程的当前获取成本值,该当前获取成本值代表线程在最初尝试获取互斥体之后和获取互斥体之前的计算资源消耗。当线程获取互斥体时,特定线程当前获取成本被并入平均获取成本值中。

【技术实现步骤摘要】

本专利技术涉及一种改进的数据处理系统,特别是涉及多处理协调的方法和设备。更具体地说,本专利技术提供了在任务管理或控制期间使用互斥锁(互斥体)处理调度或者资源分配的方法和设备。
技术介绍
现代操作系统支持多程序设计(multiprogramming),从而多个程序看起来似乎在具有单个中央处理单元(CPU)的单一计算装置上并行运行,或可能在对称的多处理器(SMP)机中的多CPU上并行运行。并行运行的现象是利用串行化运行(也被称之为“时间分片(time slicing)”)实现的即装置的操作系统允许多个程序之一在某个有限时段即时间片(timeslice)内独自地运行,然后在其后的时段内独自运行多个程序中另外一个。由于程序间切换非常快地发生,因此这些程序看起来好像是并行运行,即使它们实际上为串行化运行也是如此。当用于一个程序的时间片结束时,该程序就进入暂停或者“休眠”状态,并且另一个程序“唤醒”并开始运行。改善单个程序或者单个处理的性能的一种方法是把程序或者处理划分成多个运行路径,通常将其称为似乎并行地运行的“线程”。这样的程序或者处理通常被称作“多任务”或者“多线程”。在每个线程独自使用CPU期间,操作系统为其提供时间片。操作系统通常提供内建机构,以非常快速而有效的方式在多个并行程序之间和/或多个线程之间进行切换。某些类型的CPU提供对多线程的操作系统的直接硬件支持。由于本专利技术的原理等同地应用于可以包括单线程或多线程的并行线程和并行程序,所以这里使用的术语“线程”可以指非多线程程序或多线程程序内的一个线程。当线程运行时,它们总是需要存取数据处理系统内的资源,比如存储器、数据结构、文件或者其它资源。打算被多线程共享的资源必须以这样一种方式被共享保护被包含在资源内的或者经过资源的数据的完整性。实现的方式之一是串行化运行正在争用共享资源的线程。当第一线程已经使用一个资源时,需要资源的第二线程必须等待到该资源不再被使用,这种情况通常作为第一线程已经成功地完成其资源使用的结果而发生。操作系统通常提供多个机构来协调多线程的共享资源的使用。尽管应用程序开发商可以创建她自己的特定机构来确保对共享线程的串行化存取,但是应用程序开发商通常利用操作系统所提供的机构或标准化软件库内的机构,把共享资源的控制逻辑嵌入到多线程中。操作系统特定机构的使用是有利的,因为它允许操作系统把资源争用信息并入时间片功能中。因此,操作系统根据线程对资源的需要和争用来把时间片分配给线程,而不是通过使线程严格地周期使用时间片。串行化存取共享资源的普通机构是互斥体或者互斥锁,互斥锁是具有以下两种状态的简单锁锁定和解锁。该锁通常被实施为经由例程的标准化库中的软件子例程或者模块创建、毁坏或修改的数据对象或数据结构。互斥体可以逻辑地关联于共享资源,以使得成功锁定互斥体的线程被说成是互斥体的当前拥有者。只有拥有特定互斥体的线程才将存取与特定互斥关联的共享资源,并且只有拥有特定互斥体的线程才可以解锁该特定互斥体。因此,存取共享资源的线程内的代码临界区(critical section of code)由锁定互斥体的调用以及解锁该互斥体的调用来界定。如果线程试图锁定互斥体但失败,那么它必须等待,直至在开始运行存取共享资源的代码临界区之前能够锁定互斥体。如果在通过协调处理共享的存储器内分配了互斥体,则互斥体可以用来同步单一处理或交叉多处理内的多个线程。在获取互斥体失败后,线程等待该互斥体的方式取决于实施互斥体机构的方式。三种类型的锁被广泛使用阻塞锁、自旋锁以及阻塞锁和自旋锁的某些组合。如果已获取到互斥体并且另一个线程需要锁定该互斥体,则实施为阻塞锁的互斥体使等待的线程停止运行或暂停,即变成“休眠”。相反,自选锁不将等待的线程置于“休眠”。或者,等待的线程运行循环,从而重复地请求该锁直至它被当前拥有互斥体的线程释放。该循环可以包含空循环、迭代循环,即“忙循环”或“忙等待”,它递增或者递减变量,使线程不立即重新请求互斥体,而是等待取决于迭代循环的长度的时间段。与阻塞锁或自旋锁不同,互斥体通常被实施为带有超时的自旋锁,它是将阻塞锁特征与自旋锁特征相结合的锁。具有超时的自旋锁在有限时间段旋转,同时允许线程试图再次获得该锁。如果有限时段期满而又未获得该锁,则锁定该线程。用于超时的时段通常是通过在忙等待循环中运行固定次数的迭代来控制的。除了一个锁例程和解锁例程外,软件库还通常包含一个“trylock(试锁)”子例程,在其中,如果未获得互斥体,即不强迫请求例程等待互斥体变成可用,则把控制返回到请求子例程。阻塞和旋转的行为具有它们的优点和缺点。阻塞快速地暂停等待线程的运行。然而,阻塞的行为可以暂停将立即获得锁的线程,并且线程的暂停需要明显的开销,例如必须保存线程的运行场景。自旋消耗比如CPU时间和存储器高速缓存行这样的资源,但是如果审慎地选择自旋周期的长度,则等待线程通常可以较快地获得互斥体,从而允许自旋操作比阻塞操作消耗更少的计算资源。然而,自旋与阻塞之间的选择取决于许多因素,特别是取决于等待的线程正在运行的装置的计算环境。为了改善性能,自旋锁超时通常是可调整的。某些操作系统内核允许自旋超时的长度根据整个系统范围(system-wide)调整。在其它情况下,自旋锁超时可基于每个应用(per-application)来调整。自旋锁超时的值可以从提供运行时间或者环境变量值的配置文件或者特性文件中读取。然而,找到自旋锁超时的适当值可能是由系统管理器执行的、耗时的任务。因此,拥有一个被实施为不需要专门的手工调谐处理的、带有超时的自旋锁的互斥体总是有好处的。
技术实现思路
本专利技术提供了一种在数据处理系统中管理互斥体的方法。对于每个互斥体,维持平均获取成本,该平均获取成本指示线程试图获得互斥体而引起的计算资源的平均消耗。如果线程试图获取被锁定的互斥体,那么线程根据限制条件和此时用于互斥体的平均获取成本值进入自旋状态或者休眠状态。维持特定线程的当前获取成本值,该成本值代表在获取互斥体的最初试图之后和在获取互斥体之前由线程消耗的计算资源。当线程获得互斥体时,特定线程的当前获取成本值包含在平均获取成本值中。附图说明在所附的权利要求书中限定了被认为是本专利技术特征的新颖特征。通过参考以下结合附图的详细说明,将会更好地理解本专利技术本身和其它目的以及本专利技术的优点。图1A图示了数据处理系统的典型网络,其中每个数据处理系统都可以实施本专利技术;图1B图示了可以在数据处理系统内使用的典型计算机结构,其中在该数据处理系统中可以实施本专利技术;图2A图示了一个方框图,该方框图显示了在利用互斥体的典型多线程应用程序内的各部件逻辑结构;图2B图示了一个方框图,该方框图显示了支持多线程应用程序运行的典型数据处理系统中各部件的逻辑结构,其中多线程应用程序使用由操作系统内核支持的互斥体;图3图示了自旋锁互斥体的一种典型实施;图4A图示了根据本专利技术实施例的一个显示互斥体数据结构的方框图,该互斥体数据结构已经被扩展到包括支持自适应互斥体的信息;图4B图示了一个显示某些数据字段的方框图,该数据字段可以用于特定线程的、与互斥体有关的数据结构,以支持自适应互斥体的获取;图5A-图5C图示了一组显示一个处理的流程图,通过该处理,一个线程获取自适应本文档来自技高网
...

【技术保护点】
一种在数据处理系统中管理互斥体的方法,该方法包括:维持用于互斥体的平均获取成本值;第一线程尝试获取互斥体;和响应第二线程已经获取互斥体的确定,根据互斥体的平均获取成本值确定进入第一线程的自旋状态或者休眠状态。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:乔尔H肖普
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1