Patent US6134627A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6134627A Expired / Lapsed US ⏱️ 0.0 years remaining

Thread synchronization in a computer controlled by an object-based program

Assignee: Oracle America Inc
•
Filing: 1996-11-04
•
Granted: 2000-10-17
•
Expires: 2016-11-04
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for synchronizing threads in a computer operating under control of a program written in an object-based computer programming language provides for a first thread to lock an object by moving the object header to a stack address and replacing the header with the stack address. The first thread unlocks the object by returning the header to its associated memory location. Second and subsequent threads attempting to access a locked object detect the presence of the stack address in the header memory location and suspend their attempts to access the object. When using aligned stacks, all stack addresses will be even, and all object-headers will be odd. Threads efficiently check the status of the object by testing the least significant bit. A preferred method is implemented in a "JAVA" just-in-time compiler of a "JAVA" virtual machine.

Inventors

  • 👤 Lars Bak

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-07 13:03
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/52; G06F9/44; G06F9/448; G06F9/4488

Claims Analysis

Total Claims: 28
Claim 1
Independent Claim 177 words
A method for controlling operations on an object in a computer operating under control of an object-based program, said object having an object header, an associated operation, and an associated state characteristic, the object header being integrally associated with the object, said method comprising: establishing the object in a memory region, wherein a portion of the memory region is associated with the object header; placing a predetermined pattern into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.
Claim 2
Independent Claim 177 words
A method for controlling operations on an object in a computer operating under control of an object-based program, said object having an object header, an associated operation, and an associated state characteristic, the object header being integrally associated with the object, said method comprising: establishing the object in a memory region, wherein a portion of the memory region is associated with the object header; placing a predetermined pattern into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.
Claim 3
Dependent Claim 19 words
The method of claim 1 further including moving the object header to a stack associated with the first thread.
Claim 4
Dependent Claim 22 words
The method of claim 1 further including swapping the object header with an address in a stack associated with the first thread.
Claim 5
Dependent Claim 25 words
The method of claim 1 wherein the predetermined pattern includes at least one bit uniquely identifying the pattern as not that of any object header.
Claim 6
Dependent Claim 24 words
The method of claim 1 wherein the predetermined pattern includes a single bit uniquely identifying the pattern as not that of any object header.
Claim 7
Dependent Claim 34 words
The method of claim 1 further including: copying the object header to a second memory location; and placing an address of the second memory location into the memory region associated with the object header.
Claim 8
Dependent Claim 32 words
The method of claim 6 wherein: the second memory address has a first value in a predetermined bit position; and the object header has a second value in the predetermined bit position.
Claim 9
Dependent Claim 37 words
The method of claim 6 wherein: the predetermined pattern is an address location of a stack associated with the first thread; and all stack addresses contain at least one unique bit pattern relative to all object headers.
Claim 10
Dependent Claim 41 words
The method of claim 1 wherein placing the predetermined pattern into the portion of the memory region associated with the object header using the first thread locks the object such that substantially only the first thread has access to the object.
Claim 11
Dependent Claim 46 words
A method as recited in claim 1 further including: removing the predetermined pattern from the portion of the memory region associated with the object header using the first thread, wherein removing the predetermined pattern from the memory region associated with the object header unlocks the object.
Claim 12
Dependent Claim 26 words
A method as recited in claim 10 further including: reattempting to access the object using the second thread; and locking the object using the second thread.
Claim 13
Dependent Claim 36 words
A method as recited in claim 11 wherein locking the object using the second thread includes placing the predetermined pattern into the portion of the memory region associated with the object header using the second thread.
Claim 14
Independent Claim 168 words
A method for controlling operations on an object in a computer operating under control of an object-based program, said object having an object header, said method comprising: establishing the object in a memory region, wherein a portion of the memory region is associated with the object header; placing a predetermined pattern into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header; moving the object header to a second memory location.
Claim 15
Independent Claim 168 words
A method for controlling operations on an object in a computer operating under control of an object-based program, said object having an object header, said method comprising: establishing the object in a memory region, wherein a portion of the memory region is associated with the object header; placing a predetermined pattern into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header; moving the object header to a second memory location.
Claim 16
Dependent Claim 199 words
A virtual machine arranged to execute program instructions from an object-based language, the virtual machine comprising: a plurality of objects, each object nominally including an object header and a body, each object further including an operation and a state characteristic, said object header including information stored in a first region of memory, wherein said body is stored in a second region of memory; and a plurality of threads, each thread of the plurality of threads having an associated stack, multiple ones of said plurality of threads being arranged to attempt to access a common one of the objects, each thread of the multiple ones of the plurality of threads being prevented from accessing the common one of the objects when the first region of memory associated with the object header of the common one of the objects contains a predetermined pattern, each thread of the multiple ones of the plurality of threads further being arranged to determine when the first region of memory associated with the object header of the common one of the objects contains the predetermined pattern, wherein the predetermined pattern identifies a particular thread selected from the plurality of threads as having access to the object.
Claim 17
Dependent Claim 199 words
A virtual machine arranged to execute program instructions from an object-based language, the virtual machine comprising: a plurality of objects, each object nominally including an object header and a body, each object further including an operation and a state characteristic, said object header including information stored in a first region of memory, wherein said body is stored in a second region of memory; and a plurality of threads, each thread of the plurality of threads having an associated stack, multiple ones of said plurality of threads being arranged to attempt to access a common one of the objects, each thread of the multiple ones of the plurality of threads being prevented from accessing the common one of the objects when the first region of memory associated with the object header of the common one of the objects contains a predetermined pattern, each thread of the multiple ones of the plurality of threads further being arranged to determine when the first region of memory associated with the object header of the common one of the objects contains the predetermined pattern, wherein the predetermined pattern identifies a particular thread selected from the plurality of threads as having access to the object.
Claim 18
Dependent Claim 123 words
A virtual machine arranged to execute program instructions according to claim 14 further including: a first thread selected from the plurality of threads, the first thread being arranged to place the predetermined pattern in the first region of memory associated with the object header of a first object selected from the plurality of objects, wherein the first thread is the particular thread; and a second thread selected from the plurality of threads, the second thread being arranged to inspect the first region of memory associated with the object header of the first object, wherein the second thread is further arranged to determine when the predetermined pattern is present in the first region of memory associated with the object header of the first object.
Claim 19
Dependent Claim 68 words
A virtual machine arranged to execute program instructions according to claim 15 wherein the second thread is further arranged to suspend access by the second thread to portions of the first object not including the first region of memory associated with the object header of the first object when the predetermined pattern is in the first region of memory associated with the object header of the first object.
Claim 20
Dependent Claim 121 words
A virtual machine arranged to execute program instructions according to claim 14 further including: a first thread selected from the plurality of threads, the first thread being arranged to place the predetermined pattern in the first region of memory associated with the object header of a first object selected from the plurality of objects, the predetermined pattern being arranged to indicate that the first object is locked, wherein the first thread is the particular thread; and a second thread selected from the plurality of threads, the second thread being arranged to inspect the first region of memory associated with the object header of the first object, wherein the second thread is further arranged to determine when the first object is locked.
Claim 21
Independent Claim 124 words
A method for controlling operations on an object in an object-based computing system, the object having an object header integrally associated with the object, an operation, and a state characteristic, the method comprising: establishing the object in a memory region, wherein establishing the object in the memory region includes establishing the object header in the memory region; placing a predetermined pattern into the object header, the predetermined pattern being placed into the object header using a first thread, wherein placing the predetermined pattern into the object header locks the object; accessing the object header using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the object header.
Claim 22
Independent Claim 124 words
A method for controlling operations on an object in an object-based computing system, the object having an object header integrally associated with the object, an operation, and a state characteristic, the method comprising: establishing the object in a memory region, wherein establishing the object in the memory region includes establishing the object header in the memory region; placing a predetermined pattern into the object header, the predetermined pattern being placed into the object header using a first thread, wherein placing the predetermined pattern into the object header locks the object; accessing the object header using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the object header.
Claim 23
Dependent Claim 183 words
A computer program product for controlling operations on an object in an object-based computing system, the object having an object header integrally associated with the object, an operation, and a state characteristic, the computer program product comprising: computer code that establishes the object in a memory region, wherein a portion of the memory region is associated with the object header; computer code that places a predetermined pattern into the portion of the memory region associated with the object header, the predetermined pattern being placed into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region associated with the object header locks the object; computer code that accesses the portion of the memory region associated with the object header using a second thread; computer code that temporarily suspends access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region associated with the object header; and a computer readable medium that stores the computer codes.
Claim 24
Dependent Claim 183 words
A computer program product for controlling operations on an object in an object-based computing system, the object having an object header integrally associated with the object, an operation, and a state characteristic, the computer program product comprising: computer code that establishes the object in a memory region, wherein a portion of the memory region is associated with the object header; computer code that places a predetermined pattern into the portion of the memory region associated with the object header, the predetermined pattern being placed into the portion of the memory region associated with the object header using a first thread, wherein placing the predetermined pattern into the portion of the memory region associated with the object header locks the object; computer code that accesses the portion of the memory region associated with the object header using a second thread; computer code that temporarily suspends access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region associated with the object header; and a computer readable medium that stores the computer codes.
Claim 25
Independent Claim 218 words
A method for controlling operations on an object in a computer operating under control of an object-based program, the object including an object header, an associated operation, and an associated state characteristic, the method comprising: establishing the object in a memory region, wherein the object header is at least temporarily present in a portion of the memory region, the portion of the memory region being associated with the object header; moving the object header from the portion of the memory region associated with the object header, wherein the object header is moved to a stack location, the stack location being associated with a first thread; placing a predetermined pattern into the portion of the memory region associated with the object header using the first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.
Claim 26
Independent Claim 218 words
A method for controlling operations on an object in a computer operating under control of an object-based program, the object including an object header, an associated operation, and an associated state characteristic, the method comprising: establishing the object in a memory region, wherein the object header is at least temporarily present in a portion of the memory region, the portion of the memory region being associated with the object header; moving the object header from the portion of the memory region associated with the object header, wherein the object header is moved to a stack location, the stack location being associated with a first thread; placing a predetermined pattern into the portion of the memory region associated with the object header using the first thread, wherein placing the predetermined pattern into the portion of the memory region that is associated with the object header locks the object; attempting to access the object using a second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header, wherein the second thread effectively determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.
Claim 27
Independent Claim 253 words
A method for controlling operations on an object in a computer operating under control of an object-based program, the object including at least an object header and an associated operation, the method comprising: establishing the object in a memory region, wherein the object header is at least temporarily present in a portion of the memory region, the portion of the memory region being associated with the object header; moving the object header from the portion of the memory region associated with the object header, wherein the object header is moved to a stack location on a stack associated with the first thread; placing a predetermined pattern into the portion of the memory region associated with the object header using the first thread, wherein placing the predetermined pattern into the portion of the memory region associated with the object header identifies the first thread as having access to the object; attempting to access the object using a second thread, wherein attempting to access the object using the second thread includes determining when the predetermined pattern is present in the portion of the memory region associated with the object header using the second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header when the second thread determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.
Claim 28
Independent Claim 253 words
A method for controlling operations on an object in a computer operating under control of an object-based program, the object including at least an object header and an associated operation, the method comprising: establishing the object in a memory region, wherein the object header is at least temporarily present in a portion of the memory region, the portion of the memory region being associated with the object header; moving the object header from the portion of the memory region associated with the object header, wherein the object header is moved to a stack location on a stack associated with the first thread; placing a predetermined pattern into the portion of the memory region associated with the object header using the first thread, wherein placing the predetermined pattern into the portion of the memory region associated with the object header identifies the first thread as having access to the object; attempting to access the object using a second thread, wherein attempting to access the object using the second thread includes determining when the predetermined pattern is present in the portion of the memory region associated with the object header using the second thread; and at least temporarily suspending access to the object by the second thread in response to the presence of the predetermined pattern in the portion of the memory region that is associated with the object header when the second thread determines that the predetermined pattern is present in the portion of the memory region that is associated with the object header.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-10-17 2004-04-17 2004-10-17 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-10-17 2008-04-17 2008-10-17 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-10-17 2012-04-17 2012-10-17 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag