# US 8,544,012 B2 · Changing a scheduler in a virtual machine monitor

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

- Number: US 8,544,012 B2
- Document ID: US8544012B2
- Status: Granted
- Kind: B2
- Application number: 13/472,189
- Filed: 2012-05-15
- Published: 2012-09-06
- Granted: 2013-09-24
- Earliest claimed: 2012-05-15
- Assignees: Intel Corporation
- Applicants: Benjamin Liu
- Inventors: Benjamin Liu
- Web page: https://patentgrep.com/patent/US8544012B2

## CPC

- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Machine-readable media, methods, and apparatus are described to change a first scheduler in the virtual machine monitor. In some embodiments, a second scheduler is loaded in a virtual machine monitor when the virtual machine monitor is running; and then is activated to handle a scheduling request for a scheduling process in place of the first scheduler, when the virtual machine monitor is running.

## Claims

### Claim 1

A method comprising:
loading a second scheduler in a virtual machine monitor when the virtual machine monitor is running; and
activating the loaded second scheduler to handle a scheduling request for a scheduling process in place of a first scheduler when the virtual machine monitor is running, wherein an address, corresponding to a function in a function pointer array and associated with the first scheduler, is to be dynamically patched into the scheduling request to allow the scheduling request to be sent to the second scheduler directly, wherein the loading further comprises ceasing device resources owned by a running virtual machine in response to receiving a scheduler changing request to change the first scheduler and loading the second scheduler in the virtual machine monitor based upon a scheduler parameter of the scheduler changing request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the loading further comprises unloading the first scheduler from the virtual machine monitor before loading the second scheduler.

### Claim 3 (depends on 1)

The method of claim 1, wherein the activating further comprises:
replacing a first scheduler identifier with a second scheduler identifier to route between the second scheduler and a requester that generated the scheduling request, when the virtual machine monitor is running.

### Claim 4 (depends on 1)

The method of claim 1, wherein the activating comprises:
replacing a first function pointer array pointing to a first function array of the first scheduler with a second function pointer array pointing to a second function array of the second scheduler to route between the second scheduler and a requester that generated the request, when the virtual machine monitor is running.

### Claim 5 (depends on 1)

The method of claim 1, wherein the activating comprises dynamically patching an address associated with the second scheduler into the scheduling request when the virtual machine monitor is running.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
unloading the second scheduler from the virtual machine monitor when the virtual machine monitor is running; and
re-activating the first scheduler to handle a scheduling request after the second scheduler has been unloaded.

### Claim 7 (depends on 1)

The method of claim 1, wherein the virtual machine monitor is to comprise the function pointer array.

### Claim 8 (depends on 1)

The method of claim 1, wherein the addresses associated with the first scheduler are to be dynamically patched into the scheduling request during a scheduler model loading or unloading stage.

### Claim 9

A non-transitory computer-readable medium comprising one or more instructions that when executed on a processor configure the processor to perform one or more operations to:
load a second scheduler in a virtual machine monitor when the virtual machine monitor is running; and
activate the loaded second scheduler to handle a scheduling request for a scheduling process in place of a first scheduler when the virtual machine monitor is running, wherein an address, corresponding to a function in a function pointer array and associated with the first scheduler, is to be dynamically patched into the scheduling request to allow the scheduling request to be sent to the second scheduler directly,
wherein the loading further comprises ceasing device resources owned by a running virtual machine in response to receiving a scheduler changing request to change the first scheduler and loading the second scheduler in the virtual machine monitor based upon a scheduler parameter of the scheduler changing request.

### Claim 10 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to unload the first scheduler from the virtual machine monitor before loading the second scheduler.

### Claim 11 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to replace a first scheduler identifier with a second scheduler identifier to route between the second scheduler and a requester that generated the scheduling request, when the virtual machine monitor is running.

### Claim 12 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to replace a first function pointer array pointing to a first function array of the first scheduler with a second function pointer array pointing to a second function array of the second scheduler to route between the second scheduler and a requester that generated the request, when the virtual machine monitor is running.

### Claim 13 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to dynamically patch an address associated with the second scheduler into the scheduling request when the virtual machine monitor is running.

### Claim 14 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to: unload the second scheduler from the virtual machine monitor when the virtual machine monitor is running; and re-activate the first scheduler to handle a scheduling request after the second scheduler has been unloaded.

### Claim 15 (depends on 9)

The computer-readable medium of claim 9, wherein the virtual machine monitor is to comprise the function pointer array.

### Claim 16 (depends on 9)

The computer-readable medium of claim 9, further comprising one or more instructions that when executed on the processor configure the processor to perform one or more operations to dynamically patch the addresses associated with the first scheduler into the scheduling request during a scheduler model loading or unloading stage.

### Claim 17

An apparatus comprising:
a processor having one or more processing cores to:
load a second scheduler in a virtual machine monitor when the virtual machine monitor is running; and
activate the loaded second scheduler to handle a scheduling request for a scheduling process in place of a first scheduler when the virtual machine monitor is running, wherein an address, corresponding to a function in a function pointer array and associated with the first scheduler, is to be dynamically patched into the scheduling request to allow the scheduling request to be sent to the second scheduler directly,
wherein the loading further comprises ceasing device resources owned by a running virtual machine in response to receiving a scheduler changing request to change the first scheduler and loading the second scheduler in the virtual machine monitor based upon a scheduler parameter of the scheduler changing request.

### Claim 18 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to unload the first scheduler from the virtual machine monitor before loading the second scheduler.

### Claim 19 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to replace a first scheduler identifier with a second scheduler identifier to route between the second scheduler and a requester that generated the scheduling request, when the virtual machine monitor is running.

### Claim 20 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to replace a first function pointer array pointing to a first function array of the first scheduler with a second function pointer array pointing to a second function array of the second scheduler to route between the second scheduler and a requester that generated the request, when the virtual machine monitor is running.

### Claim 21 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to dynamically patch an address associated with the second scheduler into the scheduling request when the virtual machine monitor is running.

### Claim 22 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to:
unload the second scheduler from the virtual machine monitor when the virtual machine monitor is running; and re-activate the first scheduler to handle a scheduling request after the second scheduler has been unloaded.

### Claim 23 (depends on 17)

The processor of claim 17, wherein the virtual machine monitor is to comprise the function pointer array.

### Claim 24 (depends on 17)

The processor of claim 17, wherein at least one of the one or more processing cores is to dynamically patch the addresses associated with the first scheduler into the scheduling request during a scheduler model loading or unloading stage.
