# US 11,442,873 B2 · Microkernel architecture with enhanced reliability and security

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,442,873 B2
- Document ID: US11442873B2
- Status: Granted
- Kind: B2
- Application number: 16/563,666
- Filed: 2019-09-06
- Published: 2021-03-11
- Granted: 2022-09-13
- Earliest claimed: 2019-09-06
- Assignees: Meta Platforms Technologies, LLC
- Applicants: Meta Platforms Technologies, LLC
- Inventors: Bernhard Poess; Mark Lucovsky; Vadim Victor Spivak; Christoph Klee
- Web page: https://patentgrep.com/patent/US11442873B2

## CPC

- G06F 13/102: {where the program performs an interfacing function, e.g. device driver (G06F13/105 takes precedence; contention policies within device drivers G06F9/4881; scheduling within device drivers G06F9/52)}
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 9/44505: {Configuring for program initiating, e.g. using registry, configuration files}
- G06F 9/5005: {to service a request}
- G06F 9/5072: {Grid computing}
- G06F 9/541: {via adapters, e.g. between incompatible applications}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F 13/382: {using universal interface adapter}
- G06F 2213/0026: PCI express
- G06F 2213/3812: USB port controller
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one embodiment, a microkernel of an operating system executing on a computing system receives, from an application, a first system call requesting to communicate with a service registry. The first system call being associated with an operation request. The microkernel sends a first instruction to the service registry. The microkernel receives, from the service registry, a second system call requesting to communicate with at least one of an application service or a protocol service. The second system call being associated with the operation request. The microkernel sends a second instruction to at least one of the application service or the protocol service. The microkernel receives, from at least one of the application service or the protocol service, a third system call requesting to communicate with a driver service. The third system call being associated with the operation request. The microkernel sends a third instruction to the driver service.

## Claims

### Claim 1

A method, by a microkernel executing on a computing system, comprising:
receiving, by the microkernel from an application, a first system call requesting to communicate with a service registry, the first system call being associated with an operation request, wherein the service registry is located in a user space separate from a kernel space, and wherein the microkernel is located in the kernel space separate from the user space;
sending, by the microkernel in response to the first system call, a first instruction to the service registry;
receiving, by the microkernel from the service registry in response to sending the first instruction to the service registry, a second system call requesting to communicate with at least one of an application service or a protocol service, the second system call being associated with the operation request, wherein the application service and the protocol service are both located in the user space;
sending, by the microkernel in response to the second system call, a second instruction to at least one of the application service or the protocol service;
receiving, by the microkernel from at least one of the application service or the protocol service in response to sending the second instruction to the at least one of the application service or the protocol service, a third system call requesting to communicate with a driver service, the third system call being associated with the operation request, wherein the driver service is located in the user space; and
sending, by the microkernel in response to the third system call, a third instruction to the driver service.

### Claim 2 (depends on 1)

The method of claim 1, wherein the operation request is a request for a hardware resource to perform an operation.

### Claim 3 (depends on 1)

The method of claim 1, wherein the service registry determines whether the application has permission to access at least one of the application service or the protocol service, and wherein the service registry sends the second system call in response to determining the application has permission to access at least one of the application service or the protocol service.

### Claim 4 (depends on 3)

The method of claim 3, wherein the operation request is associated with an operation to be performed, and wherein the application identifies the application service or the protocol service to send the second instruction based on the operation to be performed.

### Claim 5 (depends on 3)

The method of claim 3, further comprising:
receiving, from the service registry in response to the service registry determining the application has permission to access at least one of the application service or the protocol service, a fourth system call to establish a connection between at least one of the application service or the protocol service to the application.

### Claim 6 (depends on 1)

The method of claim 1, wherein the application service comprises one of a key-value store, a motion service or an event service.

### Claim 7 (depends on 1)

The method of claim 1, wherein the protocol service comprises one of a volume service, a network service, a dynamic host configuration protocol, or a wifi service.

### Claim 8 (depends on 1)

The method of claim 1, wherein the third system call identifies the driver service of a plurality of driver services to send the third instruction.

### Claim 9 (depends on 8)

The method of claim 8, wherein the application service or the protocol service identifies the driver service to send the third instruction based on the second instruction, wherein the first instruction is associated with an operation to be performed by the driver service.

### Claim 10 (depends on 1)

The method of claim 1, wherein the driver service comprises one of a drivers block, a driver for a universal serial bus (USB), a driver for a peripheral component interconnect (PCI), a driver for a display, or a driver for an inertial measurement unit (IMU).

### Claim 11 (depends on 1)

The method of claim 1, wherein the service registry is one of a plurality of privileged services, and wherein the plurality of privileged services further comprises one of, a launcher, a loader, a device manager, or a permission broker.

### Claim 12 (depends on 11)

The method of claim 11, wherein each of the application service or the protocol service, the driver service, and the privileged service are running on separate processes.

### Claim 13 (depends on 11)

The method of claim 11, wherein the privileged service is associated with a first privilege level, wherein the first privilege level is associated with a first level of access to data and resources not accessible to the application service, protocol service, or the driver service.

### Claim 14 (depends on 11)

The method of claim 11, wherein the application service or the protocol service has permission to establish inter-process communication (IPC) calls with the driver service, and wherein the driver service has permission to establish IPC calls with the privileged service.

### Claim 15 (depends on 1)

The method of claim 1, further comprising:
receiving a first response to the third instruction from the driver service, wherein the first response is associated with the operation request; and
sending the first response to the application service or the protocol service.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
receiving a second response to the second instruction from the application service or the protocol service, wherein the second response is associated with the operation request; and
sending the second response to the application.

### Claim 17

One or more computer-readable non-transitory storage media embodying software that is operable when executed to:
receive, by a microkernel from an application, a first system call requesting to communicate with a service registry, the first system call being associated with an operation request, wherein the service registry is located in a user space separate from a kernel space, and wherein the microkernel is located in the kernel space separate from the user space;
send, by the microkernel in response to the first system call, a first instruction to the service registry;
receive, by the microkernel from the service registry in response to sending the first instruction to the service registry, a second system call requesting to communicate with at least one of an application service or a protocol service, the second system call being associated with the operation request, wherein the application service and the protocol service are both located in the user space;
send, by the microkernel in response to the second system call, a second instruction to at least one of the application service or the protocol service;
receive, by the microkernel from at least one of the application service or the protocol service in response to sending the second instruction to the at least one of the application service or the protocol service, a third system call requesting to communicate with a driver service, the third system call being associated with the operation request, wherein the driver service is located in the user space; and
send, by the microkernel in response to the third system call, a third instruction to the driver service.

### Claim 18

A system comprising: one or more processors; and a non-transitory memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to:
receive, by a microkernel from an application, a first system call requesting to communicate with a service registry, the first system call being associated with an operation request, wherein the service registry is located in a user space separate from a kernel space, and wherein the microkernel is located in the kernel space separate from the user space;
send, by the microkernel in response to the first system call, a first instruction to the service registry;
receive, by the microkernel from the service registry in response to sending the first instruction to the service registry, a second system call requesting to communicate with at least one of an application service or a protocol service, the second system call being associated with the operation request, wherein the application service and the protocol service are both located in the user space;
send, by the microkernel in response to the second system call, a second instruction to at least one of the application service or the protocol service;
receive, by the microkernel from at least one of the application service or the protocol service in response to sending the second instruction to the at least one of the application service or the protocol service, a third system call requesting to communicate with a driver service, the third system call being associated with the operation request, wherein the driver service is located in the user space; and
send, by the microkernel in response to the third system call, a third instruction to the driver service.
