US 11,934,321 B2
Kernel support for memory paging
Rasha Eqbal, Redwood City, CA (US); Adrian Danis, Sydney (AU); and Christopher James Suter, Sydney (AU)
Assigned to GOOGLE LLC, Moutain View, CA (US)
Filed by Google LLC, Mountain View, CA (US)
Filed on Aug. 10, 2022, as Appl. No. 17/884,931.
Prior Publication US 2024/0054078 A1, Feb. 15, 2024
Int. Cl. G06F 12/109 (2016.01); G06F 9/54 (2006.01); G06F 12/1009 (2016.01)
CPC G06F 12/109 (2013.01) [G06F 9/545 (2013.01); G06F 12/1009 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method for memory management of a computing system, the method comprising:
in a virtual address space having a kernel space and a user space distinct from the kernel space, assigning separate virtual addresses to individual processes in the user space, wherein the individual processes include at least one file system, and the at least one file system is configured to read from and write to a persistent storage device separate from main memory of the computing system;
creating one or more virtual memory objects in the user space that are backed by a user space pager service, each virtual memory object including one or more pages representing a file associated with information maintained in the persistent storage device, the user space pager service employing a pager to manage reading from and writing to the persistent storage device;
populating, by the pager using data retrieved from the persistent storage device, at least one of the one or more pages for a given one of the virtual memory objects;
upon populating the one or more pages, setting a state of the given virtual memory object to a clean state;
upon writing to the one or more pages, setting the state of the given virtual memory object to a dirty state;
upon initiating writing back from the one or more pages to the persistent storage device, setting the state of the given virtual memory object to an awaiting clean state; and
upon ending the writing back from the one or more pages to the persistent storage device, setting the state of the given virtual memory object to the clean state.