IP Library Granted Patent US 10,831,670
Granted Patent B2
US 10,831,670 · App. 15/821,374 · Granted Nov 10, 2020

Method and system for low latency data management

Inventor: Scott Lee Linke (Fort Collins, CO)
Assignee: BlackBerry Limited
G06F12/10G06F3/0604G06F3/0631G06F3/0673G06F9/44521G06F2212/1024G06F2212/657
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 10,831,670
App. No.
15/821,374
Granted
Nov 10, 2020
Kind
B2
Abstract

A method at a computing device for sharing data, the method including defining a dynamically linked data library (DLDL) to include executable code; loading the DLDL from a first process, the loading causing a memory allocation of shared executable code, private data and shared data in a physical memory location; mapping the memory allocation of shared executable code, private data and shared data to a virtual memory location for the first process; loading the DLDL from a second process, the loading causing mapping of the memory allocation of shared executable code and the shared data for the first process to be mapped to a virtual memory location for the second process; and allocating private data in physical memory and mapping to a virtual memory location for the second process.

Claims (67)

1. A method at a computing device for sharing data, the method comprising:

defining a dynamically linked data library (DLDL) to include executable code;

loading the DLDL from a first process, the loading causing a memory allocation of shared executable code, private data and shared data in a physical memory location;

mapping the memory allocation of shared executable code, private data and shared data to a virtual memory location for the first process;

loading the DLDL from a second process, the loading causing a second memory allocation of private data in a second physical memory location;

mapping the memory allocation of shared executable code and shared data for the first process to a first section of a virtual memory location for the second process; and

mapping the second memory allocation of private data to a second section of the virtual memory location for the second process;

wherein the first process has access to the virtual memory for the first process and the second process has access to the virtual memory for the second process.

2. The method of claim 1 , wherein the causing the memory allocation of shared data from the first process is based on receiving memory requirements from the first process.

3. The method of claim 1 , wherein the loading of the DLDL from the second process further comprises:

adjusting the memory allocation of the shared data based on the criteria received from the second process.

4. The method of claim 1 , wherein the library of the DLDL further includes a data object lifetime manager that creates a pool of data objects within the shared data allocation, the method further comprising:

allocating a data object from the pool of data objects to the first process;

receiving, at the object manager, a publication notification from the first process;

notifying the second process of the publication;

receiving a release from the second process; and

returning the data object to the pool for future allocation.

5. The method of claim 4 , further comprising:

loading the DLDL from a third process, the loading causing mapping of the memory allocation of the shared executable code and shared data for the first process to be mapped to a virtual memory location for the third process.

6. The method of claim 5 , further comprising:

notifying the third process of the publication; and

receiving a release from the third process,

wherein the returning the data object to the pool for future allocation is only performed after the data object is released by both the second process and the third process.

7. The method of claim 1 , further comprising:

loading the DLDL from a fourth process, the loading causing a memory allocation of private data and a second allocation of shared data in a physical memory location;

mapping the memory allocation of the second allocation of shared data to a virtual memory location for the fourth process;

mapping of the memory allocation of the shared executable code for the first process to be mapped to a virtual memory location for the fourth process; and

mapping the private data to a virtual memory location for the fourth process.

8. A computing device configured for sharing data, the computing device comprising:

a processor; and

memory;

wherein the computing device is configured to:

define a dynamically linked data library (DLDL) to include executable code;

load the DLDL from a first process, the loading causing a memory allocation of shared executable code, private data and shared data in a physical memory location;

map the memory allocation of shared executable code, private data and shared data to a virtual memory location for the first process;

load the DLDL from a second process, the loading causing a second memory allocation of private data in a second physical memory location;

mapping the memory allocation of shared executable code and shared data for the first process to a first section of a virtual memory location for the second process; and

mapping the second memory allocation of private data to a second section of the virtual memory location for the second process;

wherein the first process has access to the virtual memory for the first process and the second process has access to the virtual memory for the second process.

9. The computing device of claim 8 , wherein the causing the memory allocation shared data from the first process is based on receiving memory requirements from the first process.

10. The computing device of claim 8 , wherein the computing device is configured to load the DLDL from the second process by:

adjusting the memory allocation of the shared data based on the criteria received from the second process.

11. The computing device of claim 8 , wherein the library of the DLDL further includes a data object lifetime manager that creates a pool of data objects within the shared data allocation, the computing device further being configured to:

allocate a data object from the pool of data objects to the first process;

receive, at the object manager, a publication notification from the first process;

notify the second process of the publication;

receive a release from the second process; and

return the data object to the pool for future allocation.

12. The computing device of claim 11 , wherein the computing device is further configured to:

load the DLDL from a third process, the loading causing mapping of the memory allocation of the shared executable code and shared data for the first process to be mapped to a virtual memory location for the third process.

13. The computing device of claim 12 , wherein the computing device is further configured to:

notify the third process of the publication; and

receive a release from the third process,

wherein the returning the data object to the pool for future allocation is only performed after the data object is released by both the second process and the third process.

14. The computing device of claim 8 , wherein the computing device is further configured to:

load the DLDL from a fourth process, the loading causing a memory allocation of private data and a second allocation of shared data in a physical memory location;

mapping the memory allocation of the second allocation of shared data to a virtual memory location for the fourth process;

mapping of the memory allocation of the shared executable code for the first process to be mapped to a virtual memory location for the fourth process; and

mapping the private data to a virtual memory location for the fourth process.

15. A non-transitory computer readable medium for storing instruction code, which, when executed by a processor of a computing device configured for sharing data cause the computing device to:

define a dynamically linked data library (DLDL) to include executable code;

load the DLDL from a first process, the loading causing a memory allocation of shared executable code, private data and shared data in a physical memory location;

map the memory allocation of shared executable code, private data and shared data to a virtual memory location for the first process;

load the DLDL from a second process, the loading causing a second memory allocation of private data in a second physical memory location;

mapping the memory allocation of shared executable code and shared data for the first process to a first section of a virtual memory location for the second process; and

mapping the second memory allocation to a second section of the virtual memory location for the second process;

wherein the first process has access to the virtual memory for the first process and the second process has access to the virtual memory for the second process.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: LINKE, SCOTT LEE
To: QNX SOFTWARE SYSTEMS, INC.
Reel/Frame 044730/0348 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: QNX SOFTWARE SYSTEMS, INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 044730/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO INC.
Reel/Frame 044730/0530 →
Continuity (1)
Related Publication 20190155741A1 · May 23, 2019