WO2006090403A2 - A method and system for managing a common resource in a computing system - Google Patents

A method and system for managing a common resource in a computing system Download PDF

Info

Publication number
WO2006090403A2
WO2006090403A2 PCT/IN2005/000058 IN2005000058W WO2006090403A2 WO 2006090403 A2 WO2006090403 A2 WO 2006090403A2 IN 2005000058 W IN2005000058 W IN 2005000058W WO 2006090403 A2 WO2006090403 A2 WO 2006090403A2
Authority
WO
WIPO (PCT)
Prior art keywords
lock
common resource
acquired
requests
accordance
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.)
Ceased
Application number
PCT/IN2005/000058
Other languages
French (fr)
Other versions
WO2006090403A3 (en
Inventor
Deepak Brahmavar
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to US11/884,790 priority Critical patent/US20080256547A1/en
Priority to PCT/IN2005/000058 priority patent/WO2006090403A2/en
Publication of WO2006090403A2 publication Critical patent/WO2006090403A2/en
Publication of WO2006090403A3 publication Critical patent/WO2006090403A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Definitions

  • the present invention relates to the field of managing common resources in a computing system . More particularly, but not exclusively, the present invention relates to a method and system for acquiring and releasing locks in a computing system.
  • Multi-processor computing systems i . e . systems with more than one processor
  • Multi-processor computing systems are arranged to execute multiple processes or multiple threads of the same or different processes concurrently .
  • thread and process are used interchangeably and denote a basic schedulable entity within the computing system.
  • a common resource is a device or software sub-system that is shared ' and accessed by multiple processors .
  • An example of a common resource may be a storage device such as a hard drive or a CD-ROM drive .
  • Most common resources can only interact with a processor in a serial fashion ( i . e . the common resource can only process one request from the processor at any given time interval ) . Therefore , access to the common resource must be serialized in order to allow incoming requests to be serviced in a mutually exclusive manner .
  • One device utilized to serialize access to a common resource is a "lock".
  • a lock is a software flag or switch, which can be set to let a processor know whether a common resource is being utilized by another processor.
  • a processor on behalf of the process it is executing attempts to access a common resource, it will firstly acquire a lock. Once the processor has acquired the lock, other processors know that they cannot access the common resource until the lock is released. This avoids conflicts or the reading/writing of incorrect data.
  • the manner in which a processor checks to determine whether a common resource is locked may be broadly classified into a number of categories, including:
  • Blocking locks If a processor attempts to acquire a lock but is unable to, the process is placed into hibernation. The process is explicitly woken up when ownership of the lock is relinquished. Two context switches need to be performed (once during the block operation leading to hibernation and later for unblocking the thread) during this operation.
  • the invention in one embodiment, provides a method for acquiring and releasing a lock over a common resource in a computing system. After a lock has been acquired over a common resource, a determination is made as to whether other requests for the common resource have been made. If other requests have been made, the lock over the common resource is released so that the common resource becomes available for use by the other requests .
  • Figure 1 illustrates a typical computing system on which an embodiment of the invention may be implemented.
  • Figure 2 is a flow chart illustrating the method steps of an embodiment of the- invention.
  • the embodiment described herein is directed to a system and method for managing a common resource, and in particular to a system and method for acquiring and releasing locks .
  • the embodiment is typically coded as a routine or a number of routines in a software application (such as an operating system) .
  • a software application such as an operating system
  • it may also be embodied in hardware, for example in firmware in a hard disk controller
  • Fig . 1 shows a schematic diagram of a computing system 100 suitable for use with an embodiment of the invention .
  • the computing system 100 may be used to execute any appropriate applications .
  • the computing system 100 includes multiple processors 102, and may also include read-only memory (ROM) 104, random access memory (RAM) 106, and input/output devices such as disk drive 108, keyboard 110, mouse (not shown), display 112, printer (not shown) , and communications link 114.
  • the computer includes applications that may be stored in RAM 106, ROM 104, or disk drives 108 and may be executed by the processor 102.
  • the communications link 114 connects to a computer network but could be connected to a telephone line, an antenna, a gateway or any other type of communication channel.
  • Disk drive 108 may include any suitable storage media, such as, for example, floppy disk drives, hard disk drives, CD ROM drives or magnetic tape drives.
  • the computing system 100 may use a single disk drive 108 or multiple disk drives.
  • the computing system 100 may use any suitable operating system, such as WindowsTM or UnixTM.
  • the lock is acquired each time the loop is entered and released at the exit of each loop.
  • the common resource is released at the end of each loop to allow another process to access the common resource, if that is desired.
  • the embodiment described as follows allows a processor (executing a process or thread) to hold a lock and retain ownership of the lock until a new request for the lock arrives.
  • the embodiment finds application in situations where a lock is repeatedly acquired and released and may find particular application in low contention situations. A 'low contention situation is one where there is a low probability that another processor will require access to the common resource. The described embodiment thus results in postponing the release of the lock when there are no new requests and this may result in fewer acquire and release operations being performed.
  • the embodiment ameliorates the need to acquire and release the lock for every iteration of the loop.
  • the method steps are shown in flow chart 200 of Fig. 2.
  • a check is made to determine whether the current requestor of the lock already has acquired the lock over the common resource (say, from a previous iteration of the loop) . If so, then no action need be taken and the necessary processing cap be carried out at step 204.
  • step 206 If the current requestor does not hold the lock over the common resource, then an attempt is made to acquire the lock over the common resource (step 206) . If the lock is successfully acquired, then the method proceeds to step 204 (carrying out the interaction with the common resource) . [0021] If, however, the resource has been locked by another processor, then the pending request variable is updated at step 208 (indicating that there is a pending request for the lock) and the method returns to step 206 and attempts to access the lock again. [0022] Returning to the scenario where lock acquisition has been successful and the necessary processing has been carried out (namely step 204), the method then proceeds to step 210 to ascertain whether there is a pending request for the lock.
  • step 212 the lock is released so that another processor may acquire the lock and utilize the common resource. If not, then the method proceeds to step 214, where the lock is retained, so that it will be available for use at the next iteration of the loop. Once step 212 or 214 is carried out by the method, the method then proceeds to step 216, where a check is made to see whether the loop condition is still valid. If so, then the method returns to step 202. Otherwise, the method proceeds to step 218, where a check is made to determine whether the lock has been released. If not, the lock is released so that other processors may acquire the lock and access the common resource.
  • a post lock release function releases the lock if it has not already been released by another request , so that the process does not maintain ownership of the lock beyond the last pas s of the loop .
  • a loop structure incorporating the ' embodiment becomes : loop (condition) ⁇ acquire_lock (mylock) ; one or more statements ; release__lock (mylock) ; ⁇ post_lock_release (mylock) ;
  • FIG. 1 Further features can be incorporated to provide for different locking modes (i.e. normal release mode locks and deferred release mode locks) . That is, the embodiment may be arranged to dynamically switch modes at runtime based on usage patterns. This allows the user to specify the desired release mode depending upon the profile of the incoming process.
  • locking modes i.e. normal release mode locks and deferred release mode locks
  • loop (condition) acquire_lock (mylock) ; do some processing; release_lock (mylock) ;
  • the embodiment for blocking locks in a similar manner to the embodiment for spinlocks, utilizes an additional pending request variable.
  • the pending variable can be implemented as a counter for the purpose of storing the number of requests pending.
  • blocking_lock_release (bl_lock)
  • thread X even though thread X is the only contender for the lock until the 7 th cycle, thread X releases and reacquires the lock at each pass through the loop. Furthermore, once thread Y has finished executing the loop, thread X still needs to repeat the same release and reacquire sequence from cycle 10 onwards.
  • the embodiment decreases the number of lock acquires and releases during the history of thread X and thread Y.
  • the number of acquires and releases may be further reduced, depending on the level , of contention. Therefore, the embodiment decreases the number of releases and requires necessary, and by doing so, may decrease the total processing time for a process.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

The invention, in one embodiment, provides a method for acquiring and releasing a lock over a common resource in a computing system. After a lock has been acquired over a common resource. A determination (210) is made as to whether another request for the common resource has been made. If the other request has been made (212), the lock over the common resource is released so that the common resource becomes available for use by the another request (218).

Description

A METHOD AND SYSTEM FOR MANAGING A COMMON RESOURCE IN A
COMPUTING SYSTEM
Technical Field
[0001] The present invention relates to the field of managing common resources in a computing system . More particularly, but not exclusively, the present invention relates to a method and system for acquiring and releasing locks in a computing system.
Background
[0002 ] Multi-processor computing systems ( i . e . systems with more than one processor) are arranged to execute multiple processes or multiple threads of the same or different processes concurrently . In the remainder of this text, the terms thread and process are used interchangeably and denote a basic schedulable entity within the computing system.
[0003] During the lifetime of a process (or thread) various common (or shared) resources are accessed . A common resource is a device or software sub-system that is shared ' and accessed by multiple processors . An example of a common resource may be a storage device such as a hard drive or a CD-ROM drive . Most common resources can only interact with a processor in a serial fashion ( i . e . the common resource can only process one request from the processor at any given time interval ) . Therefore , access to the common resource must be serialized in order to allow incoming requests to be serviced in a mutually exclusive manner . [0004] One device utilized to serialize access to a common resource is a "lock". A lock is a software flag or switch, which can be set to let a processor know whether a common resource is being utilized by another processor. When a processor (on behalf of the process it is executing) attempts to access a common resource, it will firstly acquire a lock. Once the processor has acquired the lock, other processors know that they cannot access the common resource until the lock is released. This avoids conflicts or the reading/writing of incorrect data. [0005] The manner in which a processor checks to determine whether a common resource is locked may be broadly classified into a number of categories, including:
• Spin locks: If a processor attempts to acquire a lock, but is unable to, the processor begins to loop. In each pass through the loop, the processor attempts to acquire the lock. This processor remains in the loop until the process obtains ownership of the lock.
• Blocking locks: If a processor attempts to acquire a lock but is unable to, the process is placed into hibernation. The process is explicitly woken up when ownership of the lock is relinquished. Two context switches need to be performed (once during the block operation leading to hibernation and later for unblocking the thread) during this operation.
• Combination locks: for which processes can selectively spin or block.
Summary
[0006] The invention, in one embodiment, provides a method for acquiring and releasing a lock over a common resource in a computing system. After a lock has been acquired over a common resource, a determination is made as to whether other requests for the common resource have been made. If other requests have been made, the lock over the common resource is released so that the common resource becomes available for use by the other requests .
Detailed Description of the Drawings
[0007] Features of the present invention will be presented in a description of an embodiment thereof, by¬ way of example only, with reference to the accompanying drawings, in which:
[0008] Figure 1 illustrates a typical computing system on which an embodiment of the invention may be implemented; and
[0009] Figure 2 is a flow chart illustrating the method steps of an embodiment of the- invention.
Description of a Specific Embodiment
[0010] The embodiment described herein is directed to a system and method for managing a common resource, and in particular to a system and method for acquiring and releasing locks . The embodiment is typically coded as a routine or a number of routines in a software application (such as an operating system) . However, it may also be embodied in hardware, for example in firmware in a hard disk controller , [0011] Fig . 1 shows a schematic diagram of a computing system 100 suitable for use with an embodiment of the invention . The computing system 100 may be used to execute any appropriate applications . The computing system 100 includes multiple processors 102, and may also include read-only memory (ROM) 104, random access memory (RAM) 106, and input/output devices such as disk drive 108, keyboard 110, mouse (not shown), display 112, printer (not shown) , and communications link 114. The computer includes applications that may be stored in RAM 106, ROM 104, or disk drives 108 and may be executed by the processor 102. The communications link 114 connects to a computer network but could be connected to a telephone line, an antenna, a gateway or any other type of communication channel. Disk drive 108 may include any suitable storage media, such as, for example, floppy disk drives, hard disk drives, CD ROM drives or magnetic tape drives. The computing system 100 may use a single disk drive 108 or multiple disk drives. The computing system 100 may use any suitable operating system, such as Windows™ or Unix™.
[0012] It will be understood that the computing system described in the preceding paragraphs is illustrative only, and that embodiments may be executed on any suitable computing system, with any suitable hardware and/or software .
[0013] In order to more clearly describe the embodiment, an example of a typical set of lock' acquisition and release software routines will be given. Subsequently, a set of software routines in accordance with an embodiment of the invention will be presented, so that the skilled addressee may understand how the- embodiment is enabled. [0014] The pseudo code segment shown below provides an example of the type of loop structure in which a lock is acquired and released during each iteration of a loop in a segment of program code: loop (condition) { aoquire_lock (mylock) ; do some processing; release__lock (inylock) ;
} [0015] The lock is acquired each time the loop is entered and released at the exit of each loop. The common resource is released at the end of each loop to allow another process to access the common resource, if that is desired. [0016] The embodiment described as follows, allows a processor (executing a process or thread) to hold a lock and retain ownership of the lock until a new request for the lock arrives. [0017] The embodiment finds application in situations where a lock is repeatedly acquired and released and may find particular application in low contention situations. A 'low contention situation is one where there is a low probability that another processor will require access to the common resource. The described embodiment thus results in postponing the release of the lock when there are no new requests and this may result in fewer acquire and release operations being performed.
[0018] The embodiment ameliorates the need to acquire and release the lock for every iteration of the loop. The method steps are shown in flow chart 200 of Fig. 2. [0019] At step 202, a check is made to determine whether the current requestor of the lock already has acquired the lock over the common resource (say, from a previous iteration of the loop) . If so, then no action need be taken and the necessary processing cap be carried out at step 204.
[0020] If the current requestor does not hold the lock over the common resource, then an attempt is made to acquire the lock over the common resource (step 206) . If the lock is successfully acquired, then the method proceeds to step 204 (carrying out the interaction with the common resource) . [0021] If, however, the resource has been locked by another processor, then the pending request variable is updated at step 208 (indicating that there is a pending request for the lock) and the method returns to step 206 and attempts to access the lock again. [0022] Returning to the scenario where lock acquisition has been successful and the necessary processing has been carried out (namely step 204), the method then proceeds to step 210 to ascertain whether there is a pending request for the lock. If there is a pending request, the method proceeds to step 212, where the lock is released so that another processor may acquire the lock and utilize the common resource. If not, then the method proceeds to step 214, where the lock is retained, so that it will be available for use at the next iteration of the loop. Once step 212 or 214 is carried out by the method, the method then proceeds to step 216, where a check is made to see whether the loop condition is still valid. If so, then the method returns to step 202. Otherwise, the method proceeds to step 218, where a check is made to determine whether the lock has been released. If not, the lock is released so that other processors may acquire the lock and access the common resource.
[0023] The pseudo code provided below embodies the steps outlined above : lock_acquire (lock)
{ if (lock already held) { return; } else while (test_and_set (lock) ) { set: pending request field;
} clear pending request field; }
[0024] The lock is released only if no new request for the lock has arrived. Otherwise, the processor continues to hold the lock at the exit from the release primitive, as shown in the pseudo code below: lock_release (lock)
{ if (pending request field is set) { release lock;
} }
[0025] Once the loop has finished executing, a post lock release function releases the lock if it has not already been released by another request , so that the process does not maintain ownership of the lock beyond the last pas s of the loop .
[0026] The post release lock function is outlined in the pseudo code below . post_lock_release (lock)
{ if (lock is currently being held) { release lock ; } }
[0027] Therefore, a loop structure incorporating the ' embodiment becomes : loop (condition) { acquire_lock (mylock) ; one or more statements ; release__lock (mylock) ; } post_lock_release (mylock) ;
[0028] Further features can be incorporated to provide for different locking modes (i.e. normal release mode locks and deferred release mode locks) . That is, the embodiment may be arranged to dynamically switch modes at runtime based on usage patterns. This allows the user to specify the desired release mode depending upon the profile of the incoming process.
[0029] The optimization mechanism described in this document is not restricted to spinlocks alone and can be utilized with other synchronization mechanisms.
[0030] For example, the same methodology may be utilized in an application where blocking locks are utilized. The loop structure utilizing a typical blocking lock is similar, and appears as follows: loop (condition) { acquire_lock (mylock) ; do some processing; release_lock (mylock) ;
}
[0031] The embodiment for blocking locks, in a similar manner to the embodiment for spinlocks, utilizes an additional pending request variable. However, unlike the spin lock, when a thread blocks it is unable to repeatedly set the pending variable until it acquires the lock. Hence, the pending variable can be implemented as a counter for the purpose of storing the number of requests pending. [0032 ] When the blocking lock is to be acquired, a similar sequence is followed. Namely, if the lock is already acquired, no action is necessary, and the function returns , as follows : acquire_blocking_lock (bl_lock)
{ if (lock already owned) return;
} else if (lock is not free) { increment: pending variable; sleep;
} decrement pending variable ;
}
[0033] Similarly, when releasing the blocking lock: blocking_lock_release (bl_lock)
{ if (value of pending variable > 0) { release lock; wakeup;
} }
[0034] There is also provided a routine to release the blocking lock at the end of the last iteration through the loop, namely: post_blocking_lock_release(bl_lock)
{ if (lock still owned by the caller) { release lock; wakeup; > [0035] As with the spin lock embodiment, the lock is released at the exit of the loop, so that other processes may access the common *resource.
[0036] A simplified worked example will now be provided utilizing the spin lock embodiment described earlier, namely: loop (condition) A
{ acquire_lock (mylock) ; B one or more statements; release__lock (mylock) ; C
} expression statement; D [0037] In the example, it is assumed that there are two threads, thread X and thread Y. Each thread attempts to access the same common resource. It is assumed that thread X will iterate though the loop five times whereas thread Y will iterate only once.
[0038] For illustrative purposes, a simplified execution cycle is assumed, such that each statement in the above pseudo-code takes one cycle to complete. Also, for the sake of brevity, statement (s) between B and C have not been shown in the tables given below. Furthermore, threfed Y starts execution of the loop code from the 6th cycle and lock requests will be serviced in first come, first served order.
[0039] In a table format (Table 1), the described sequence appears as follows:
Figure imgf000011_0001
Table 1
[0040] The asterisk (*) indicates that the thread successfully obtained the lock.
According to an existing implementation, even though thread X is the only contender for the lock until the 7th cycle, thread X releases and reacquires the lock at each pass through the loop. Furthermore, once thread Y has finished executing the loop, thread X still needs to repeat the same release and reacquire sequence from cycle 10 onwards.
[0041] When implementing the spin lock embodiment described herein, the sequence remains the same. However, the. number of acquires and releases decreases as shown in Table 2 below:
Figure imgf000012_0001
Table 2
[0042] Where the cross (+) indicates that the release of the lock was deferred, as no new request had arrived. As the release of the lock is deferred, there is no requirement to reacquire the lock again. [0043] As can be seen, the embodiment, in the simplified example given, decreases the number of lock acquires and releases during the history of thread X and thread Y. In a significantly more complex example, it will be appreciated that the number of acquires and releases may be further reduced, depending on the level , of contention. Therefore, the embodiment decreases the number of releases and requires necessary, and by doing so, may decrease the total processing time for a process. [0044] It will be appreciated by persons skilled in the art that numerous variations and/or modifications may be made to the invention as shown in the specific embodiments without departing from the spirit or scope of the invention as broadly described. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive .

Claims

CLAIMS :
1. A method for acquiring and releasing locks to manage a common resource in a computing system, comprising the steps of, after a lock has been acquired over a common resource, determining whether other requests for the common resource has been made, and if the other requests have been made, releasing the lock over the common resource so that the common resource becomes available for use by the other requests.
2. A method in accordance with claim 1, comprising the further step of, when the lock has been acquired but not released during iteration of a loop, releasing the lock at the termination of the loop.
3. A method in accordance with claim 2, comprising the further step of determining whether the other requests for the common resource have been made, by examining a pending request variable arranged to store a value indicative of whether the other requests for the common resource have been made.
4. A method in accordance' with claim 2, comprising the further step of, during the step of acquiring the lock, checking to determine whether the lock is already acquired by the current requestor, and if so, taking no action to attempt to acquire the lock.
5. A method in accordance with claim 3, comprising the further step of, during the step of acquiring the lock, if the lock is acquired successfully, setting the pending request variable to a value which indicates that the current lock request has been satisifed.
6. A method in accordance with claim 3, comprising the further step of, during the step of acquiring the lock, if the lock cannot be acquired, setting the pending request variable to a value which indicates that there are other pending requests for the lock.
7. A system for acquiring and releasing locks to manage a common resource in a computing system, comprising means to acquire a lock over a common resource, means to determine whether another request for the common resource has been made once the lock is acquired, and releasing means arranged to, if the another request has been made, release the lock over the common resource wherein the common resource becomes available for use by the another request.
8. A system in accordance with claim 7, comprising means arranged to release the lock at the termination of a loop, when the lock has been acquired but not released during iteration of the loop.
9. A system in accordance with claim 8, comprising the provision of means to contain a pending request variable arranged to store a value, wherein the determining means examines the pending request variable to determine whether other requests for the common resource have been made.
10. A system in accordance with claim 8, wherein the determining means determines whether the lock is already acquired by the current requestor, and if so, takes no action to attempt to acquire the lock.
11. A system in accordance with claim 9, wherein, if the lock is acquired successfully, the pending request variable is set to a value which indicates that there are no other requests for the lock.
12. A system in accordance with claim 9, wherein, if the lock cannot be acquired, the pending request variable is set to a value which indicates that there are other pending requests for the lock.
13. A computer readable medium provided with program data that, when loaded onto a computing system, executes the method steps of any one of claims 1 to 6.
PCT/IN2005/000058 2005-02-23 2005-02-23 A method and system for managing a common resource in a computing system Ceased WO2006090403A2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/884,790 US20080256547A1 (en) 2005-02-23 2005-02-23 Method and System For Managing a Common Resource In a Computing System
PCT/IN2005/000058 WO2006090403A2 (en) 2005-02-23 2005-02-23 A method and system for managing a common resource in a computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IN2005/000058 WO2006090403A2 (en) 2005-02-23 2005-02-23 A method and system for managing a common resource in a computing system

Publications (2)

Publication Number Publication Date
WO2006090403A2 true WO2006090403A2 (en) 2006-08-31
WO2006090403A3 WO2006090403A3 (en) 2006-12-07

Family

ID=36927837

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IN2005/000058 Ceased WO2006090403A2 (en) 2005-02-23 2005-02-23 A method and system for managing a common resource in a computing system

Country Status (2)

Country Link
US (1) US20080256547A1 (en)
WO (1) WO2006090403A2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996848B1 (en) * 2006-01-03 2011-08-09 Emc Corporation Systems and methods for suspending and resuming threads
US7805403B2 (en) 2007-01-07 2010-09-28 Apple Inc. Synchronization methods and systems
KR101040193B1 (en) * 2008-10-09 2011-06-09 한국전자통신연구원 Method and apparatus for providing service in ubiquitous computing environment
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
US6105085A (en) * 1997-12-26 2000-08-15 Emc Corporation Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion
US6374285B1 (en) * 1998-05-15 2002-04-16 Compaq Computer Corporation Method for mutual exclusion of locks in a remote-write globally ordered network of processors
US6934950B1 (en) * 2000-06-06 2005-08-23 International Business Machines Corporation Thread dispatcher for multi-threaded communication library
US7093230B2 (en) * 2002-07-24 2006-08-15 Sun Microsystems, Inc. Lock management thread pools for distributed data systems
US8095657B2 (en) * 2002-07-24 2012-01-10 Oracle America, Inc. First thread lock management for distributed data systems
US7849098B1 (en) * 2004-02-06 2010-12-07 Vmware, Inc. Providing multiple concurrent access to a file system

Also Published As

Publication number Publication date
US20080256547A1 (en) 2008-10-16
WO2006090403A3 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
US5706515A (en) System and method for implementing an atomic wait for notification operation
US6792601B1 (en) Multiple mode object locking method and system
US6845504B2 (en) Method and system for managing lock contention in a computer system
US9384049B2 (en) Preventing unnecessary context switching by employing an indicator associated with a lock on a resource
US6772153B1 (en) Method and apparatus to provide concurrency control over objects without atomic operations on non-shared objects
EP2936311B1 (en) System and method for implementing scalable contention-adaptive statistics counters
US20100250809A1 (en) Synchronization mechanisms based on counters
US20090320028A1 (en) System and method for load-adaptive mutual exclusion with waiting process counts
US20020083063A1 (en) Software and data processing system with priority queue dispatching
EP2936312B1 (en) System and method for implementing shared probabilistic counters storing update probability values
US8918596B2 (en) System and method for implementing NUMA-aware statistics counters
EP1163581B1 (en) Monitor conversion in a multi-threaded computer system
US20080256547A1 (en) Method and System For Managing a Common Resource In a Computing System
US8276147B2 (en) Low synchronization means of scheduler finalization
EP1693743A2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
US8943502B2 (en) Retooling lock interfaces for using a dual mode reader writer lock
CN112612582B (en) Semaphore function implementation method and device
Züpke Deterministic fast user space synchronization
US7447875B1 (en) Method and system for management of global queues utilizing a locked state
US20080134190A1 (en) Method and Apparatus of Resource Access Synchronization in a Basic Input and Output System of a Computer System
CN120596169B (en) Methods, apparatus, equipment, and storage media for processing multi-core system boot tasks
CN117857614B (en) A SESSION processing system for network data streams in multi-core scenarios
Kim et al. Pessimistic Deadline Ceiling Protocol: a concurrency control protocol under earliest deadline first scheduling
CA2322613A1 (en) Latch mechanism for concurrent computing environments

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 11884790

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05718962

Country of ref document: EP

Kind code of ref document: A2

WWW Wipo information: withdrawn in national office

Ref document number: 5718962

Country of ref document: EP