IP Library › Granted Patent US 12,572,375
Granted Patent B2
US 12,572,375 · App. 17/876,174 · Granted Mar 10, 2026

Operating system compatibility layer

Inventors: Travis Kirk Geiselbrecht (Bainbridge Island, WA); Nicholas J. Maniscalco (Seattle, WA)
Assignee: Google LLC
G06F9/45545G06F9/3004G06F9/3861G06F9/544G06F9/545G06F21/53G06F9/45558G06F2009/45579G06F2009/45583G06F2009/45587
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 12,572,375
App. No.
17/876,174
Granted
Mar 10, 2026
Kind
B2
Abstract

The technology provides efficient and secure virtualized execution of software compiled for a first (guest) operating system to run on a second (host) operating system. This includes delineating a kernel space and a separate user space, the kernel space including a handle table and kernel of a host operating system. In the user space, a restricted space is separate from an unrestricted space. The restricted space corresponds to a restricted mode and the unrestricted space corresponding to an unrestricted mode. A hyperprocess is implemented and a hyperprocess handle table is created in the unrestricted space. A set of child processes is loaded into separate memory address spaces in the restricted space, wherein the set of child processes is associated with a guest operating system. The hyperprocess handle table is shared among the child processes and includes a file descriptor tables each associated with a specific child process.

Claims (32)

1 . A computer-implemented method executable by one or more processors of a processing system, the method comprising:

in an assigned address space, delineating a kernel space and a separate user space, the kernel space including a handle table and kernel of a host operating system;

in the user space, delineating a restricted space separate from an unrestricted space, the restricted space corresponding to a restricted mode and the unrestricted space corresponding to an unrestricted mode, wherein the unrestricted mode allows access to both a private address space of a given address space and a shared address space of the given address space, and wherein the restricted mode allows access to the private address space and not the shared address space;

implementing a hyperprocess in the unrestricted space as a translation layer of the user space and creating a hyperprocess handle table in the unrestricted space; and

loading a set of child processes into separate memory address spaces of the restricted space, wherein the set of child processes are associated with a guest operating system;

wherein the hyperprocess handle table is shared among the set of child processes and includes a set of file descriptor tables, each file descriptor table being associated with a specific child process of the set of child processes.

2 . The method of claim 1 , wherein the implementing is performed by a runner of the host operating system.

3 . The method of claim 1 , further comprising loading a host process into the restricted space in a location distinct from the memory address spaces of the child processes.

4 . The method of claim 1 , wherein delineating the restricted space separate from the unrestricted space includes splitting the user space into two partitions.

5 . The method of claim 4 , wherein the two partitions evenly split the user space.

6 . The method of claim 4 , wherein the two partitions are split along a page table boundary.

7 . The method of claim 1 , wherein the set of child processes has an N:1 mapping with hyperprocess handle table, and each thread of a given child process has an N:1 mapping with the given child process, and an N:1 mapping with the memory address spaces in the restricted space.

8 . The method of claim 1 , wherein the memory address spaces in the restricted space has a tree of virtual memory access regions associated with the set of child processes.

9 . The method of claim 1 , wherein upon entering the restricted mode via a system call, the method includes returning any traps and exceptions back to the unrestricted mode via an in-process vector table.

10 . The method of claim 1 , further comprising the kernel saving restricted state information upon transitioning to the unrestricted mode.

11 . The method of claim 1 , wherein a thread of a given child of the set of child processes is permitted to access different memory regions depending on which process it is a member of, and which mode it is operating in.

12 . The method of claim 1 , wherein implementing the hyperprocess and creating the hyperprocess handle table in the unrestricted space includes implementing a set of distinct hyperprocesses each having its own hyperprocess handle table, in which the set of child processes for a given one of the set of hyperprocesses does not interact with the set of child processes for any other of the set of hyperprocesses.

13 . A processing system, comprising:

memory having a set of address spaces; and

one or more processors operatively coupled to the memory, the one or more processors being configured to:

in an assigned address space, delineate a kernel space and a separate user space, the kernel space including a handle table and kernel of a host operating system;

in the user space, delineate a restricted space separate from an unrestricted space, the restricted space corresponding to a restricted mode and the unrestricted space corresponding to an unrestricted mode, wherein the unrestricted mode allows access to both a private address space of a given address space and a shared address space of the given address space, and wherein the restricted mode allows access to the private address space and not the shared address space;

implement a hyperprocess in the unrestricted space as a translation layer of the user space and create a hyperprocess handle table in the unrestricted space; and

load a set of child processes into separate memory address spaces of the restricted space, wherein the set of child processes are associated with a guest operating system;

wherein the hyperprocess handle table is shared among the set of child processes and includes a set of file descriptor tables, each file descriptor table being associated with a specific child process of the set of child processes.

14 . The processing system of claim 13 , wherein the processing system is configured to load a host process into the restricted space in a location distinct from the memory address spaces of the child processes.

15 . The processing system of claim 13 , wherein delineation of the restricted space separate from the unrestricted space includes splitting the user space into two partitions.

16 . The processing system of claim 13 , wherein the set of child processes has an N:1 mapping with hyperprocess handle table, and each thread of a given child process has an N:1 mapping with the given child process, and an N:1 mapping with the memory address spaces in the restricted space.

17 . The processing system of claim 13 , wherein the memory address spaces in the restricted space has a tree of virtual memory access regions associated with the set of child processes.

18 . The processing system of claim 13 , wherein upon entering the restricted mode via a system call, the processing system supports returns of any traps and exceptions back to the unrestricted mode via an in-process vector table.

19 . The processing system of claim 13 , wherein a thread of a given child of the set of child processes is permitted to access different memory regions depending on which process it is a member of, and which mode it is operating in.

20 . The processing system of claim 13 , wherein implementation of the hyperprocess and creation of the hyperprocess handle table in the unrestricted space includes implementing a set of distinct hyperprocesses each having its own hyperprocess handle table, in which the set of child processes for a given one of the set of hyperprocesses does not interact with the set of child processes for any other of the set of hyperprocesses.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2022
From: GEISELBRECHT, TRAVIS KIRK; MANISCALCO, NICHOLAS J.
To: GOOGLE LLC
Reel/Frame 060955/0235 →
Continuity (1)
Related Publication 20240036897A1 · Feb 1, 2024
References Cited (23)
US 10033759B1 · Kabra · 2018 [cited by examiner]
US 10846117B1 · Steinberg · 2020 [cited by examiner]
US 20100138831A1 · Inoue · 2010 [cited by examiner]
US 20130227207A1 · Katz · 2013 [cited by examiner]
US 20160092678A1 · Probert · 2016 [cited by examiner]
US 20160147556A1 · Hu · 2016 [cited by examiner]
US 20180173548A1 · Schoenberg · 2018 [cited by examiner]
US 20210157489A1 · Tsirkin · 2021 [cited by examiner]
US 20220114009A1 · Ismael · 2022 [cited by examiner]
US 20220261366A1 · Drepper · 2022 [cited by examiner]
US 20230161650A1 · Li · 2023 [cited by examiner]
Dawson, Joel , et al., “Phase Space Detection of Virtual Machine Cyber Events Through Hypervisor-Level System Call Analysis”, Conference Paper ⋅ Apr. 2018, DOI: 10.1109/ICDIS.2018.00034, 10 pages. [cited by applicant]
Onoue, Koichi , et al., “Control of System Calls from Outside of Virtual Machines”, SAC'08 Mar. 16-20, 2008, Fortaleza, Cear'a, Brazil, pp. 2116-2121. [cited by applicant]
Phoh, Jonas , et al., “Nitro: Hardware-based System Call Tracing for Virtual Machines”, Technische Universität München, Munich, Germany, 2011, 18 pages. [cited by applicant]
Blackberry QNX Neutrino, Realtime Operating System, 2017, 4 pages. [cited by applicant]
Comparing WSL 1 and WSL 2, Microsoft Docs, https://docs.microsoft.com/en-us/windows/wsl/compare-versions, retrieved from the internet on Jun. 9, 2022, 6 pages. [cited by applicant]
Starnix glossary, https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/src/proc/glossary.md, retrieved from the internet on Jun. 7, 2022, 5 pages. [cited by applicant]
Wikipedia, QNX, https://en.wikipedia.org/wiki/QNX, retrieved from the internet on Jun. 9, 2022, 8 pages. [cited by applicant]
Borisov, Bobby , “Windows Subsystem for Linux Explained, WSL & WSL2”, https://linuxiac.com/windows-subsystem-for-linux-explained-wsl-wsl2/, retrieved from the internet on Jun. 9, 2022, 9 pages. [cited by applicant]
Geiselbrecht, Travis , et al., “Starnix state transitions, Or, How I Learned to Stop Worrying and Love Restricted Mode”, 2021, 7 pages. [cited by applicant]
Maniscalco, Nick , “Multi-Aspace Processes”, 2021, 8 pages. [cited by applicant]
Maniscalco, Nick , et al., “Starnix Runner faulting on Restricted Mode Addresses”, 2021, 2 pages. [cited by applicant]
Maniscalco, Nick, et al., “Zircon Restricted Mode”, 2021, 4 pages. [cited by applicant]