# US 2014/0208034 A1 · System And Method for Efficient Paravirtualized OS Process Switching

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

- Number: US 2014/0208034 A1
- Document ID: US20140208034A1
- Status: Published application
- Kind: A1
- Application number: 13/744,899
- Filed: 2013-01-18
- Published: 2014-07-24
- Earliest claimed: 2013-01-18
- Assignees: Wind River Systems, Inc.
- Applicants: Wind River Systems, Inc.
- Inventors: Dennis RICE; Mark Dapoz; Raymond Richardson
- Web page: https://patentgrep.com/patent/US20140208034A1

## CPC

- G06F 12/0808: with cache invalidating means (G06F12/0815 takes precedence)
- G06F 9/4555: {Para-virtualisation, i.e. guest operating system has to be modified}
- G06F 12/0842: for multiprocessing or multitasking
- G06F 12/1036: for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence)
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/683: Invalidation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The exemplary embodiments described herein relate to systems and methods for improved process switching of a paravirtualized guest with a software-based memory management unit (“MMU”). One embodiment relates to a non-transitory computer readable storage medium including a set of instructions executable by a processor, the set of instructions, when executed, resulting in a performance of the following: create a plurality of new processes for each of a plurality of virtual environments, each of the virtual environments assigned one of a plurality of address space identifiers (“ASIDs”) stored in a cache memory, perform a process switch to one of the virtual environments thereby designating the one of the virtual environments as the active virtual environment, determine whether the active virtual environment has exhausted each of the ASIDs, and flush a cache memory when it is determined that the active virtual environment has exhausted each of the ASIDs.

## Claims

### Claim 1

A non-transitory computer readable storage medium including a set of instructions executable by a processor, the set of instructions, when executed, resulting in a performance of the following:
create a plurality of new processes for each of a plurality of virtual environments, each of the virtual environments assigned one of a plurality of address space identifiers (“ASIDs”) stored in a cache memory;
perform a process switch to one of the virtual environments thereby designating the one of the virtual environments as the active virtual environment;
determine whether the active virtual environment has exhausted each of the ASIDs; and
flush a cache memory when it is determined that the active virtual environment has exhausted each of the ASIDs.

### Claim 2 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein the execution of the set of instructions further results in the performance of the following:
delete the plurality of new processes for each of a plurality of virtual environments.

### Claim 3 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein the cache memory is a translation lookaside buffer.

### Claim 4 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein only one create application programming interface is called per virtual environment.

### Claim 5 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein a context load hypercall is used as only application programming interface required for switching to the active virtual environment.

### Claim 6 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein each of the virtual environments includes a guest operating system and the process is a kernel of the guest operating system.

### Claim 7 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein the process switching is performed by a hypervisor providing integrity against faulty data in any one of the plurality of virtual environments.

### Claim 8 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein the execution of the set of instructions further results in the performance of the following:
utilize multiple ASIDs allowing for multiple guest processes simultaneously within the cache memory.

### Claim 9 (depends on 1)

The non-transitory computer readable storage medium of claim 1, wherein mapping of virtual ASIDs to hardware ASIDs is implementation dependent.

### Claim 10

A system, comprising:
a shared cache memory;
a plurality of virtual environments each of the virtual environments assigned one of a plurality of address space identifiers (“ASIDs”) stored in the shared cache memory; and
a hypervisor creating a plurality of new processes for each of the plurality of virtual environments, performing a process switch to one of the virtual environments thereby designating the one of the virtual environments as the active virtual environment, determining whether the active virtual environment has exhausted each of the ASIDs, and flushing a cache memory when it is determined that the active virtual environment has exhausted each of the ASIDs.

### Claim 11 (depends on 10)

The system of claim 10, wherein the hypervisor further deletes the plurality of new processes for each of a plurality of virtual environments.

### Claim 12 (depends on 10)

The system of claim 10, wherein the cache memory is a translation lookaside buffer.

### Claim 13 (depends on 10)

The system of claim 10, wherein only one create application programming interface is called per virtual environment.

### Claim 14 (depends on 10)

The system of claim 10, wherein a context load hypercall is used as only application programming interface required for switching to the active virtual environment.

### Claim 15 (depends on 10)

The system of claim 10, wherein each of the virtual environments includes a guest operating system and the process is a kernel of the guest operating system.

### Claim 16 (depends on 10)

The system of claim 10, wherein the hypervisor provides integrity against faulty data in any one of the plurality of virtual environments.

### Claim 17 (depends on 10)

The system of claim 10, wherein the hypervisor further utilizes multiple ASIDs allowing for multiple guest processes simultaneously within the cache memory.

### Claim 18 (depends on 10)

The system of claim 10, wherein mapping of virtual ASIDs to hardware ASIDs is implementation dependent.

### Claim 19

A method, comprising:
creating, by a hardware hypervisor, a plurality of new processes for each of a plurality of virtual environments, each of the virtual environments assigned one of a plurality of address space identifiers (“ASIDs”) stored in a cache memory;
performing, by the hardware hypervisor, a process switch to one of the virtual environments thereby designating the one of the virtual environments as the active virtual environment;
determining, by the hardware hypervisor, whether the active virtual environment has exhausted each of the ASIDs; and
flushing, by the hardware hypervisor, a cache memory when it is determined that the active virtual environment has exhausted each of the ASIDs.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
deleting the plurality of new processes for each of a plurality of virtual environments.
