IP Library Granted Patent US 7,346,720
Granted Patent B2
US 7,346,720 · App. 11/255,346 · Granted Mar 18, 2008

Systems and methods for managing concurrent access requests to a shared resource

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,346,720
App. No.
11/255,346
Granted
Mar 18, 2008
Kind
B2
Abstract

The systems and methods manage concurrent access requests to a shared resource. The systems and methods utilize an access management algorithm that permits multiple processes to concurrently obtain shared locks on the shared resource, but also limits access to only one process when an exclusive lock is granted. In doing so, the systems and methods avoid the problems of starvation and deadlock.

Claims (74)

1. A method of managing concurrent access requests to a data segment, comprising:

tracking shared lock requests from a plurality of processes in a first data structure when no exclusive waiter is present, wherein the first data structure tracks the total number of shared locks;

tracking shared lock requests in a second data structure when an exclusive waiter is present and the total number of shared locks is greater than zero, wherein the second data structure tracks the number of shared locks held by each of the plurality of processes;

tracking recursive shared lock requests in the second data structure when an exclusive waiter is present and the total number of shared locks is zero;

granting an exclusive lock to the exclusive waiter when the total number of shared locks is zero and the number of shared locks held by each of the plurality of processes is zero.

2. A method of managing concurrent access requests to a shared resource, comprising:

receiving a first plurality of shared requests;

granting the first plurality of shared requests;

tracking completion of the first plurality of shared requests;

receiving an exclusive request;

receiving a second plurality of shared requests before the first plurality of shared requests has been completed;

granting the second plurality of shared requests;

tracking completion of the second plurality of shared requests on a per-process basis;

receiving a third plurality of shared requests after the first plurality of shared requests has been completed;

determining whether each of the third plurality of shared requests is a recursive request;

for each of the recursive requests,

granting the recursive request; and

tracking completion of the recursive request on a per-process basis; and

after completion of the third plurality of shared requests and the recursive requests, granting the exclusive request.

3. A method of managing concurrent access requests to a shared resource, wherein a first at least one process has a shared lock on the shared resource, comprising:

storing a representation of the number of a second at least one processes waiting to obtain an exclusive lock on the shared resource in an exclusive waiting count, wherein the exclusive waiting count is a first data structure and the second at least one processes waiting to obtain an exclusive lock on the shared resource are put to sleep;

storing a representation of the number of first at least one processes that have a shared lock on the shared resource in a global count if the exclusive waiting count indicates that none of the second at least one processes are waiting to obtain an exclusive lock on the shared resource, wherein the global count is a second data structure;

adjusting a per-process count when one of the first at least one processes obtains a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least one processes is waiting to obtain an exclusive lock on the shared resource, wherein the per-process count is a third data structure that stores a representation of the number of shared locks held by each of the first at least one processes;

adjusting the per-process count when one of the first at least one processes terminates a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least one processes is waiting to obtain an exclusive lock on the shared resource and the global count indicates that at least one of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that the one of the first at least one processes does not hold a shared lock on the shared resource;

adjusting the global count when at least one of the first at least one processes terminates a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least one processes is waiting to obtain an exclusive lock on the shared resource and the global count indicates that at least one of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first at least one processes holds a shared lock on the shared resource; and

granting all shared lock requests from the first at least one processes if the global count indicates that at least one of the first at least one processes holds a shared lock on the shared resource.

4. The method of managing concurrent access requests to a shared resource of claim 3 , wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that at least one of the first at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further comprising:

putting to sleep all requests for a first-time lock by the first at least one processes;

granting all requests for a recursive lock by the first at least one processes;

adjusting the per-process count when at least one of the first at least one processes requests a recursive lock on the shared resource; and

adjusting the per-process count when at least one of the first at least one processes terminates a shared lock on the shared resource.

5. The method of managing concurrent access requests to a shared resource of claim 4 , wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further comprising:

putting to sleep all requests for a shared lock by the first at least one processes;

granting an exclusive lock to one of the second at least one processes waiting to obtain an exclusive lock on the shared resource; and

adjusting the exclusive waiting count.

6. The method of managing concurrent access requests to a shared resource of claim 3 , wherein the third data structure is a hash table.

7. The method of managing concurrent access requests to a shared resource of claim 5 , wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first-at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further comprising:

granting an exclusive lock to each of the second at least one processes waiting to obtain an exclusive lock in turn until the exclusive waiting count indicates that none of the second at least one process is waiting to obtain an exclusive lock.

8. The method of managing concurrent access requests to a shared resource of claim 5 , wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first-at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that none of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further comprising:

granting a shared lock to at least one of the first at least one processes that are sleeping.

9. An access management system for managing concurrent access requests to a shared resource comprising:

a shared resource;

a processor module, wherein a first at least one process has a shared lock on the shared resource, configured to:

receive requests from the first at least one processes for a shared lock on the shared resource;

receive requests from a second at least one process for an exclusive lock on the shared resource;

store a representation of the number of a second at least one processes waiting to obtain an exclusive lock on the shared resource in an exclusive waiting count, wherein the exclusive waiting count is a first data structure and the second at least one processes waiting to obtain an exclusive lock on the shared resource are put to sleep;

store a representation of the number of the first at least one processes that have a shared lock on the shared resource in a global count if the exclusive waiting count indicates that none of the second at least one processes are waiting to obtain an exclusive lock on the share resource, wherein the global count is a second data structure;

adjust a per-process count when one of the first at least one processes obtains a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least on processes is waiting to obtain an exclusive lock on the shared resource, wherein the per-process count is a third data structure that stores a representation of the number of shared locks held by each of the first at least one processes;

adjust the per-process count when one of the first at least one processes terminates a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least one processes is waiting to obtain an exclusive lock on the shared resource and the global count indicates that at least one of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that one of the first at least one processes holds a shared lock on the shared resource;

adjust the global count when one of the first at least one processes terminates a shared lock on the shared resource if the exclusive waiting count indicates that at least one of the second at least one processes is waiting to obtain an exclusive lock on the shared resource and the global count indicates that at least one of the first at least processes holds a shared lock on the shared resource and the per-process count indicates that the one of the first at least one processes does not hold a shared lock on the shared resource; and

grant all shared lock requests from the first at least one processes if the global count indicates that at least one of the first at least one processes holds a shared lock on the shared resource.

10. The access management system of claim 9 , further comprising:

the processor module, wherein the writers waiting counter indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that at least one of the first at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further configured to:

put to sleep all requests for a first-time lock by the first at least one processes;

grant all requests for a recursive lock by the first at least one processes;

adjust the per-process count when at least one of the first at least one processes requests a recursive lock on the shared resource; and

adjust the per-process count when at least one of the first at least one processes terminates a shared lock on the shared resource.

11. The access management system of claim 10 , further comprising:

the processor module, wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further configured to:

put to sleep all requests for a shared lock by the first at least one processes;

grant an exclusive lock to one of the second at least one processes waiting to obtain an exclusive lock on the shared resource; and

adjust the exclusive waiting count.

12. The access management system of claim 9 , wherein the third data structure is a hash table.

13. The access management system of claim 11 , further comprising:

the process module, wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first-at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that at least one of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further configured to:

grant an exclusive lock to each of the second at least one processes waiting to obtain an exclusive lock in turn until the exclusive waiting count indicates that none of the second at least one process is waiting to obtain an exclusive lock.

14. The access management system of claim 11 , further comprising:

the processor module, wherein the global count indicates that none of the first at least one processes holds a shared lock on the shared resource and the per-process count indicates that none of the first-at least one processes holds a shared lock on the shared resource and the exclusive waiting count indicates that none of the second at least one second processes is waiting to obtain an exclusive lock on the shared resource, further configured to:

grant a shared lock to at least one of the first at least one processes that are sleeping.

15. The access management system of claim 9 , wherein the first and second at least one processes are received from a plurality of sources.

16. The access management system of claim 9 , further comprising:

the shared resource, wherein the shared resource is located on a standalone computer; and

the processor module, wherein the processor module is located on the standalone computer.

17. The access management system of claim 9 , wherein the shared resource is remotely located from the processor module.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2011
From: IVY HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 026083/0036 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2011
From: ISILON SYSTEMS LLC
To: IVY HOLDING, INC.
Reel/Frame 026069/0925 →
MERGER Recorded Mar 31, 2011
From: ISILON SYSTEMS, INC.
To: ISILON SYSTEMS LLC
Reel/Frame 026066/0785 →
RELEASE OF SECURITY INTEREST Recorded Oct 15, 2010
From: HORIZON TECHNOLOGY FUNDING COMPANY LLC
To: ISILON SYSTEMS, INC.
Reel/Frame 025173/0542 →
SECURITY AGREEMENT Recorded Nov 22, 2006
From: ISILON SYSTEMS, INC.
To: HORIZON TECHNOLOGY FUNDING COMPANY LLC
Reel/Frame 018613/0916 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2006
From: FACHAN, NEAL T.
To: ISILON SYSTEMS, INC.
Reel/Frame 017424/0123 →