IP Library Granted Patent US 10,725,770
Granted Patent B2
US 10,725,770 · App. 14/642,656 · Granted Jul 28, 2020

Hot-swapping operating systems using inter-partition application migration

Inventors: Mukund Gunti (Sunnyvale, CA); Vishnu Sekhar (Sunnyvale, CA); Bernhard Poess (Saratoga, CA)
Assignee: VMware, Inc.
G06F8/656G06F9/4406G06F9/45558G06F2009/4557G06F2009/45575
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 10,725,770
App. No.
14/642,656
Granted
Jul 28, 2020
Kind
B2
Abstract

In a process for hot-swapping operating systems, an original operating system (OS) instance is executing on and controlling hardware of a computer. The original OS instance generates updated launch code that defines a division of the hardware into a source logical partition and a target logical partition. The original OS instance quiesces processes hardware of the target logical partition so that the original OS instance and an application running thereon are contained by the source logical partition. The original OS instance launches the updated OS instance so that it executes on the target logical partition. The application is moved from the source logical partition to the target logical partition. The original OS instance terminates. The updated OS instance claims hardware freed by the termination.

Claims (57)

1. A process comprising:

generating and storing, by an original operating-system (OS) instance controlling hardware devices of a computer, update launch code including,

computer-device identifiers identifying a computer set of devices included in the computer,

partition-device identifiers identifying a target subset of the computer set, the target subset including devices to be initially included in a target logical partition of the computer, and

executable launch code for launching an update OS instance;

quiescing, by the original OS instance, the devices of the target subset so that the original OS instance is executed on a source logical partition of the computer, the source logical partition including a source subset of the computer set;

launching, by the original OS instance and using the executable launch code, the updated OS instance on the target logical partition so that each of the original OS instance and the updated OS instance run on the hardware previously controlled by the original OS instance; and

moving, by the original OS instance and the updated OS instance, an application that had been executing on the original OS instance from the source logical partition to the target logical partition so that the application executes on the updated OS instance.

2. The process of claim 1 further comprising:

terminating the original OS instance; and

claiming, by the updated OS instance after the terminating, devices on which the original OS was executing after the quiescing and prior to the terminating.

3. The process of claim 1 wherein the launching is performed by a memory-resident kernel launcher that, during the moving, is shared by the original OS instance and the updated OS instance.

4. The process of claim 1 wherein the moving includes passing application state information from the original OS instance to the updated OS instance via shared memory shared by the original OS instance with the updated OS instance or via a network external to the computer.

5. The process of claim 1 further comprising configuring an input-output memory management unit (IOMMU) to protect memory of each of the source logical partition and the target logical partition from direct accesses by components of the other of the source logical partition and the target logical partition.

6. The process of claim 1 wherein, in response to posting, by the original OS instance, of a message in the shared memory, an interrupt controller sends an interrupt to a processor in the logical target partition.

7. The process of claim 6 wherein, in response to the message, the updated OS initializes a device identified in the message.

8. The process of claim 1 wherein the computer is of a type selected from a set consisting of general-purpose computer, server, laptop, tablet and smartphone.

9. The process of claim 1 wherein the application is a virtual machine.

10. The process of claim 9 wherein the original OS instance is an original hypervisor instance and the updated OS instance is an updated hypervisor instance.

11. A system comprising non-transitory storage media encoded with instructions that, when executed by hardware, cause the hardware to implement a process including:

generating and storing, by an original operating-system (OS) instance controlling hardware devices of a computer, update launch code including,

computer-device identifiers identifying a computer set of devices included in the computer,

partition-device identifiers identifying a target subset of the computer set, the target subset including devices to be initially included in a target logical partition of the computer, and

executable launch code for launching an update OS instance;

quiescing, by the original OS instance, the devices of the target subset so that the original OS instance is executed on a source logical partition of the computer, the source logical partition including a source subset of the computer set;

launching, by the original OS instance and using the executable launch code, the updated OS instance on the target logical partition so that each of the original OS instance and the updated OS instance run on the hardware previously controlled by the original OS instance; and

moving, by the original OS instance and the updated OS instance, an application that had been executing on the original OS instance from the source logical partition to the target logical partition so that the application executes on the updated OS instance.

12. The system of claim 11 further comprising:

terminating the original OS instance; and

claiming, by the updated OS instance after the terminating, devices on which the original OS instance was executing after the quiescing and prior to the terminating.

13. The system of claim 11 wherein the launching is performed by a memory-resident kernel launcher that, during the moving, is shared by the original OS instance and the updated OS instance.

14. The system of claim 11 wherein the moving includes passing application state information from the original OS instance to the target OS instance via shared memory shared by the original OS instance with the target OS instance or via a network external to the computer.

15. The system of claim 11 further comprising an input-output memory management unit (IOMMU), the process including configuring the IOMMU to protect memory of each of the source logical partition and the target logical partition from direct accesses by components of the other of the source logical partition and the target logical partition.

16. The system of claim 11 wherein, in response to posting, by the original OS instance, of a message in the shared memory, an interrupt controller sends an interrupt to a processor in the logical target partition.

17. The system of claim 16 wherein, in response to the message, the updated OS initializes a device identified in the message.

18. The system of claim 11 wherein the computer is of a type selected from a set consisting of general-purpose computer, server, laptop, tablet and smartphone.

19. The system of claim 11 further comprising the hardware.

20. The system of claim 11 wherein the application is a virtual machine.

21. The system of claim 20 wherein the original OS instance is an original hypervisor instance and the updated OS instance is an updated hypervisor instance.

22. A computer comprising:

non-transitory media for storing data and instructions for manipulating the data;

a processor for executing the instructions; and

communications devices for transmitting and receiving at least some of the data;

the media, processor and communications devices cooperating to define,

means for generating and storing update launch code including, the means for generating and storing being associated with an original operating-system (OS) instance controlling hardware devices of a computer,

computer-device identifiers identifying devices in a computer set of devices included in the computer,

partition-device identifiers identifying devices in a target subset of the computer set, the target subset including devices to be initially included in a target logical partition of the computer, and

executable launch code for launching an update OS instance;

means for quiescing the devices of the target subset so that the original OS instance is executed on a source logical partition of the computer, the source logical partition including a source subset of the computer set;

means for launching, using the executable launch code, the updated OS instance on the target logical partition so that each of the original OS instance and the updated OS instance run on the hardware previously controlled by the original OS instance; and

means for moving an application that had been executing on the original OS instance from the source logical partition to the target logical partition so that the application executes on the updated OS instance.

23. The computer of claim 22 wherein the media, processor and communications devices further cooperate to define,

means for terminating the original OS instance; and

means for claiming for use by the updated OS after the terminating, devices on which the original OS was executing after the quiescing and prior to the terminating.

24. The computer of claim 22 wherein the computer is of a type selected from a set consisting of general-purpose computer, server, laptop, tablet and smartphone.

25. The computer of claim 22 wherein the application is a virtual machine.

26. The computer of claim 25 wherein the original OS instance is an original hypervisor instance and the updated OS instance is an updated hypervisor instance.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2015
From: GUNTI, MUKUND; SEKHAR, VISHNU; POESS, BERNHARD
To: VMWARE, INC.
Reel/Frame 035120/0431 →
Continuity (2)
Provisional Application 62105128 · Jan 19, 2015
Related Publication 20160210141A1 · Jul 21, 2016