IP Library Granted Patent US 11,994,988
Granted Patent B2
US 11,994,988 · App. 18/083,776 · Granted May 28, 2024

Multi-ring shared, traversable, and dynamic advanced database

Inventor: John R. Shaw, II (Broomfield, CO)
Assignee: OPEN TEXT INC.
G06F12/0653G06F12/0615G06F12/1491G06F16/00G06F21/00G06F2212/1016G06F2212/1052
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 11,994,988
App. No.
18/083,776
Granted
May 28, 2024
Kind
B2
Abstract

Examples of the present disclosure describe systems and methods for sharing memory using a multi-ring shared, traversable and dynamic database. In aspects, the database may be synchronized and shared between multiple processes and/or operation mode protection rings of a system. The database may also be persisted to enable the management of information between hardware reboots and application sessions. The information stored in the database may be view independent, traversable, and resizable from various component views of the database. In some aspects, an event processor is additionally described. The event processor may use the database to allocate memory chunks of a shared heap to components/processes in one or more protection modes of the operating system.

Claims (40)

1. A system comprising:

one or more processors; and

memory coupled to at least one of the one or more processors, the memory comprising computer executable instructions that, when executed by the at least one processors, performs a method comprising:

receiving, from a component of the system, a request to insert an entry into a dynamic memory database that is synchronized between two or more processes, at least one of the two or more processes executing in a trusted operating system mode and at least one of the two or more processes executing in an untrusted operating system mode;

evaluating, by the dynamic memory database, available memory space in a shared memory;

determining, by the dynamic memory database, that there is not enough available memory space in the shared memory to accommodate the requested entry;

requesting, by the dynamic memory database, an allocation of additional memory space in the shared memory to accommodate the requested entry;

allocating, by an event processor, additional memory space in the shared memory; and

inserting, by the dynamic memory database, the entry request into the dynamic memory database.

2. The system of claim 1 , wherein the dynamic memory database comprises information relating to a shared memory heap.

3. The system of claim 2 , wherein the dynamic memory database comprises one or more objects of the shared memory heap.

4. The system of claim 1 , wherein the dynamic memory database is persisted to enable management of information between hardware reboots and application sessions.

5. The system of claim 1 , wherein the trusted operating system mode comprises a kernel mode and the untrusted operating system mode comprises a user mode.

6. The system of claim 1 , wherein allocating additional memory space further comprises copying a current state of a shared memory heap.

7. The system of claim 6 , wherein allocating additional memory space further comprises mapping one or more additional sections of free memory to the shared memory heap to create a modified shared memory heap and copying data in the current state of the shared memory heap to the modified shared memory heap.

8. The system of claim 7 , wherein information mapped to at least one of the two or more processes comprises at least memory addresses from the modified shared memory heap and a pointer object.

9. The system of claim 8 , wherein the pointer object describes a database entry of the dynamic memory database, wherein the database entry corresponds to one or more operations associated with the shared memory heap.

10. The system of claim 1 , wherein the dynamic memory database comprises view independent information.

11. A method comprising:

receiving a request to insert an entry into a dynamic memory database that is synchronized between two or more processes, at least one of the two or more processes executing in a trusted operating system mode and at least one of the two or more processes executing in an untrusted operating system mode;

evaluating available memory space in a shared memory;

determining that there is not enough available memory space in the shared memory to accommodate the requested entry;

requesting an allocation of additional memory space in the shared memory to accommodate the requested entry;

allocating additional memory space in the shared memory; and

inserting the entry request into the dynamic memory database.

12. The method of claim 11 , wherein the dynamic memory database comprises information relating to a shared memory heap.

13. The method of claim 11 , wherein the dynamic memory database is persisted to enable management of information between hardware reboots and application sessions.

14. The method of claim 11 , wherein the trusted operating system mode comprises a kernel mode and the untrusted operating system mode comprises a user mode.

15. The method of claim 11 , wherein processing the request for the allocation of additional memory space further comprises copying a current state of a shared memory heap.

16. The method of claim 11 , wherein the dynamic memory database comprises view independent information.

17. A computer storage media encoding computer executable instructions which, when executed by at least one processor, performs a method for sharing memory using a dynamic memory database, comprising:

receiving, from a component of the system, a request to insert an entry into a dynamic memory database that is synchronized between two or more processes, at least one of the two or more processes executing in a trusted operating system mode and at least one of the two or more processes executing in an untrusted operating system mode;

evaluating, by the dynamic memory database, available memory space in a shared memory;

determining, by the dynamic memory database, that there is not enough available memory space in the shared memory to accommodate the requested entry;

requesting, by the dynamic memory database, an allocation of additional memory space in the shared memory to accommodate the requested entry;

allocating, by an event processor, additional memory space in the shared memory; and

inserting, by the dynamic memory database, the entry request into the dynamic memory database.

18. The computer storage media of claim 17 , wherein the dynamic memory database is persisted to enable the management of information between hardware reboots and application sessions.

19. The computer storage media of claim 17 , wherein the dynamic memory database may be traversed and resized from various component views of the dynamic memory database.

20. The computer storage media of claim 17 , wherein the dynamic memory database comprises a pointer object that references locations in a shared memory heap based on offsets from one or more locations in the shared memory heap.

Assignments (4)
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Jul 6, 2023
From: CARBONITE, LLC
To: OPEN TEXT INC.
Reel/Frame 064351/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2023
From: WEBROOT LLC
To: CARBONITE, LLC
Reel/Frame 064167/0129 →
CERTIFICATE OF CONVERSION Recorded Jun 29, 2023
From: WEBROOT INC.
To: WEBROOT LLC
Reel/Frame 064176/0622 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2023
From: SHAW, JOHN R., II
To: WEBROOT INC.
Reel/Frame 062273/0294 →
Continuity (5)
Continuation 17323777 · May 18, 2021
Continuation 16791669 · Feb 14, 2020
Continuation 15888242 · Feb 5, 2018
Provisional Application 62593232 · Nov 30, 2017
Related Publication 20230129140A1 · Apr 27, 2023