IP Library Granted Patent US 9,898,217
Granted Patent B2
US 9,898,217 · App. 15/596,987 · Granted Feb 20, 2018

Two stage memory allocation using a cache

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 9,898,217
App. No.
15/596,987
Granted
Feb 20, 2018
Kind
B2
Abstract

The presently claimed invention manages memory in a multi-processor system. The presently claimed invention may use a combination of global and local locks when allocating memory and de-allocating memory in a multi-processor system. A method consistent with the presently claimed invention may first receive an allocation of a first memory space in the system memory of a multi-core processing system. The allocation of the first memory space may globally locks the first memory space where the memory space may administered by a software module using one or more local locks.

Claims (72)

1. A method for managing memory allocation, the method comprising:

globally locking at least one portion of a memory accessible to processors of a multi-core processing system;

locally locking at least one part of the portion of globally locked memory, the locally locked part of the globally locked memory portion being accessible by at least one of the processors of the multi-core processing system, wherein the locally locked part of the globally locked memory portion stores data associated with one or more application programs; and

accessing by the at least one processor the locally locked part of the globally locked memory portion when performing a function associated with at least one of the application programs.

2. The method of claim 1 , further comprising:

receiving a first request concerning access to the memory and associated with a first application program;

locally locking a first part of a first portion of the globally locked memory based on the first request associated with the first application program; and

accessing by the first application program the locally locked first part of the first portion of the globally locked memory.

3. The method of claim 2 , further comprising:

receiving a first request concerning access to the memory and associated with a second application program;

locally locking a first part of a second portion of the globally locked memory based on receiving the first request associated with the second application program; and

accessing by the second application program the locally locked first part of the second portion of the globally locked memory.

4. The method of claim 2 , further comprising:

receiving a second request concerning access to the memory and associated with the first application program;

locally locking a second part of the first portion of the globally locked memory based on receiving the second request associated with the first application program; and

accessing by the first application program the locally locked second part of the first portion of the globally locked memory.

5. The method of claim 2 , further comprising:

receiving a second request concerning access to the memory and associated with the first application program;

identifying that the first portion of the globally locked memory is fully utilized;

allocating a second portion of the memory;

globally locking the second portion of the memory; and

locally locking a first part of the second portion of the memory after globally locking the second portion of the memory.

6. The method of claim 1 , wherein the locally locking the at least one part of the portion of the globally locked memory comprises:

locally locking a first part of the globally locked memory with a first local lock, wherein the first local lock is associated with a first starting memory address;

storing the first starting memory address in a data structure;

locally locking a second part of the globally locked memory with a second local lock, wherein the second local lock is associated with a second starting memory address; and

storing the second starting memory address in the data structure.

7. The method of claim 2 , further comprising limiting access to the first portion of the portion of the globally locked memory to the first application program based on a first global lock being associated with the first application program.

8. A non-transitory computer-readable storage medium having embodied thereon a program executable by one or more processors of a multi-processor system for managing memory allocation, the method comprising:

globally locking at least one portion of a memory accessible to processors of a multi-core processing system;

locally locking at least one part of the portion of globally locked memory, the locally locked part of the globally locked memory portion being accessible by at least one of the processors of the multi-core processing system, wherein the locally locked part of the globally locked memory portion stores data associated with one or more application programs; and

accessing by the at least one processor the locally locked part of the globally locked memory portion when performing a function associated with at least one of the application programs.

9. The non-transitory computer-readable storage medium of claim 1 , wherein the program further comprises instructions executable to:

receive a first request concerning access to the memory and associated with a first application program;

locally lock a first part of a first portion of the globally locked memory based on the first request associated with the first application program; and

access by the first application program the locally locked first part of the first portion of the globally locked memory.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the program further comprises instructions executable to:

receive a first request concerning access to the memory and associated with a second application program;

locally lock a first part of a second portion of the globally locked memory based on receiving the first request associated with the second application program; and

access by the second application program the locally locked first part of the second portion of the globally locked memory.

11. The non-transitory computer-readable storage medium of claim 9 , wherein the program further comprises instructions executable to:

receive a second request associated with the first application program of the one or more application programs to access the memory;

locally lock a second part of a first portion of the one or more portions of the globally locked memory based on receiving the second request associated with the first application program; and

allow access to the first application program the locally locked second part of the first portion of the globally locked memory.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the program further comprises instructions executable to:

receive a second request concerning access to the memory and associated with the first application program;

identify that the first portion of the globally locked memory is fully utilized;

allocate a second portion of the memory;

globally lock the second portion of the memory; and

locally lock a first part of the second portion of the memory after globally locking the second portion of the memory.

13. The non-transitory computer-readable storage medium of claim 8 , wherein locally locking the at least one part of the at least one portion of the globally locked memory comprises:

locally locking a first part of the globally locked memory with a first local lock, wherein the first local lock is associated with a first starting memory address;

storing the first starting memory address in a data structure;

locally locking a second part of the globally locked memory with a second local lock, wherein the second local lock is associated with a second starting memory address; and

storing the second starting memory address in the data structure.

14. The non-transitory computer-readable storage medium of claim 9 , wherein the program further comprises instructions executable to limit access to the first portion of the portion of the globally locked memory to the first application program based on a first global lock being associated with the first application program.

15. A system for managing memory allocation, the system comprising:

a memory comprising at least one portion that is globally locked, wherein the at least one portion includes at least one part that is locally locked, and wherein the locally locked part stores data associated with one or more application programs; and

one or more multi-core processors that accesses the locally locked part of the globally locked portion when performing a function associated with at least one of the one or more application programs.

16. The system of claim 15 , further comprising a network interface that receives a first request concerning access and associated with a first application program, wherein a first part of a first portion of the globally locked memory is locally locked based on the first request associated with the first application program, and wherein execution of the first application program by the processors accesses the locally locked first part of the first portion of the globally locked memory.

17. The system of claim 16 , wherein the network interface receives a first request concerning access and associated with a second application program, wherein a first part of a second portion of the globally locked memory is locally locked based on receiving the first request associated with the second application program; and wherein execution of the second application program by the processor s accesses the locally locked first part of the second portion of the globally locked memory.

18. The system of claim 16 , wherein the network interface receives a second request concerning access and associated with the first application program, wherein a second part of a first portion of the globally locked memory is locally locked based on receiving the second request associated with the first application program; and wherein execution of the first application program by the processors accesses the locally locked second part of the first portion of the globally locked memory.

19. The system of claim 16 , wherein the network interface receives a second request concerning access and associated with the first application program; and wherein the processors execute instructions stored in memory to:

identify that the first portion of the globally locked memory is fully utilized;

allocate a second portion of the memory;

globally lock the second portion of the memory; and

locally lock a first part of the second portion of the memory after globally locking the second portion of the memory.

20. The system of claim 15 , wherein the processors locally lock the at least one part of the portion of the globally locked memory by:

locally locking a first part of the globally locked memory with a first local lock, wherein the first local lock is associated with a first starting memory address;

storing the first starting memory address in a data structure;

locally locking a second part of the globally locked memory with a second local lock, wherein the second local lock is associated with a second starting memory address; and

storing the second starting memory address in the data structure.

Assignments (9)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
CHANGE OF NAME Recorded Jan 3, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045006/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2018
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 044997/0470 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2017
From: ZHANG, XIANGYANG
To: DELL SOFTWARE INC.
Reel/Frame 044254/0583 →
CHANGE OF NAME Recorded Nov 29, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044551/0605 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 044551/0571 →