IP Library Granted Patent US 9,122,575
Granted Patent B2
US 9,122,575 · App. 14/449,955 · Granted Sep 1, 2015

Processing system having memory partitioning

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,122,575
App. No.
14/449,955
Granted
Sep 1, 2015
Kind
B2
Abstract

Memory resource partitioning code allocates a memory partition in response to a process requesting access to memory storage. Memory partition rules may define attributes of the memory partition. The attributes may include a minimum memory allocation and a maximum memory allocation for the memory partition.

Claims (34)

1. A memory resource management system for managing memory storage, the memory resource management system comprising:

a virtual memory allocator adapted to respond to memory requests from a process, the virtual memory allocator using virtual memory locations that are mapped to physical memory locations;

a physical memory allocator adapted to allocate physical memory and track which process is using which physical memory locations; and

a partitioning module that arbitrates communications between the virtual memory allocator and the physical memory allocator, where the partitioning module generates and manages memory partitions associated with the memory requests, and where each memory partition is generated for a single memory class and managed based on rules established on a per memory class basis in accordance with predetermined attributes of the memory partition, the attributes including an amount of memory reserved for the memory partition and an amount of discretionary memory which is not guaranteed to be available for the memory partition; and

the partitioning module associates a process with multiple partitions in instances when the process creates objects that utilize multiple different memory classes.

2. The memory management system of claim 1 , where the partitioning module is adapted to generate a plurality of memory resource partitions.

3. The memory management system of claim 2 , where at least two of the plurality of memory resource partitions are arranged in a hierarchy comprising a parent memory partition and a child memory partition, wherein the parent memory partition is sub-divided to form the hierarchy and the child memory partition is constrained by the predetermined attributes of the parent memory partition including the amount of memory reserved for the parent memory partition and the amount of discretionary memory which is not guaranteed to be available for the parent memory partition.

4. The memory management system of claim 3 , where allocation of memory in the child memory partition is counted as an allocation of memory in the parent memory partition.

5. The memory management system of claim 1 , where the partitioning module is adapted to generate a plurality of memory partition types.

6. The memory management system of claim 5 , where the plurality of memory partition types comprises an open memory partition type having a minimum memory allocation equal to zero and a maximum memory allocation that is not constrained by the open memory partition type.

7. The memory management system of claim 5 , where the plurality of memory partition types comprises a guaranteed memory partition type having a minimum memory allocation equal to a predetermined value that is greater than zero and a maximum memory allocation that is not constrained by the guaranteed memory partition type.

8. The memory management system of claim 5 , where the plurality of memory partition types comprises a restricted memory partition type having a minimum memory allocation equal to zero and a maximum memory allocation having a predetermined value corresponding to a maximum amount of memory storage that may be allocated.

9. The memory management system of claim 5 , where the plurality of memory partition types comprises a sandbox memory partition type having equal minimum and maximum memory allocation values.

10. The memory management system of claim 1 , where the partitioning module generates and manages the memory partitions based on memory class attributes associated with a corresponding memory partition type.

11. The memory management system of claim 2 , where the partitioning module organizes at least two of the plurality of memory resource partitions as a pseudo partition.

12. The memory management system of claim 11 , where the pseudo partition is collectively referenced by a group name.

13. A computer implemented method for managing memory storage, the method comprising:

in a virtual memory allocator, responding to memory requests from a process, the virtual memory allocator using virtual memory locations that are mapped to physical memory locations;

in a physical memory allocator allocating physical memory and tracking which process is using which physical memory locations; and

in a partitioning module:

arbitrating communications between the virtual memory allocator and the physical memory allocator;

generating and managing memory partitions associated with the memory requests, wherein each memory partition is generated for a single memory class and managed based on rules established on a per memory class basis in accordance with predetermined attributes of the memory partition, the attributes including an amount of memory reserved for the memory partition and an amount of discretionary memory which is not guaranteed to be available for the memory partition; and

associating a process with multiple partitions in instances when the process creates objects that utilize multiple different memory classes.

14. The method of claim 13 , wherein the partitioning module is adapted to generate a plurality of memory resource partitions.

15. The method of claim 14 , wherein at least two of the plurality of memory resource partitions are arranged in a hierarchy comprising a parent memory partition and a child memory partition, wherein the parent memory partition is sub-divided to form the hierarchy and the child memory partition is constrained by the predetermined attributes of the parent memory partition including the amount of memory reserved for the parent memory partition and the amount of discretionary memory which is not guaranteed to be available for the parent memory partition.

16. The method of claim 15 , wherein allocation of memory in the child memory partition is counted as an allocation of memory in the parent memory partition.

17. The method of claim 13 , wherein the partitioning module is adapted to generate a plurality of memory partition types.

18. The method of claim 17 , wherein the plurality of memory partition types comprise:

an open memory partition type having a minimum memory allocation equal to zero and a maximum memory allocation that is not constrained by the open memory partition type;

a guaranteed memory partition type having a minimum memory allocation equal to a predetermined value that is greater than zero and a maximum memory allocation that is not constrained by the guaranteed memory partition type;

a restricted memory partition type having a minimum memory allocation equal to zero and a maximum memory allocation having a predetermined value corresponding to a maximum amount of memory storage that may be allocated; or

a sandbox memory partition type having equal minimum and maximum memory allocation values.

19. The method of claim 14 , where the partitioning module generates and manages the memory partitions based on memory class attributes associated with a corresponding memory partition type.

20. The method of claim 19 , where the partitioning module organizes at least two of the plurality of memory resource partitions as a pseudo partition, wherein the pseudo partition is collectively referenced by a group name.

Assignments (8)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2021
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 057253/0036 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2021
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 057253/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2021
From: KISEL, MICHAEL
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 057252/0948 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE CORPORATE IDENTIFIER INADVERTENTLY LISTED ON THE ASSIGNMENT AND COVERSHEET AS "LIMITED" PREVIOUSLY RECORDED ON REEL 035700 FRAME 0845. ASSIGNOR(S) HEREBY CONFIRMS THE IDENTIFIER SHOULD HAVE STATED "INC.". Recorded May 27, 2015
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO INC.
Reel/Frame 035785/0156 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2015
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO LIMITED
Reel/Frame 035700/0845 →