IP Library Granted Patent US 9,075,789
Granted Patent B2
US 9,075,789 · App. 13/710,891 · Granted Jul 7, 2015

Methods and apparatus for interleaving priorities of a plurality of virtual processors

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 9,075,789
App. No.
13/710,891
Granted
Jul 7, 2015
Kind
B2
Abstract

Methods and apparatus for interleaving priorities of a plurality of virtual processors are disclosed. A hypervisor assigns a base priority to each virtual processor and schedules one or more virtual processors to execute on one or more physical processors based on the current priority associated with each virtual processor. When the hypervisor receives an indication from one of the virtual processors that its current priority may be temporarily reduced, the hypervisor lowers the current priority of that virtual processor. The hypervisor then schedules another virtual processor to execute on a physical processor instead of the virtual processor with the temporarily reduced priority. When the hypervisor receives an interrupt for the virtual processor with the lowered priority, the hypervisor raises the priority of that virtual processor and schedules the virtual processor with the restored priority to execute on a physical processor so that processor can handle the interrupt.

Claims (53)

1. A method of interleaving priorities of a plurality of virtual processors, the method comprising:

assigning a first maximum priority to a first virtual processor;

assigning a second maximum priority to a second virtual processor, wherein the second maximum priority is lower than the first maximum priority;

scheduling the first virtual processor to execute based on a first current priority associated with the first virtual processor being equal to the first maximum priority;

receiving an indication from the first virtual processor that the first current priority associated with the first virtual processor may be temporarily reduced;

lowering the first current priority associated with the first virtual processor to a temporary priority level, wherein the temporary priority level is lower than the second maximum priority;

scheduling the second virtual processor to execute based on a second current priority associated with the second virtual processor being equal to the second maximum priority;

receiving an interrupt associated with the first virtual processor;

raising the first current priority associated with the first virtual processor to the first maximum priority in response to receiving the interrupt; and

scheduling the first virtual processor to execute again based on the first current priority associated with the first virtual processor being equal to the first maximum priority.

2. The method of claim 1 , further comprising receiving an interrupt threshold from the first virtual processor, the interrupt threshold being indicative of at least one interrupt level that will not cause the raising of the first current priority associated with the first virtual processor to the first maximum priority.

3. The method of claim 1 , wherein lowering the first current priority associated with the first virtual processor includes lowering the first current priority associated with the first virtual processor to a lowest priority.

4. The method of claim 1 , wherein scheduling the first virtual processor and the second virtual processor is performed by a hypervisor.

5. The method of claim 1 , further comprising receiving an identifier indicative of a second virtual processor that the first virtual processor is waiting on.

6. An apparatus for interleaving priorities of a plurality of virtual processors, the apparatus comprising:

a hypervisor; and

at least one physical processor operatively coupled to the hypervisor;

wherein the hypervisor is structured to:

assign a first maximum priority to a first virtual processor;

assign a second maximum priority to a second virtual processor, wherein the second maximum priority is lower than the first maximum priority;

schedule the first virtual processor to execute based on a first current priority associated with the first virtual processor being equal to the first maximum priority;

receive an indication from the first virtual processor that the first current priority associated with the first virtual processor may be temporarily reduced;

lower the first current priority associated with the first virtual processor to a temporary priority level, wherein the temporary priority level is lower than the second maximum priority;

schedule the second virtual processor to execute based on a second current priority associated with the second virtual processor being equal to the second maximum priority;

receive an interrupt associated with the first virtual processor;

raise the first current priority associated with the first virtual processor to the first maximum priority in response to the interrupt; and

schedule the first virtual processor to execute again based on the first current priority associated with the first virtual processor being equal to the first maximum priority.

7. The apparatus of claim 6 , wherein the hypervisor is structured to receive an interrupt threshold from the first virtual processor, the interrupt threshold being indicative of at least one interrupt level that will not cause the raising of the first current priority associated with the first virtual processor to the first maximum priority.

8. The apparatus of claim 6 , wherein the hypervisor is structured to lower the first current priority associated with the first virtual processor to a lowest priority.

9. The apparatus of claim 6 , wherein the hypervisor is structured to receive an identifier indicative of a second virtual processor that the first virtual processor is waiting on.

10. A computer readable memory storing instructions structured to cause an electronic device to:

assign a first maximum priority to a first virtual processor;

assign a second maximum priority to a second virtual processor, wherein the second maximum priority is lower than the first maximum priority;

schedule the first virtual processor to execute based on a first current priority associated with the first virtual processor being equal to the first maximum priority;

receive an indication from the first virtual processor that the first current priority associated with the first virtual processor may be temporarily reduced;

lower the first current priority associated with the first virtual processor to a temporary priority level, wherein the temporary priority level is lower than the second maximum priority;

schedule the second virtual processor to execute based on a second current priority associated with the second virtual processor being equal to the second maximum priority;

receive an interrupt associated with the first virtual processor;

raise the first current priority associated with the first virtual processor to the first maximum priority in response to the interrupt; and

schedule the first virtual processor to execute again based on the first current priority associated with the first virtual processor being equal to the first maximum priority.

11. The computer readable memory of claim 10 , wherein the instructions are structured to cause the electronic device to receive an interrupt threshold from the first virtual processor, the interrupt threshold being indicative of at least one interrupt level that will not cause the raising of the first current priority associated with the first virtual processor to the first maximum priority.

12. The computer readable memory of claim 10 , wherein the instructions are structured to cause the electronic device to lower the first current priority associated with the first virtual processor to a lowest priority.

13. The computer readable memory of claim 10 , wherein the instructions are structured to cause the electronic device to schedule the first virtual processor and the second virtualized via a hypervisor.

14. The computer readable memory of claim 10 , wherein the instructions are structured to cause the electronic device to receive an identifier indicative of a second virtual processor that the first virtual processor is waiting on.

15. A method of interleaving priorities of a plurality of virtual processors, the method comprising:

lowering a priority level of a first virtual processor to a first priority level in response to receiving an indication from the first virtual processor that the priority level may be lowered, the first priority level being lower than a second priority level of a second virtual processor; and

raising the priority level of the first virtual processor in response to receiving an interrupt for the first virtual processor.

16. The method of claim 15 , further comprising receiving an interrupt threshold from the first virtual processor, the interrupt threshold being indicative of at least one interrupt level that will not cause the raising of the priority level.

17. The method of claim 15 , wherein raising the priority level includes raising the priority level to a base priority level previously assigned to the first virtual processor.

18. The method of claim 15 , wherein lowering the priority level includes lowering the priority level to a lowest priority level.

19. The method of claim 15 , wherein lowering the priority level and raising the priority level are each performed by a hypervisor.

20. The method of claim 15 , further comprising receiving an indication that the first virtual processor is waiting on the second virtual processor.

21. The method of claim 15 , further comprising scheduling the second virtual processor in response to lowering the priority level of the first virtual processor.

Assignments (6)
MERGER Recorded Jul 6, 2016
From: GENERAL DYNAMICS C4 SYSTEMS, INC.
To: GENERAL DYNAMICS ADVANCED INFORMATION SYSTEMS, INC.
Reel/Frame 039269/0007 →
MERGER Recorded Jul 6, 2016
From: GENERAL DYNAMICS ADVANCED INFORMATION SYSTEMS, INC.
To: GENERAL DYNAMICS MISSION SYSTEMS, INC.
Reel/Frame 039269/0131 →
MERGER Recorded Jun 22, 2016
From: GENERAL DYNAMICS C4 SYSTEMS, INC.
To: GENERAL DYNAMICS ADVANCED INFORMATION SYSTEMS, INC.
Reel/Frame 039117/0063 →
MERGER AND CHANGE OF NAME Recorded Jun 22, 2016
From: GENERAL DYNAMICS MISSION SYSTEMS, LLC; GENERAL DYNAMICS ADVANCED INFORMATION SYSTEMS, INC.
To: GENERAL DYNAMICS MISSION SYSTEMS, INC
Reel/Frame 039117/0839 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2014
From: OPEN KERNEL LABS, INC.
To: GENERAL DYNAMICS C4 SYSTEMS, INC.
Reel/Frame 032985/0455 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2014
From: VAN SCHAIK, CARL FRANS
To: GENERAL DYNAMICS C4 SYSTEMS, INC.
Reel/Frame 031975/0708 →