CN1983193A - 用于信息处理的系统和方法 - Google Patents

用于信息处理的系统和方法 Download PDF

Info

Publication number
CN1983193A
CN1983193A CNA2006101465783A CN200610146578A CN1983193A CN 1983193 A CN1983193 A CN 1983193A CN A2006101465783 A CNA2006101465783 A CN A2006101465783A CN 200610146578 A CN200610146578 A CN 200610146578A CN 1983193 A CN1983193 A CN 1983193A
Authority
CN
China
Prior art keywords
thread
request
software locks
response
reservation
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.)
Granted
Application number
CNA2006101465783A
Other languages
English (en)
Other versions
CN100481014C (zh
Inventor
A·邓希
J·M·阿卡帕蒂
M·阿卡帕蒂
D·米歇尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1983193A publication Critical patent/CN1983193A/zh
Application granted granted Critical
Publication of CN100481014C publication Critical patent/CN100481014C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供了一种用于为等待线程保留软件锁的系统和方法。当软件锁被第一线程释放时,正等待由所述软件锁控制的相同资源的第二线程被唤醒。此外,为所述第二线程建立对所述软件锁的保留。在建立所述保留之后,如果所述锁可用,并由除了所述第二线程之外的线程所请求,则所述请求线程被拒绝、被添加到等待队列、以及被置为睡眠。此外,所述保留被清除。在所述保留已被清除后,所述锁将被授予请求所述锁的下一线程。

Description

用于信息处理的系统和方法
技术领域
本发明一般涉及一种用于改进软件锁的系统和方法。更具体地,本申请涉及一种用于为正等待软件锁的线程保留该锁的系统和方法。
背景技术
在多处理环境中,软件锁被用于串行化对资源的访问。如此处所使用的,“线程”指代可独立于程序的其它部分执行的程序的一部分。可以存在同时进行操作的多个程序,包括操作系统,并且这些程序中的每个可以具有多个线程。当线程需要访问串行化的资源时,软件锁被使用。软件锁提供了一种机制,使得一个线程能够使用资源(例如,写到共享存储器位置等)。尽管传统的锁提供了一种用于访问资源的受控制装置,但是使用传统锁遇到的一个挑战在于,线程可能意外地急需访问特定资源。尽管在多处理器环境中出现此情况,但在某些条件下在单处理器环境中也可出现此情况。
图1是潜在地急需关键资源的过程的典型的加锁算法的现有技术描述。在所示出的示例中,第二线程急需特定资源。在100开始第一线程的处理部分的描述,而在101开始第二线程的处理部分的描述。在步骤105,第一线程获得特定锁并接着通过执行使用被该锁控制的资源的工作来开始步骤110。
在第一线程已获得锁之后、但是在第一线程已释放该锁之前的某个时间,第二线程请求同一软件锁(步骤115)。在步骤120,锁管理器注意到该锁已被(第一线程)获得,于是在步骤125,第二线程被置为睡眠,并被添加到等待队列130。在第二线程被置为睡眠并被添加到等待队列之后的某个时间,第一线程释放该锁(步骤135)。第一线程释放该锁导致第二线程唤醒(步骤140),并且第二线程从等待队列130中移除。在第二线程正在唤醒的时候,在步骤145第一线程执行不需要由软件锁控制的共享资源的工作。但是,在第二线程完全唤醒并请求该锁(步骤160)之前,第一线程再次需要访问共享资源,并在步骤150再次请求锁。因为该锁可用,并且第一线程在第二线程之前请求该锁,所以在步骤155第一线程重新获得该锁。
再次地,锁管理器拒绝将锁给第二线程(步骤165),因为该锁已被另一过程(第一线程)所获得。接着第二线程被置回为睡眠,并被添加到等待队列(步骤170)。不幸的是,所述序列可能被反复重复(步骤175和180),由此使第二线程变得急需,使得它必须等待过量时间来获得由所述锁控制的共享资源。如前所述,尽管在多处理器环境中出现图1中描述的情况,但在某些条件下在单处理器环境中也可出现此情况。如上所述,第二线程可能变得急需该锁的一个原因是因为第一线程是运行中的线程,而第二线程被置为睡眠。运行中的线程所具有的优于睡眠线程的优势在于,它可以经常在睡眠线程可以唤醒并请求该锁之前完成其处理并请求该锁。通过使用类似分派程序,第二线程将在唤醒时优选地被分派给CPU2。不过,如果CPU2繁忙,则第二线程可被重新分配给在第二线程唤醒之时空闲的不同CPU。再一次地,将第二线程重新分配给空闲的CPU需要额外的时间,这向第一线程提供了完成其工作并重新请求该锁的额外优势。
因此,所需要的是一种防止一个过程急需共享资源的系统和方法。还需要的是一种为等待过程保留锁从而使它具有好得多的机会来及时地获得该锁的系统和方法。
发明内容
已经发现,一种为等待线程保留软件锁的系统和方法解决了前述挑战。当软件锁被第一过程(线程)释放时,正等待由所述软件锁控制的相同资源的第二线程被唤醒。此外,为所述第二线程建立对所述软件锁的保留。
在建立所述保留之后,如果所述锁可用,并由除了所述第二线程之外的线程所请求,那么,如果所述请求线程的优先级并未优于所述第二线程,则所述请求线程被拒绝,并且所述请求线程被添加到等待队列并被置为睡眠。此外,所述保留被清除。以此方式,如果所述第二线程花费过量时间来请求所述锁,则所述保留不会永久地阻碍其它过程(线程)。在所述保留已被清除后,所述锁将被授予请求所述锁的下一线程。尽管所述第二线程未被保证立刻获得所述锁,但这极大地提高了所述第二线程在合理的时间量内获得所述锁的机会。
当然,如果所述第二线程是在所述保留已被设置之后请求所述锁的下一线程(或者如果所述第二线程是在所述保留已被设置之前请求所述锁),则所述第二线程获得所述软件锁。如果已为所述第二线程设置了保留,则所述保留被清除。
前述内容是摘要,并因此按照需要包含了细节的简化、概括和删节;结果,本领域技术人员将理解,所述摘要仅是说明,而不会以任何方式进行限制。仅由权利要求限定的本发明的其它方面、创造性特征和优点将在以下阐述的非限制性详细描述中变得明显。
附图说明
通过参考附图,本发明可被更好地理解,并且本发明的多个目的、特征和优点对本领域技术人员更加明显。
图1是潜在地急需关键资源的过程的典型的加锁算法的现有技术描述;
图2是示出由各种处理器执行并通过软件锁共享公共资源的过程的高级图;
图3是示出对保留的使用如何防止急需尝试使用锁的过程的图;
图4是示出当接收到对于锁的请求时采取的步骤的流程图;
图5是示出当保持锁的过程释放该锁时采取的步骤的流程图;以及
图6示出信息处理系统601,其是能够执行此处所述的计算操作的计算机系统的简化示例。
具体实施方式
以下内容旨在提供本发明的示例的详细描述,并且不应被用来限制发明本身。而是,任何数量的变体均可落入在权利要求中所限定的本发明的范围。
图1是潜在地急需关键资源的过程的典型的加锁算法的现有技术描述。在以上背景技术部分中可找到对图1的描述。
图2-5示出避免了急需关键资源的过程的加锁算法。当锁被释放并且存在等待者时,唤醒呼叫在锁结构中设置保留位。从等待列表(等待队列)中唤醒的线程将在线程控制框中具有位组,指示该线程曾在该锁的等待列表上。所唤醒线程尝试获得锁并将清除等待列表位。在锁获得期间,如果锁是空闲的且锁结构具有等待列表位组,则将进行检查,以看看所述线程是否具有等待列表位组。如果线程具有等待列表位组,则它将被允许尝试获得该锁,并且线程等待列表位将被清除(不管是否获得该锁)。如果线程在其线程控制结构中没有等待列表位组,则它将清除锁结构的锁保留位,将进入睡眠,并且它将被添加到等待列表(等待队列)。
注册表可被用于确定哪些锁将使用上文和图2-5中所述的算法,在或者所述算法可应用于所有锁。由于该算法的开销非常小,并因为检查和设置保留位检查中涉及的开销可以忽略,特别是因为等待列表(等待队列)无论如何要被检查,所以将该算法应用于所有锁是可能的。此外,额外的分派开销也是可以忽略的,而且可由更复杂的实现达到的任何小的节约将可能被该复杂实现所需的额外开销所盖过。此外,通过将保留位作为锁本身存储在同一高速缓存线中,可以进一步提高效率。此外,如此处更详细地解释的,仅当线程在等待列表上等待,并被实现为唤醒例程的一部分时,才执行锁保留。
图2是示出由各种处理器执行并通过软件锁共享公共资源的过程的高级图。背景技术部分中描述的挑战(见以上图1及其描述)在多处理系统中更可能出现,在多处理系统中不同处理器被用于执行不同线程,每个线程都需要访问共享资源。图2描述了此多处理环境。
硬件200在许多组件中包括多个处理器(CPU1(210)、CPU2(220)和CPU3(230))。这些处理器中的每个可执行一个或多个线程。在所示出的示例中,CPU1(210)在执行第一线程(线程A),而CPU2(220)在执行第二线程(线程B)。这些线程共享各种共享资源,通过一个或多个软件锁来控制对所述共享资源的访问。
操作系统或软件应用250通过使用软件锁260来管理对共享资源270的访问。当线程之一获得该锁时,接着该线程可访问和使用共享资源270。如果软件锁已被第一线程获得,则请求线程被添加到等待队列275。在一实施例中,等待队列275是FIFO队列。更具体地,在此实施例中,具有同一优先级的线程基于它们到达队列的顺序被排序(FIFO)。在此实施例中,较高优先级的线程被放置在队列前面,而较低优先级的线程被放置在队列末端。当第一线程释放该锁时,等待队列275中列出的第一线程被唤醒,并且使用保留数据结构280来为唤醒线程建立保留。如果当该保留就绪时另一线程尝试获得该锁,则该请求线程被置为睡眠,并被添加到等待队列。在一实施例中,在其它线程尝试获得该锁之后,该保留被清除。
图3是示出对保留的使用如何防止急需尝试使用锁的过程的图。图3中所示的处理和图1中所示的现有技术描述中示出的处理之间的比较揭示出本发明减小或消除了急需共享资源的线程。
在300开始第一线程的处理部分的描述,而在301开始第二线程的处理部分的描述。在步骤305,第一线程获得特定锁并接着通过执行使用被该锁控制的资源的工作来开始步骤310。在第一线程已获得锁之后、但是在第一线程已释放该锁之前的某个时间,第二线程请求同一软件锁(步骤315)。在步骤320,锁管理器注意到该锁已被(第一线程)获得,于是在步骤325,第二线程被置为睡眠,并被添加到等待队列275。
在第二线程被置为睡眠并被添加到等待队列之后的某个时间,第一线程释放该锁(步骤340)。第一线程释放该锁导致第二线程唤醒(步骤345),并且第二线程从等待队列275中移除。此外,锁管理器为第二线程设置对该锁的保留。在第二线程正在唤醒的时候,在步骤350第一线程执行不需要由软件锁控制的共享资源的工作。但是,在第二线程完全唤醒并请求该锁(步骤365)之前,第一线程再次需要访问共享资源,并在步骤355再次请求锁。不过即使该锁可用,但是锁管理器注意到已为另一线程设置了对该锁的保留。锁管理器比较第一线程(进行请求的线程)的线程标识符和存储在保留280中的线程标识符(为第二线程设置的)。由于两个线程标识符不匹配,所以第一线程被置为睡眠,并被添加到等待队列,并且保留被清除(步骤360)。现在,当第二线程唤醒并在步骤365请求该锁时,该锁仍旧可用,并且第二线程能够在步骤370获得该锁。同样,当第二线程释放该锁时,将为第一线程建立保留,因为第一线程正在睡眠并在等待队列中等待,这样给第一线程更好的机会来获得该锁。
图4是示出当接收到对于锁的请求时采取的步骤的流程图。处理在400开始,在步骤405,接收对锁的请求。确定所请求的锁是否被保留(决策410)。如果所请求的锁被保留,则决策410分叉到其上的“是”分支415,另外确定该锁是否被请求线程所保留(决策420)。通过比较请求线程的标识符和对应于保留280的线程标识符而做出此确定。如果锁被请求线程所保留,则决策420分叉到其上的“是”分支425,在步骤430,保留280被清除,并且在所述处理在步骤495结束之前,在步骤445通过把请求者的线程标识符写到锁数据结构260而由请求者获得该锁。
返回决策420,如果该锁被保留,但不是由请求线程所保留,则决策420分叉到其上的“否”分支455,在步骤460,保留280被清除,并且在所述处理在499结束之前,请求线程被置为睡眠,并被添加到等待队列275。返回决策410,如果该锁未被保留,则决策410分叉到其上的“否”分支470,另外确定该锁是否当前可用(决策475)。如果该锁当前可用,则决策475分叉到其上的“是”分支480,在所述处理在495结束之前,在步骤445通过把请求者的线程标识符写到锁数据结构260而由请求者获得该锁。另一方面,如果该锁当前不可用,则决策475分叉到其上的“否”分支485,在所述处理在499结束之前,在步骤490,请求者被置为睡眠,并被添加到等待队列275。
图5是示出当保持锁的线程释放该锁时采取的步骤的流程图。处理在500开始,在步骤510,保持锁260的第一线程释放该锁。在步骤520,锁260被清除,使得该锁不再被分配给该线程。
确定等待队列275中是否存在正等待该锁的一个或多个线程(决策530)。如果不存在正等待该锁的线程,则决策530分叉到其上的“否”分支535,其绕过剩余步骤,并且处理在595结束。另一方面,如果一个或多个线程正等待该锁,则决策530分叉到其上的“是”分支540,在步骤550,在等待队列275中列出的下一线程被选择。在步骤560,通过把所选择线程的标识符写到保留数据结构280而为所选择线程设置保留。在步骤570,所选择线程被唤醒,并且在步骤580从等待队列275中移除所选择线程。随后处理在595结束。
图6示出信息处理系统601,其是能够执行此处所述的计算操作的计算机系统的简化示例。计算机系统601包括耦合于主机总线602的处理器600。二级(L2)高速缓冲存储器604也耦合于主机总线602。主机到PCI桥606耦合于主存储器608,包括高速缓冲存储器和主存储器控制功能,并提供总线控制来处理在PCI总线610、处理器600、L2高速缓存604、主存储器608和主机总线602之间的传输。主存储器608耦合于主机到PCI桥606以及主机总线602。仅由主机处理器600使用的设备(诸如LAN卡630)耦合于PCI总线610。服务处理器接口和ISA访问通道612提供PCI总线610和PCI总线614之间的接口。以此方式,PCI总线614与PCI总线610隔离。诸如闪速存储器618的设备耦合于PCI总线614。在一实现中,闪速存储器618包括BIOS代码,其引入了用于多种低级系统功能和系统引导功能的必要的处理器可执行代码。
PCI总线614提供用于由主机处理器600和服务处理器616共享的多种设备(例如包括闪速存储器618)的接口。PCI到ISA桥635提供总线控制来处理在PCI总线614、ISA总线640、通用串行总线(USB)功能645和电力管理功能655之间的传输,并且可包括未示出的其它功能单元,诸如实时时钟(RTC)、DMA控制、中断支持和系统管理总线支持。非易失性RAM 620附接于ISA总线640。服务处理器616包括用于在初始化步骤期间与处理器600通信的JTAG和I2C总线622。JTAG/I2C总线622也耦合于L2高速缓存604、主机到PCI桥606和主存储器608,其提供处理器、服务处理器、L2高速缓存、主机到PCI桥以及主存储器之间的通信路径。服务处理器616也访问用于给信息处理设备601断电的系统电力资源。
外围设备和输入/输出(I/O)设备可附接于多种接口(例如,耦合于ISA总线640的并行接口662、串行接口664、键盘接口668和鼠标接口670)。可替换地,许多I/O接口可被附接于ISA总线640的超级I/O控制器(未示出)所容纳。
为了将计算机系统601附接于另一计算机系统以便在网络上拷贝文件,LAN卡630耦合于PCI总线610。类似地,为了将计算机系统601连接于ISP以便使用电话线路连接而连接到因特网,调制解调器675连接于串行端口664和PCI到ISA桥635。
尽管图6中所述的计算机系统能够执行此处所述的过程,但该计算机系统是计算机系统的一个简单示例。本领域技术人员将理解,许多其它计算机系统设计能够执行此处所述的过程。
本发明的优选实现之一是客户应用,即,代码模块中的指令集(程序代码)或其它描述功能的材料,其例如可以驻留于计算机的随机存取存储器中。在被计算机需要之前。指令集可被存储在另一计算机存储器中,例如在硬盘驱动器中或在可移除存储器(诸如光盘(最终在CD-ROM中使用)或软盘(最终在软盘驱动器中使用))中,或者经由因特网或其它计算机网络下载。因此,本发明可被实现为在计算机中使用的计算机程序产品。此外,尽管所述的各种方法在由软件选择性地启动或重新配置的通用计算机中便利地实现,但本领域普通技术人员也将认识到,所述方法可用硬件、固件或被构建执行所需方法步骤的更专用的装置来执行。描述功能的材料是将功能给予机器的信息。描述功能的材料包括但不限于:计算机程序、指令、规则、事实、可计算功能的定义、对象和数据结构。
尽管已示出和描述了本发明的特定实施例,但是对于本领域技术人员来说将很明显,基于此处的讲授,可以做出改变和修改而不会背离本发明及其更广泛的方面。因此,权利要求将在其范围内包含所有这样的改变和修改,其均落在本发明的真正精神和范围内。此外,应理解,本发明仅由权利要求所限定。本领域技术人员将理解,如果预定了所引入的权利要求要素的特定数量,则该预定将在权利要求中明确阐明,并且在没有这样的阐明的情况下不存在任何限制。对于非限制性示例,作为对理解的帮助,权利要求包含对介绍性短语“至少一个”以及“一个或多个”的使用,以便介绍权利要求要素。不过,对这些短语的使用不应被解释为暗示由不定冠词“a”或“an”对权利要求要素的介绍把包含这些被介绍的权利要求要素的任何特定权利要求限制为仅包含一个这样的要素的发明,即使当同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“a”或“an”的不定冠词时也是如此;在权利要求中使用定冠词时也是如此。

Claims (13)

1.一种计算机实现的方法,包括:
由第一线程释放软件锁;
在所述释放之时标识正等待所述软件锁的第二线程;
响应于所述标识由所述第二线程建立对所述软件锁的保留;
响应于所述释放唤醒所述第二线程;
在建立所述保留之后并在所述软件锁已被所述第二线程获得之前,接收不是所述第二线程的第一请求线程对于所述软件锁的第一请求;以及
响应于所述第二线程具有等于或优于所述第一请求线程的优先级,拒绝所述请求,并将所述第一请求线程置为睡眠。
2.根据权利要求1所述的方法,还包括:
响应于接收到所述第一请求,清除所述保留。
3.根据权利要求1所述的方法,还包括:
在所述清除之后并在所述软件锁已经被所述第二线程请求之前,接收不是所述第二线程的第二请求线程对于所述软件锁的第二请求;以及
响应于所述第二请求,允许所述第二请求线程获得所述软件锁。
4.根据权利要求1所述的方法,还包括:
在建立所述保留之后,接收所述第二线程对于所述软件锁的请求;
响应于所述请求,允许所述第二线程获得所述软件锁;以及
响应于接收到所述请求,清除所述保留。
5.根据权利要求1所述的方法,还包括:
在建立所述保留之后,接收请求线程对于所述软件锁的请求;
比较所述请求线程的线程标识符和所述第二线程的线程标识符;
响应于所述请求线程的线程标识符等于所述第二线程的线程标识符:
允许所述请求线程获得所述软件锁;以及
清除所述保留;以及
响应于所述请求线程的线程标识符不等于所述第二线程的线程标识符:
拒绝所述请求;
将所述请求线程置为睡眠;以及
清除所述保留。
6.根据权利要求1所述的方法,还包括:
从等待队列中选择对应于所述第二线程的线程标识符,其中所述等待队列包括对应于正等待所述软件锁的线程的一个或多个线程标识符;以及
从所述等待队列中移除所选择的线程标识符。
7.根据权利要求1所述的方法,还包括:
由所述第二线程释放所述软件锁;
在所述软件锁已经被所述第二线程释放之后,接收请求线程对于所述软件锁的请求;
响应于所述软件锁未被保留:
响应于所述软件锁可用,允许所述请求线程获得所述软件锁;以及
响应于所述软件锁不可用,将所述请求线程置为睡眠,并将所述请求线程的标识符添加到等待队列;以及
响应于所述软件锁被保留:
响应于所述保留是为了所述请求线程,清除所述保留,并允许所述请求线程获得所述软件锁;以及
响应于所述保留不是为了所述请求线程,清除所述保留,将所述请求线程置为睡眠,并将所述请求线程的标识符添加到所述等待队列。
8.一种信息处理系统,包括:
一个或多个处理器;
可由所述处理器访问的存储器;
存储于所述存储器中并由所述处理器执行的多个线程,包括第一线程和第二线程;
控制对资源的访问的软件锁;以及
指令集,其被所述处理器执行用来执行以下动作:
由所述第一线程释放所述软件锁;
在所述释放之时标识正等待所述软件锁的第二线程;
响应于所述标识由所述第二线程建立对所述软件锁的保留;
响应于所述释放唤醒所述第二线程;
在建立所述保留之后并在所述软件锁已被所述第二线程获得之前,接收不是所述第二线程的第一请求线程对于所述软件锁的第一请求;以及
响应于所述第二线程具有等于或优于所述第一请求线程的优先级,拒绝所述请求,并将所述第一请求线程置为睡眠。
9.根据权利要求8所述的信息处理系统,还包括:
响应于接收到所述第一请求,清除所述保留。
10.根据权利要求8所述的信息处理系统,还包括:
在所述清除之后并在所述软件锁已经被所述第二线程请求之前,接收不是所述第二线程的第二请求线程对于所述软件锁的第二请求;以及
响应于所述第二请求,允许所述第二请求线程获得所述软件锁。
11.根据权利要求8所述的信息处理系统,还包括:
在建立所述保留之后,接收所述第二线程对于所述软件锁的请求;
响应于所述请求,允许所述第二线程获得所述软件锁;以及
响应于接收到所述请求,清除所述保留。
12.根据权利要求8所述的信息处理系统,还包括:
在建立所述保留之后,接收请求线程对于所述软件锁的请求;
比较所述请求线程的线程标识符和所述第二线程的线程标识符;
响应于所述请求线程的线程标识符等于所述第二线程的线程标识符:
允许所述请求线程获得所述软件锁;以及
清除所述保留;以及
响应于所述请求线程的线程标识符不等于所述第二线程的线程标识符:
拒绝所述请求;
将所述请求线程置为睡眠;以及
清除所述保留。
13.根据权利要求8所述的信息处理系统,还包括:
从等待队列中选择对应于所述第二线程的线程标识符,其中所述等待队列包括对应于正等待所述软件锁的线程的一个或多个线程标识符;以及
从所述等待队列中移除所选择的线程标识符。
CNB2006101465783A 2005-12-12 2006-11-15 用于信息处理的系统和方法 Expired - Fee Related CN100481014C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/301,104 2005-12-12
US11/301,104 US20070136725A1 (en) 2005-12-12 2005-12-12 System and method for optimized preemption and reservation of software locks

Publications (2)

Publication Number Publication Date
CN1983193A true CN1983193A (zh) 2007-06-20
CN100481014C CN100481014C (zh) 2009-04-22

Family

ID=38140970

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101465783A Expired - Fee Related CN100481014C (zh) 2005-12-12 2006-11-15 用于信息处理的系统和方法

Country Status (2)

Country Link
US (2) US20070136725A1 (zh)
CN (1) CN100481014C (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078962A1 (zh) * 2011-12-02 2013-06-06 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器系统
CN103988180A (zh) * 2011-12-07 2014-08-13 高通股份有限公司 在便携式计算装置中将资源请求分批成事务及使此事务分叉
CN105893120A (zh) * 2016-04-21 2016-08-24 北京京东尚科信息技术有限公司 一种线程同步资源的获取方法和装置
CN108509260A (zh) * 2018-01-31 2018-09-07 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100922984B1 (ko) * 2006-06-16 2009-10-22 삼성전자주식회사 이동통신 시스템의 하이브리드 단말에서 한 개의 슬립제어기를 이용하여 여러 시스템의 슬롯 모드를 제어하기위한 장치 및 방법
US20080034054A1 (en) * 2006-08-07 2008-02-07 Curtis Stehley System and method for reservation flow control
US20080059676A1 (en) * 2006-08-31 2008-03-06 Charles Jens Archer Efficient deferred interrupt handling in a parallel computing environment
US8595729B2 (en) * 2006-11-06 2013-11-26 Intel Corporation Managing sequenced lock requests
US8132171B2 (en) * 2006-12-22 2012-03-06 Hewlett-Packard Development Company, L.P. Method of controlling thread access to a synchronization object
US7890707B2 (en) * 2007-06-27 2011-02-15 Microsoft Corporation Efficient retry for transactional memory
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US8140823B2 (en) * 2007-12-03 2012-03-20 Qualcomm Incorporated Multithreaded processor with lock indicator
TWI462011B (zh) * 2007-12-28 2014-11-21 Accton Technology Corp 程序之執行緒群組管理方法
US8607239B2 (en) * 2009-12-31 2013-12-10 International Business Machines Corporation Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread
US9098521B2 (en) 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
US8631414B2 (en) 2010-09-15 2014-01-14 Qualcomm Incorporated Distributed resource management in a portable computing device
US8615755B2 (en) 2010-09-15 2013-12-24 Qualcomm Incorporated System and method for managing resources of a portable computing device
US8806502B2 (en) 2010-09-15 2014-08-12 Qualcomm Incorporated Batching resource requests in a portable computing device
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
US8522250B2 (en) 2010-09-29 2013-08-27 International Business Machines Corporation Managing access to a shared resource in a data processing system
US20120311605A1 (en) * 2011-05-31 2012-12-06 International Business Machines Corporation Processor core power management taking into account thread lock contention
JP2013149108A (ja) * 2012-01-19 2013-08-01 Canon Inc 情報処理装置及びその制御方法、プログラム
US9542237B2 (en) * 2012-09-04 2017-01-10 Red Hat Israel, Ltd. Shared locking for storage centric exclusive locks
US9164793B2 (en) * 2012-12-21 2015-10-20 Microsoft Technology Licensing, Llc Prioritized lock requests to reduce blocking
CN104102547B (zh) * 2014-07-25 2017-12-26 珠海全志科技股份有限公司 多处理器系统的同步方法及其同步装置
GB2532424B (en) 2014-11-18 2016-10-26 Ibm An almost fair busy lock
US10417056B2 (en) 2015-08-04 2019-09-17 Oracle International Corporation Systems and methods for performing concurrency restriction and throttling over contended locks
US10423464B2 (en) * 2016-09-30 2019-09-24 Hewlett Packard Enterprise Patent Development LP Persistent ticket operation
US10565024B2 (en) 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
CN111045814B (zh) * 2018-10-11 2023-12-08 华为技术有限公司 资源调度方法和终端设备
CN112306703A (zh) * 2019-07-29 2021-02-02 华为技术有限公司 一种numa系统中的临界区执行方法及装置
US11544615B2 (en) * 2021-05-27 2023-01-03 Red Hat, Inc. Managing runtime qubit allocation for executing quantum services
US20230056500A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Chained resource locking
CN117271144B (zh) * 2023-11-22 2024-04-23 荣耀终端有限公司 一种线程的处理方法和电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5961583A (en) * 1996-11-22 1999-10-05 International Business Machines Corporation Method and system for using the event wait list anchor as a lock for events
EP1199632A1 (en) * 2000-10-20 2002-04-24 Sun Microsystems, Inc. Method and apparatus for resource access synchronization
US6910212B2 (en) * 2000-12-04 2005-06-21 International Business Machines Corporation System and method for improved complex storage locks
US20020083063A1 (en) * 2000-12-26 2002-06-27 Bull Hn Information Systems Inc. Software and data processing system with priority queue dispatching
US7093230B2 (en) * 2002-07-24 2006-08-15 Sun Microsystems, Inc. Lock management thread pools for distributed data systems
US7278141B2 (en) * 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US7984439B2 (en) * 2005-03-08 2011-07-19 Hewlett-Packard Development Company, L.P. Efficient mechanism for preventing starvation in counting semaphores
US8250047B2 (en) * 2005-05-20 2012-08-21 International Business Machines Corporation Hybrid multi-threaded access to data structures using hazard pointers for reads and locks for updates
US7752620B2 (en) * 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US7421529B2 (en) * 2005-10-20 2008-09-02 Qualcomm Incorporated Method and apparatus to clear semaphore reservation for exclusive access to shared memory
US8566827B2 (en) * 2005-10-27 2013-10-22 International Business Machines Corporation System and method of arbitrating access of threads to shared resources within a data processing system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078962A1 (zh) * 2011-12-02 2013-06-06 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器系统
CN103988180A (zh) * 2011-12-07 2014-08-13 高通股份有限公司 在便携式计算装置中将资源请求分批成事务及使此事务分叉
CN103988180B (zh) * 2011-12-07 2018-06-05 高通股份有限公司 在便携式计算装置中将资源请求分批成事务及使此事务分叉
CN105893120A (zh) * 2016-04-21 2016-08-24 北京京东尚科信息技术有限公司 一种线程同步资源的获取方法和装置
CN105893120B (zh) * 2016-04-21 2019-07-30 北京京东尚科信息技术有限公司 一种线程同步资源的获取方法和装置
CN108509260A (zh) * 2018-01-31 2018-09-07 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
US20070136725A1 (en) 2007-06-14
US20080163217A1 (en) 2008-07-03
CN100481014C (zh) 2009-04-22
US8261279B2 (en) 2012-09-04

Similar Documents

Publication Publication Date Title
CN100481014C (zh) 用于信息处理的系统和方法
US6910212B2 (en) System and method for improved complex storage locks
CN101946235B (zh) 用于在共享处理器分区环境中移动线程的方法及装置
US7992150B2 (en) Method and apparatus for awakening client threads in a multiprocessor data processing system
CN100407136C (zh) 使用睡眠-唤醒机制来执行指令的方法和装置
CN100378668C (zh) 用于自主自适应互斥体的方法和系统
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
CN100422940C (zh) 在数据处理系统中仲裁线程访问共享资源的系统和方法
JP2531881B2 (ja) 並行制御方法
EP0735475B1 (en) Method and apparatus for managing objects in a distributed object operating environment
TWI321278B (en) System, apparatus and method of enhancing priority boosting of scheduled threads
US20100023732A1 (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US20040002974A1 (en) Thread based lock manager
CN104272256B (zh) 任务处理装置
JPH09503328A (ja) 非同期に順序付けされた動作を行うコンピュータ方法及び装置
US8321874B2 (en) Intelligent context migration for user mode scheduling
US20150052529A1 (en) Efficient task scheduling using a locking mechanism
JP2011232956A (ja) コンピュータシステムとプログラム
WO2012016472A1 (zh) 多核CPU加载Linux操作系统的方法及系统
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
EP1693743A2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
CA2382728A1 (en) Efficient event waiting
Atkins et al. Adaptable concurrency control for atomic data types
WO2000033175A2 (en) Method for increasing efficiency of multiprocessing systems
JP2804478B2 (ja) タスク制御方式及びオンライン・トランザクション・システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090422

Termination date: 20181115

CF01 Termination of patent right due to non-payment of annual fee