US5623670A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method and apparatus for crash safe enforcement of mutually exclusive access to shared resources in a multitasking computer system
Assignee: Nokia of America Corp
•
Filing: 1995-02-17
•
Granted: 1997-04-22
•
Expires: 2015-02-17
Abstract
Abstract A fast crash safe method and apparatus for enforcing mutually exclusive access to shared resources in a computer system through the use of semaphores. The acquisition and release of the semaphores is implemented at the user process level. An overestimate and underestimate of semaphore ownership are maintained in memory by library provided semaphore acquisition and release code. A cleanup routine reconciles the overestimate and underestimate to determine the ownership status of the semaphores.
Inventors
- 👤 Philip L. Bohannon
- 👤 Jacques Gava
- 👤 Daniel F. Lieuwen
- 👤 Sundararajarao Sudarshan
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-30 04:53
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/52
Claims Analysis
Total Claims: 31
Claim 1
Independent Claim
230 words
A computer system comprising: at least one processing unit; a plurality of shared resources, including a memory unit, accessible by said at least one processing unit; a plurality of semaphore records stored in said memory unit, each of said semaphore records associated with one of said plurality of shared resources, wherein each of said semaphore records comprises: a) availability indicia means for indicating whether the semaphore record is available, b) owner identification means for registering ownership of the semaphore record, and c) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup routine; a plurality of processes executing on said plurality of processing units, said processes requesting and acquiring exclusive access to said plurality of shared resources by requesting and acquiring ownership of said semaphore records; and a plurality of semaphore access records stored in said memory unit, each of said semaphore access records associated with one of said plurality of processes, for identifying a semaphore record which said process associated with said semaphore access record wants to acquire ownership of; wherein said cleanup routine comprises means for determining whether a semaphore record is owned by a process that has crashed by using information in said semaphore records and said semaphore access records and means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
Claim 2
Dependent Claim
230 words
A computer system comprising: at least one processing unit; a plurality of shared resources, including a memory unit, accessible by said at least one processing unit; a plurality of semaphore records stored in said memory unit, each of said semaphore records associated with one of said plurality of shared resources, wherein each of said semaphore records comprises: a) availability indicia means for indicating whether the semaphore record is available, b) owner identification means for registering ownership of the semaphore record, and c) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup routine; a plurality of processes executing on said plurality of processing units, said processes requesting and acquiring exclusive access to said plurality of shared resources by requesting and acquiring ownership of said semaphore records; and a plurality of semaphore access records stored in said memory unit, each of said semaphore access records associated with one of said plurality of processes, for identifying a semaphore record which said process associated with said semaphore access record wants to acquire ownership of; wherein said cleanup routine comprises means for determining whether a semaphore record is owned by a process that has crashed by using information in said semaphore records and said semaphore access records and means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
Claim 3
Dependent Claim
59 words
The apparatus of claim 1 further comprising: means for storing identification of a semaphore record in a semaphore access record associated with a process before said process attempts to acquire said semaphore record; and means for storing identification of a process in the owner identification of a semaphore record after said process has acquired ownership of the semaphore record.
Claim 4
Dependent Claim
58 words
The apparatus of claim 1 further comprising: means for removing identification of a process from the owner identification of a semaphore record before said process releases ownership of said semaphore record; and means for removing identification of a semaphore record from a semaphore access record associated with a process after said process releases ownership of said semaphore record.
Claim 5
Dependent Claim
37 words
The apparatus of claim 1 further comprising: means for preventing a process from acquiring a semaphore record when said cleanup indicia of said semaphore record indicates that said semaphore record is being evaluated by said cleanup routine.
Claim 6
Dependent Claim
223 words
A crash safe system for enforcing mutually exclusive access to shared data in a computer system comprising: at least one processing unit; a memory unit connected to said at least one processing unit for storing a plurality of data structures and a semaphore access structure and a semaphore structure; a plurality of semaphore records, each associated with one of said plurality of data structures, comprising availability indicia for indicating whether said semaphore record is available, said semaphore records being stored in said semaphore structure in said memory unit; a plurality of semaphore access records stored in said semaphore access structure in said memory unit; a plurality of processes executing on said at least one processing unit, said processes requesting and acquiring exclusive access to said data structures by requesting and acquiring ownership of said semaphore records; means for maintaining an underestimate of semaphore ownership in said memory unit; and means for maintaining an overestimate of semaphore ownership in said memory unit; and cleanup means operating on said semaphore records and said semaphore access records for determining whether a semaphore record is owned by a process that has crashed by evaluating said underestimate of semaphore ownership and said overestimate of semaphore ownership and for resetting the availability indicia of a semaphore record when the semaphore record is owned by said process that has crashed.
Claim 7
Dependent Claim
223 words
A crash safe system for enforcing mutually exclusive access to shared data in a computer system comprising: at least one processing unit; a memory unit connected to said at least one processing unit for storing a plurality of data structures and a semaphore access structure and a semaphore structure; a plurality of semaphore records, each associated with one of said plurality of data structures, comprising availability indicia for indicating whether said semaphore record is available, said semaphore records being stored in said semaphore structure in said memory unit; a plurality of semaphore access records stored in said semaphore access structure in said memory unit; a plurality of processes executing on said at least one processing unit, said processes requesting and acquiring exclusive access to said data structures by requesting and acquiring ownership of said semaphore records; means for maintaining an underestimate of semaphore ownership in said memory unit; and means for maintaining an overestimate of semaphore ownership in said memory unit; and cleanup means operating on said semaphore records and said semaphore access records for determining whether a semaphore record is owned by a process that has crashed by evaluating said underestimate of semaphore ownership and said overestimate of semaphore ownership and for resetting the availability indicia of a semaphore record when the semaphore record is owned by said process that has crashed.
Claim 8
Dependent Claim
74 words
The apparatus of claim 5 wherein said means for maintaining an overestimate of semaphore ownership further comprises: means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record; and means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record.
Claim 9
Dependent Claim
72 words
The apparatus of claim 5 wherein said means for maintaining an underestimate of semaphore ownership further comprises: means for storing in said memory unit an identification of a process which owns a semaphore record, subsequent to said process acquiring ownership of said semaphore record; and means for removing from said memory unit said identification of a process which owns a semaphore record, prior to said process releasing ownership of said semaphore record.
Claim 10
Dependent Claim
24 words
The apparatus of claim 5 further comprising: means for terminating a process which has not progressed for at least a predetermined period of time.
Claim 11
Dependent Claim
31 words
The apparatus of claim 5 further comprising: a plurality of cleanup indicators stored in said memory unit for indicating whether said cleanup means is operating on said plurality of semaphore records.
Claim 12
Dependent Claim
38 words
The apparatus of claim 9 further comprising: means for preventing a process from acquiring ownership of a semaphore record when one of said plurality of cleanup indicator indicates that said cleanup means is operating on said semaphore record.
Claim 13
Dependent Claim
27 words
The apparatus of claim 5 further comprising: means for initiating said cleanup means when a semaphore record has been unavailable for at least a predetermined time period.
Claim 14
Independent Claim
214 words
A method for enforcing mutually exclusive access to shared resources in a computer system, wherein each of said shared resources has an associated semaphore stored in a memory unit, said method comprising the steps of: initiating execution of a first routine when a first process wants access to a shared resource, wherein said first routine comprises the steps of: storing in memory an indication that said first process wants to acquire ownership of said semaphore associated with said shared resource, acquiring ownership of said semaphore associated with said shared resource, and storing in memory an indication that said process is the registered owner of said semaphore; and initiating the execution of a second routine when said first process wants to release said shared resource, wherein said second routine comprises the steps of: storing in memory an indication that said first process is not the registered owner of the semaphore associated with said shared resource, releasing said semaphore, and storing in memory an indication that said process does not want to acquire ownership of said semaphore; and initiating the execution of a cleanup routine for said semaphore whenever said first process crashes prior to releasing said semaphore while an indication that a second process wants to acquire ownership of said semaphore is stored in memory.
Claim 15
Independent Claim
214 words
A method for enforcing mutually exclusive access to shared resources in a computer system, wherein each of said shared resources has an associated semaphore stored in a memory unit, said method comprising the steps of: initiating execution of a first routine when a first process wants access to a shared resource, wherein said first routine comprises the steps of: storing in memory an indication that said first process wants to acquire ownership of said semaphore associated with said shared resource, acquiring ownership of said semaphore associated with said shared resource, and storing in memory an indication that said process is the registered owner of said semaphore; and initiating the execution of a second routine when said first process wants to release said shared resource, wherein said second routine comprises the steps of: storing in memory an indication that said first process is not the registered owner of the semaphore associated with said shared resource, releasing said semaphore, and storing in memory an indication that said process does not want to acquire ownership of said semaphore; and initiating the execution of a cleanup routine for said semaphore whenever said first process crashes prior to releasing said semaphore while an indication that a second process wants to acquire ownership of said semaphore is stored in memory.
Claim 16
Dependent Claim
46 words
The method of claim 12 wherein said step of initiating the execution of a cleanup routine for a semaphore further comprises the step: initiating the execution of a cleanup routine for a semaphore when said semaphore has been unavailable for at least a predetermined time period.
Claim 17
Dependent Claim
46 words
The method of claim 12 wherein said first routine further comprises the steps: determining if said cleanup routine is being executed for a semaphore; and waiting for said cleanup routine to terminate before acquiring said semaphore whenever a cleanup routine is being executed for a semaphore.
Claim 18
Dependent Claim
159 words
The method of claim 12 wherein said cleanup routine comprises the steps: generating an overestimate set of processes which want to acquire the semaphore by employing means for maintaining an overestimate of semaphore ownership in said memory unit including means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record and means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record; removing a process from the overestimate set when said process no longer wants to acquire the semaphore or said process is dead; determining if the semaphore is held by a process when said overestimate set is empty; and recovering said resource associated with said semaphore and releasing said semaphore whenever said semaphore is held by a process when said overestimate set is empty.
Claim 19
Dependent Claim
28 words
The method of claim 15 wherein said cleanup routine further comprises the step: terminating a process which has not progressed for at least a predetermined period of time.
Claim 20
Dependent Claim
62 words
The method of claim 12 wherein said cleanup routine comprises the steps: determining if there is a registered owner of the semaphore and if the registered owner is a dead process; and if there is a registered owner of the semaphore and if the registered owner is a dead process, then recovering the resource associated with the semaphore and releasing the semaphore.
Claim 21
Independent Claim
215 words
A method of enforcing mutually exclusive access to shared resources in a computer system, said computer system comprising a memory unit and a plurality of processes executing on at least one processing unit, wherein said exclusive access to a shared resource is gained by acquiring a semaphore associated with the shared resource, the method comprising the steps: registering in said memory unit an intention of one process of said plurality of processes to acquire a semaphore prior to said one process attempting to acquire said semaphore; registering in said memory unit said one process as the owner of said semaphore after said one process acquires said semaphore; deregistering in said memory unit said one process as the owner of said semaphore before said process releases said semaphore; deregistering in said memory unit said intention of said one process to acquire a semaphore after said process releases the semaphore; whereby an underestimate of said one process has the semaphore and an overestimate of said one process has the semaphore are generated; determining if said underestimate matches said overestimate and, determining that a crash has occurred whenever said underestimate does not match said overestimate; and initiating the execution of a cleanup routine for a semaphore when a process which registered its intention to acquire said semaphore crashes.
Claim 22
Independent Claim
215 words
A method of enforcing mutually exclusive access to shared resources in a computer system, said computer system comprising a memory unit and a plurality of processes executing on at least one processing unit, wherein said exclusive access to a shared resource is gained by acquiring a semaphore associated with the shared resource, the method comprising the steps: registering in said memory unit an intention of one process of said plurality of processes to acquire a semaphore prior to said one process attempting to acquire said semaphore; registering in said memory unit said one process as the owner of said semaphore after said one process acquires said semaphore; deregistering in said memory unit said one process as the owner of said semaphore before said process releases said semaphore; deregistering in said memory unit said intention of said one process to acquire a semaphore after said process releases the semaphore; whereby an underestimate of said one process has the semaphore and an overestimate of said one process has the semaphore are generated; determining if said underestimate matches said overestimate and, determining that a crash has occurred whenever said underestimate does not match said overestimate; and initiating the execution of a cleanup routine for a semaphore when a process which registered its intention to acquire said semaphore crashes.
Claim 23
Dependent Claim
26 words
The method of claim 18 further comprising the step: preventing a process from acquiring a semaphore when said cleanup routine has been initiated for said semaphore.
Claim 24
Dependent Claim
25 words
The method of claim 18 further comprising the step of: terminating a process which has not progressed for at least a predetermined period of time.
Claim 25
Dependent Claim
31 words
The method of claim 18 further comprising the step: initiating execution of a cleanup routine for a semaphore when said semaphore has been unavailable for at least a predetermined time period.
Claim 26
Dependent Claim
26 words
The method of claim 21 further comprising the step: preventing a process from acquiring a semaphore when said cleanup routine has been initiated for said semaphore.
Claim 27
Dependent Claim
24 words
The method of claim 21 further comprising the step: terminating a process which has not progressed for at least a predetermined period of time.
Claim 28
Dependent Claim
391 words
A computer system, comprising: A) at least one processing unit; B) a plurality of shared resources accessible by each processing unit and including a memory unit; C) a plurality of semaphore records stored in said memory unit and containing an owner identification for registering ownership of the semaphore record; D) a plurality of processes executing on said processing unit(s), said processes requesting and acquiring exclusive access to said shared resources by requesting and acquiring ownership of said semaphore records; E) a plurality of semaphore access records stored in said memory unit, each of which is associated with one of said processes, for identifying a semaphore record which the process associated with said semaphore access record wants to acquire ownership of; F) means for maintaining an underestimate of semaphore ownership comprising: i) means for storing in said memory unit an identification of a process which owns a semaphore record, subsequent to said process acquiring ownership of said semaphore record; and ii) means for removing from said memory unit said identification of a process which owns a semaphore record, prior to said process releasing ownership of said semaphore record; G) means for maintaining an overestimate of semaphore ownership comprising: i) means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record; and ii) means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record; H) means for determining whether the underestimate obtained in F) matches the overestimate obtained in G); wherein each of said semaphore records is associated with one of said shared resources and comprises: A) availability indicia for indicating whether the semaphore record is available; and B) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup means; wherein said cleanup means is activated when the underestimate obtained in F) does not match the overestimate obtained in G) and comprises: A) means for determining whether a semaphore record is owned by a process which has crashed by using said information in said semaphore records and said semaphore access records; and B) means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
Claim 29
Dependent Claim
391 words
A computer system, comprising: A) at least one processing unit; B) a plurality of shared resources accessible by each processing unit and including a memory unit; C) a plurality of semaphore records stored in said memory unit and containing an owner identification for registering ownership of the semaphore record; D) a plurality of processes executing on said processing unit(s), said processes requesting and acquiring exclusive access to said shared resources by requesting and acquiring ownership of said semaphore records; E) a plurality of semaphore access records stored in said memory unit, each of which is associated with one of said processes, for identifying a semaphore record which the process associated with said semaphore access record wants to acquire ownership of; F) means for maintaining an underestimate of semaphore ownership comprising: i) means for storing in said memory unit an identification of a process which owns a semaphore record, subsequent to said process acquiring ownership of said semaphore record; and ii) means for removing from said memory unit said identification of a process which owns a semaphore record, prior to said process releasing ownership of said semaphore record; G) means for maintaining an overestimate of semaphore ownership comprising: i) means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record; and ii) means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record; H) means for determining whether the underestimate obtained in F) matches the overestimate obtained in G); wherein each of said semaphore records is associated with one of said shared resources and comprises: A) availability indicia for indicating whether the semaphore record is available; and B) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup means; wherein said cleanup means is activated when the underestimate obtained in F) does not match the overestimate obtained in G) and comprises: A) means for determining whether a semaphore record is owned by a process which has crashed by using said information in said semaphore records and said semaphore access records; and B) means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
Claim 30
Dependent Claim
404 words
A crash safe system for enforcing mutually exclusive access to shared data in a computer system comprising: A) at least one processing unit; B) a plurality of shared resources accessible by each processing unit and including a memory unit; C) a plurality of semaphore records stored in said memory unit and containing an owner identification for registering ownership of the semaphore record; D) a plurality of processes executing on said processing unit(s), said processes requesting and acquiring exclusive access to said shared resources by requesting and acquiring ownership of said semaphore records; E) a plurality of semaphore access records stored in said memory unit, each of which is associated with one of said processes, for identifying a semaphore record which the process associated with said semaphore access record wants to acquire ownership of; F) means for maintaining an underestimate of semaphore ownership comprising: i) means for storing in said memory unit an identification of a process which owns a semaphore record, subsequent to said process acquiring ownership of said semaphore record; and ii) means for removing from said memory unit said identification of a process which owns a semaphore record, prior to said process releasing ownership of said semaphore record; G) means for maintaining an overestimate of semaphore ownership comprising: i) means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record; and ii) means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record; H) means for determining whether the underestimate obtained in F) matches the overestimate obtained in G); wherein each of said semaphore records is associated with one of said shared resources and comprises: A) availability indicia for indicating whether the semaphore record is available; and B) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup means; wherein said cleanup means is activated when the underestimate obtained in F) does not match the overestimate obtained in G) and comprises: A) means for determining whether a semaphore record is owned by a process which has crashed by using said information in said semaphore records and said semaphore access records; and B) means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
Claim 31
Dependent Claim
404 words
A crash safe system for enforcing mutually exclusive access to shared data in a computer system comprising: A) at least one processing unit; B) a plurality of shared resources accessible by each processing unit and including a memory unit; C) a plurality of semaphore records stored in said memory unit and containing an owner identification for registering ownership of the semaphore record; D) a plurality of processes executing on said processing unit(s), said processes requesting and acquiring exclusive access to said shared resources by requesting and acquiring ownership of said semaphore records; E) a plurality of semaphore access records stored in said memory unit, each of which is associated with one of said processes, for identifying a semaphore record which the process associated with said semaphore access record wants to acquire ownership of; F) means for maintaining an underestimate of semaphore ownership comprising: i) means for storing in said memory unit an identification of a process which owns a semaphore record, subsequent to said process acquiring ownership of said semaphore record; and ii) means for removing from said memory unit said identification of a process which owns a semaphore record, prior to said process releasing ownership of said semaphore record; G) means for maintaining an overestimate of semaphore ownership comprising: i) means for storing in said memory unit an indication that a process wants to acquire a semaphore record, prior to said process requesting ownership of said semaphore record; and ii) means for removing from said memory unit said indication that a process wants to acquire a semaphore record, subsequent to said process releasing ownership of said semaphore record; H) means for determining whether the underestimate obtained in F) matches the overestimate obtained in G); wherein each of said semaphore records is associated with one of said shared resources and comprises: A) availability indicia for indicating whether the semaphore record is available; and B) cleanup indicia for indicating whether the semaphore record is being evaluated by a cleanup means; wherein said cleanup means is activated when the underestimate obtained in F) does not match the overestimate obtained in G) and comprises: A) means for determining whether a semaphore record is owned by a process which has crashed by using said information in said semaphore records and said semaphore access records; and B) means for resetting the availability indicia of a semaphore record when the semaphore record is owned by a process that has crashed.
References Cited (Backward Citations)
US4318182A
Cited
US4819154A
Cited
US4594657A
Cited
US4591976A
Cited
US4718002A
Cited
US4965718A
Cited
US5161227A
Cited
US5361347A
Cited
US5206952A
Cited
US5428783A
Cited
US5440752A
Cited
US5394551A
Cited
US5339443A
Cited
US5261106A
Cited
US5432929A
Cited
US5440746A
Cited
US5522029A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2000-04-21 | 2000-10-21 | 2001-04-22 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2004-04-21 | 2004-10-21 | 2005-04-22 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2008-04-21 | 2008-10-21 | 2009-04-22 | $7700.00 | Window Closed / Lapsed |