Method for forking or migrating a virtual machine
Claim Score by NHIP
Abstract
A method is provided for increasing the efficiency of virtual machine processing. A parent virtual machine is provided on a host computer. The parent virtual machine is temporarily or permanently suspended. A child virtual machine is created at a new location by forking the parent virtual machine. The child virtual machine may not initially include all the stored data that is associated with the parent virtual machine.

Term
Term ended
Projected expiry passed 15 February 2023, 3.6 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
14 claims: 1 independent, 13 dependent
- 1Broadest claimClaim Score 45, average(NHIP)A method for increasing the efficiency of virtual machine processing, comprising:providing on a first host system a parent virtual machine configured to host a guest operating system, the parent virtual machine comprising a software environment that appears as a hardware computer to the guest operating system;copying the parent virtual machine to create a child virtual machine at a new location, wherein the copied child virtual machine comprises a version of the parent virtual machine without a memory of the parent virtual machine;executing the child virtual machine as a first virtual machine;and copying a portion of the parent virtual machine to the child virtual machine as required for execution on a set of virtual machines, wherein the set of virtual machines comprises the parent virtual machine and the child virtual machine.
42 paragraphs in 6 sections, as filed
CROSS-REFERENCE
0001This application is a continuation of U.S. patent application Ser. No. 10/193,531, filed on Jul. 11, 2002 entitled “METHOD FOR FORKING OR MIGRATING A VIRTUAL MACHINE,” the contents of which are herein incorporated by reference.
FIELD OF THE INVENTION
0002The present invention relates in general to the field of virtual machines and, more particularly, to a method for applying the concepts of forking and migration to virtual machines.
BACKGROUND OF THE INVENTION
0003Computers include general purpose central processing units (CPUs) that are designed to execute a specific set of system instructions. A group of processors that have similar architecture or design specifications may be considered to be members of the same processor family. Examples of current processor families include the Motorola 680×0 processor family, manufactured by Motorola, Inc. of Phoenix, Ariz.; the Intel 80×86 processor family, manufactured by Intel Corporation of Sunnyvale, Calif.; and the PowerPC processor family, which is manufactured by Motorola, Inc. and used in computers manufactured by Apple Computer, Inc. of Cupertino, Calif. Although a group of processors may be in the same family because of their similar architecture and design considerations, processors may vary widely within a family according to their clock speed and other performance parameters.
0004Each family of microprocessors executes instructions that are unique to the processor family. The collective set of instructions that a processor or family of processors can execute is known as the processor's instruction set. As an example, the instruction set used by the Intel 80×86 processor family is incompatible with the instruction set used by the PowerPC processor family. The Intel 80×86 instruction set is based on the Complex Instruction Set Computer (CISC) format. The Motorola PowerPC instruction set is based on the Reduced Instruction Set Computer (RISC) format. CISC processors use a large number of instructions, some of which can perform rather complicated functions, but which require generally many clock cycles to execute. RISC processors use a smaller number of available instructions to perform a simpler set of functions that are executed at a higher rate.
0005The uniqueness of the processor family among computer systems also typically results in incompatibility among the other elements of hardware architecture of the computer systems. A computer system manufactured with a processor from the Intel 80×86 processor family will have a hardware architecture that is different from the hardware architecture of a computer system manufactured with a processor from the PowerPC processor family. Because of the uniqueness of the processor instruction set and a computer system's hardware architecture, application software programs are typically written to run on a particular computer system running a particular operating system.
0006A computer manufacturer will want to maximize its functionality by having more rather than fewer applications run on the microprocessor family associated with the computer manufacturer's product line. To expand the number of operating systems and application programs that can run on a computer system, a field of technology has developed in which a given computer having one type of CPU, called a host, will run an emulator program that allows the host computer to emulate receiving and executing the instructions of an unrelated type of CPU, called a guest. Thus, the host computer will execute an application that will cause one or more host instructions to be called in response to a given guest instruction. In some cases, the host computer can both run software designed for its own hardware architecture, other than the emulation program, and software written for computers having an unrelated hardware architecture. As a more specific example, a computer system manufactured by Apple Computer, for example, may run operating systems and programs written for PC-based computer systems. It may also be possible to use an emulator program to concurrently operate multiple incompatible operating systems on a single CPU. In this arrangement, although each operating system is incompatible with the other, an emulator program can host one of the two operating systems, allowing the otherwise incompatible operating systems to run concurrently on the same computer system.
0007When a guest computer system is emulated on a host computer system, the guest computer system is said to be a virtual machine, as the guest computer system exists only as a software representation of the operation of the hardware architecture of the guest computer system. The terms emulator and virtual machine are sometimes used interchangeably to denote the ability to mimic or emulate the hardware architecture of an entire computer system. As an example, the Virtual PC software created by Connectix Corporation of San Mateo, Calif. emulates an entire computer that includes an Intel 80×86 Pentium processor and various motherboard components and cards. The operation of these components is emulated in the virtual machine that is being run on the host machine. An emulator program executing on the operating system software and hardware architecture of the host computer, such as a computer system having a PowerPC processor, mimics the operation of the entire guest computer system. The emulator program acts as the interchange between the hardware architecture of the host machine and the instructions transmitted by the software running within the emulated environment.
0008One advantage of a virtual machine over a real machine is the ability to quickly and cheaply create multiple instances of virtual machines. If allowed by the virtual machine implementation, multiple virtual machines can exist simultaneously in a single host machine (host computer system) environment. Resources of the host machine can be divided among the various virtual machines. For example, a single host machine with four processors and 1 gigabyte of random access memory (RAM) could be divided evenly into four virtual machines, each of which is given one processor and 256 megabytes of RAM. Other resource allocation divisions are possible.
0009This flexible resource allocation becomes even more useful when combined with the ability to move virtual machines from one host machine to another. This allows for “load balancing” of systems. For example, if a virtual machine requires more processing power than is available on one host machine, it can be moved to another host machine that has extra capacity.
0010In some computing environments, it is useful to have multiple machines that are nearly identical in configuration (both hardware and software). For example, a large electronic-commerce web site such as Amazon.com has dozens or hundreds of web servers that are all nearly identical in configuration. This setup allows for easy expandability. When current capacity is inadequate, additional servers can quickly be brought on line.
0011Another case where nearly-identical configurations are useful is in the testing of configuration modifications. When dealing with mission-critical applications, IS managers often want to test software configuration changes before applying them to the production system. For example, if a new “security patch” was made available by Microsoft Corporation for the Windows operating system, an administrator may want to test this patch on a separate server machine before installing the patch on the production server.
SUMMARY OF THE INVENTION
0012The present invention in one implementation provides a method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine. Another step is temporarily suspending the parent virtual machine. Another step is forking the parent virtual machine to create a child virtual machine at a new location.
0013The present invention provides another method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine that is associated with stored data. Another step of the method is temporarily suspending the parent virtual machine. Another step is forking the parent virtual machine to create a child virtual machine at a new location without at least a first portion of the stored data.
0014Further, the present invention provides another method for increasing the efficiency of virtual machine processing. One step of the method is providing a parent virtual machine that is associated with stored data. Another step of the method is permanently suspending the parent virtual machine. Another step is migrating the parent virtual machine to create a child virtual machine at a new location without at least a first portion of the stored data.
0015An advantage of one implementation of the present invention is that it makes possible the forking of a virtual machine. The ability to fork increases the utility of the aforementioned multiple instances of virtual machines. Forking can, in some circumstances, create multiple instances quickly enough that most functions of and applications running on the virtual machines are not affected significantly.
0016Another advantage of an implementation of the present invention is that it increases the efficiency of virtual machine processing.
0017One implementation of the method of the present invention has the advantage of a forking time unaffected by the size of the parent virtual machine's memory. When the non-memory portion of the parent virtual machine consists of only a few hundred kilobytes of data, the forking time is about a millisecond on some systems.
0018If demand paging is added to the method, then total execution time may also depend on the size of the parent's memory. However, demand paging does not cause conflicts with the applications running on the parent and child virtual machines.
0019No one of the preceding advantages is critical to the invention. Particular implementations of the invention may achieve only a subset of the advantages. For example, one implementation of the invention may only provide the option of forking a virtual machine. Other technical advantages of the present invention will be readily apparent to one skilled in the art from the following figures, descriptions, and claims.
BRIEF DESCRIPTION OF THE DRAWINGS
0020A more complete understanding of the present invention and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
0021<figref idref="DRAWINGS">FIG. 1</figref> is a diagram of the logical relationship of the elements of an emulated computer system running in a host computer system;
0022<figref idref="DRAWINGS">FIG. 2</figref> is a flow diagram of a method for forking a virtual machine;
0023<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram of demand paging used in forking a virtual machine;
0024<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of a method for migrating a virtual machine; and
0025<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of demand paging used in migrating a virtual machine.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
0026In the case of an emulated computer system or virtual machine, an emulation program provides an emulated operating environment in the host computer system. Shown in <figref idref="DRAWINGS">FIG. 1</figref> is a diagram of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system <b>10</b>. An emulation program <b>14</b> runs on a host operating system that executes on the host computer system hardware or processor <b>11</b>. Emulation program <b>14</b> emulates a guest computer system <b>16</b>, including a guest operating system <b>18</b>. Guest application programs are able to execute on guest operating system <b>18</b>. In the emulated operating environment of <figref idref="DRAWINGS">FIG. 1</figref>, because of the operation of emulation program <b>14</b>, guest application <b>20</b> can run on the computer system <b>10</b> even though guest application <b>20</b> is designed to run on an operating system that is generally incompatible with host operating system <b>12</b> and host computer system hardware <b>11</b>.
0027Referring now to <figref idref="DRAWINGS">FIGS. 2 and 3</figref>, “forking” is a term used by UNIX programmers to describe the duplication of a UNIX process and its address space. Both the original process and the fork are then allowed to run as independent processes from the forking point. The implementation of forking often involves a technique called “copy on write” in which case all memory pages in both address spaces are marked “write protected”. When either the original or the forked process writes to a page, a copy is made so that each process has its own copy. Pages that are not modified can continue to be shared between the two processes. This technique not only saves on memory resources, but it also makes forking much faster than otherwise possible.
0028In the present invention, the concept of forking a single process is combined with the concept of a virtual machine. The present invention allows for fast conversion of shared resources to private copies between an original virtual machine and its fork. However, resource sharing is possible only if both virtual machines are running on the same host.
0029Virtual machine forking can be used to quickly replicate an existing virtual machine. For example, if a user wants to test a new patch, he can fork the virtual machine and apply the patch to the non-production fork. Once the patch has been tested, it can be applied to the original copy with limited risk. Alternatively, the production and non-production virtual machines could be swapped once the testing of the patch was completed.
0030Shown in <figref idref="DRAWINGS">FIG. 2</figref> is a flow diagram of a method <b>20</b> for forking a virtual machine. In step <b>202</b>, a virtual machine parent is suspended. In step <b>204</b>, a copy or “snapshot” is made of all of the pieces of the parent virtual machine other than the memory of the parent virtual machine. In step <b>206</b>, the snapshot is moved to a new location, i.e. a location other than the location of the parent. Moving the snapshot to a new location creates a new virtual machine child. The child may or may not be located on the same host computer system as the parent. In step <b>208</b>, pieces of the parent's memory are sent to the child using demand paging. Demand paging, depicted in <figref idref="DRAWINGS">FIG. 3</figref>, is a method for sending pieces or pages of memory from the parent to the child. In demand paging, parent memory is prioritized based on what the child actively requires.
0031<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram of the demand paging of step <b>208</b> used in forking a virtual machine. In step <b>302</b>, it is determined whether or not the parent virtual machine is about to modify a piece of the parent's memory that has not yet been sent to the child. If the parent virtual machine is about to modify a memory piece, in step <b>304</b>, then before the parent is allowed to modify the memory piece, either the piece is sent to the child virtual machine or a temporary copy of the piece is made. The temporary copy is saved by the parent until a later, as-yet-undetermined point in the demand paging method, at which point the copy is sent to the child. If the parent is not about to modify a memory piece or if step <b>304</b> is completed, the method proceeds to step <b>306</b>.
0032In step <b>306</b>, it is determined whether or not the child virtual machine is accessing the memory of the parent virtual machine. If the child is accessing the parent's memory, in step <b>308</b>, the child virtual machine is temporarily suspended and the piece of the parent's memory required by the child is sent from the parent to the child. If the child is not accessing the parent's memory, in step <b>310</b>, pieces of the parent's memory that are not actively required by the child may be sent from the parent to the child. If step <b>308</b> or step <b>310</b> is completed, the method proceeds to step <b>312</b>.
0033In step <b>312</b>, it is determined whether or not all of the memory of the parent virtual machine has been sent to the child virtual machine. If not all of the memory has been sent, the method proceeds to step <b>302</b>, described above. If all of the memory has been sent, then the demand paging method ends.
0034Referring now to <figref idref="DRAWINGS">FIGS. 4 and 5</figref>, “migrating” is a term that refers to the movement of a virtual machine from one host machine to another. When a virtual machine is migrated, the original virtual machine is permanently suspended; and the copy runs in a new location. One way to implement migration involves saving the entire state of the virtual machine (including all of its RAM) to a file on disk, then copying the file to the new host and restoring the machine state.
0035In the present invention, migrating is similar to forking in its implementation. As with a forked virtual machine, a migrated virtual machine can start running almost immediately after it is created, i.e. within a second or two after creation. This feature results from the use of demand paging and “copy-on-access,” wherein copy-on-access is defined as the copying of parent's memory to the child upon the child's accessing the parent's memory. Copy-on-access is an aspect of demand paging for migrating a virtual machine.
0036Copy-on-access is also an advantage of the present invention over existing technologies. Existing technologies save and restore an entire copy of the parent's Random Access Memory (RAM). Existing technologies' saving and restoring can take anywhere from 5 to 60 seconds, depending on the size of the memory allocated to the parent
0037One application of migrating a virtual machine is load balancing. Another application would be for fail-over or hardware maintenance. For example, if the hardware in the host machine requires maintenance (e.g. more memory is to be added), the virtual machine can be temporarily migrated to a backup machine, preventing downtime.
0038Shown in <figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram of a method <b>40</b> for migrating a virtual machine. In step <b>402</b>, a parent virtual machine is permanently suspended. In step <b>204</b>, a copy or “snapshot” is made of all of the pieces of the parent virtual machine other than the memory of the parent virtual machine. In step <b>206</b>, the snapshot is moved to a new location, i.e. a location other than the location of the parent. Moving the snapshot to a new location creates a child virtual machine. The child may or may not be located on the same computer system as the parent. In step <b>404</b>, pieces of the parent's memory are sent to the child using demand paging. Demand paging, depicted in <figref idref="DRAWINGS">FIG. 5</figref>, is a method for sending pieces or pages of memory from the parent to the child. In demand paging, parent memory is prioritized based on what the child actively requires.
0039<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of the demand paging of step <b>404</b> used in migrating a virtual machine. In step <b>306</b>, it is determined whether or not the child virtual machine is accessing the memory of the parent virtual machine. If the child is accessing the parent's memory, in step <b>308</b>, the child virtual machine is temporarily suspended and the piece of the parent's memory required by the child is sent from the parent to the child. If the child is not accessing the parent's memory, in step <b>310</b>, pieces of the parent's memory that are not actively required by the child may be sent from the parent to the child. If step <b>308</b> or step <b>310</b> is completed, the method proceeds to step <b>312</b>.
0040In step <b>312</b>, it is determined whether or not all of the memory of the parent virtual machine has been sent to the child virtual machine. If not all of the memory has been sent, the method proceeds to step <b>306</b>, described above. If all of the memory has been sent, the method proceeds to step <b>502</b>. In step <b>502</b>, the parent's memory is deleted. After step <b>502</b>, the demand paging method ends.
0041The present invention is not limited in its application to the emulation of a particular computer system architecture, particularly the Intel 80×86 architecture.
0042Although the present invention has been described in detail, it should be understood that various changes, substitutions, and alterations can be made thereto without departing from the spirit and scope of the invention as defined by the appended claims.
Contents6
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| CN104067288A | Cited by | China | Search report |
| US8260904B2 | Cited by | United States of America | Search report |
| US2009296726A1 | Cited by | United States of America | Pre-grant |
| US10013268B2 | Cited by | United States of America | Search report |
| US8234469B2 | Cited by | United States of America | Applicant |
| US10248454B2 | Cited by | United States of America | Applicant |
| US2015127833A1 | Cited by | United States of America | Pre-grant |
| US2013060947A1 | Cited by | United States of America | Pre-grant |
| US9389901B2 | Cited by | United States of America | Applicant |
| US9176781B2 | Cited by | United States of America | Applicant |
| US2008070222A1 | Cited by | United States of America | Pre-grant |
| US9354921B2 | Cited by | United States of America | Search report |
| US8478801B2 | Cited by | United States of America | Search report |
| US2013073513A1 | Cited by | United States of America | Pre-grant |
| US9509501B2 | Cited by | United States of America | Search report |
| US10628191B2 | Cited by | United States of America | Applicant |
| US2016274934A1 | Cited by | United States of America | Pre-grant |
| US2015160964A1 | Cited by | United States of America | Pre-grant |
| CN106687926A | Cited by | China | Search report |
| US2010299368A1 | Cited by | United States of America | Pre-grant |
| US2015215120A1 | Cited by | United States of America | Pre-grant |
| US9037621B2 | Cited by | United States of America | Applicant |
| WO2016040357A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US10002175B2 | Cited by | United States of America | Search report |
| US12158947B2 | Cited by | United States of America | Search report |
| US2013191648A1 | Cited by | United States of America | Pre-grant |
| US9069597B2 | Cited by | United States of America | Search report |
| US11809913B2 | Cited by | United States of America | Applicant |
| US2022035905A1 | Cited by | United States of America | Search report |
| US8554900B2 | Cited by | United States of America | Search report |
| US2011154332A1 | Cited by | United States of America | Pre-grant |
| US11132234B2 | Cited by | United States of America | Applicant |
| US2014032767A1 | Cited by | United States of America | Pre-grant |
| US9823881B2 | Cited by | United States of America | Applicant |
| US9003203B2 | Cited by | United States of America | Search report |
| US9654411B2 | Cited by | United States of America | Applicant |
| US9268610B2 | Cited by | United States of America | Search report |
| US10073713B2 | Cited by | United States of America | Search report |
| US2011010515A1 | Cited by | United States of America | Pre-grant |
| WO2013006266A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9483360B1 | Cited by | United States of America | Search report |
| US2010169537A1 | Cited by | United States of America | Pre-grant |
| US10171373B2 | Cited by | United States of America | Applicant |
| US8977736B2 | Cited by | United States of America | Search report |
| US2002029308A1 | Cites | United States of America | Pre-grant |
| US2002184287A1 | Cites | United States of America | Pre-grant |
| US2003033344A1 | Cites | United States of America | Pre-grant |
| US2003182358A1 | Cites | United States of America | Pre-grant |
| US2006085784A1 | Cites | United States of America | Pre-grant |
| US5313647A | Cites | United States of America | Pre-grant |
| US5752036A | Cites | United States of America | Pre-grant |
| US6704764B1 | Cites | United States of America | Pre-grant |
| US6732220B2 | Cites | United States of America | Pre-grant |
| US6795966B1 | Cites | United States of America | Pre-grant |
| US6802062B1 | Cites | United States of America | Pre-grant |
| US6850953B1 | Cites | United States of America | Pre-grant |
| US7065549B2 | Cites | United States of America | Pre-grant |
| US7093086B1 | Cites | United States of America | Pre-grant |
| US7139406B2 | Cites | United States of America | Pre-grant |
| US7257811B2 | Cites | United States of America | Pre-grant |
| US7299468B2 | Cites | United States of America | Pre-grant |
| US7313793B2 | Cites | United States of America | Pre-grant |
| US7506265B1 | Cites | United States of America | Pre-grant |
15 members in 4 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 19353102 | United States of America | A | |
| 19353102 | United States of America | A | |
| 96306707 | United States of America | A | |
| 10193531 | – | – | – |
| US20020193531 | – | – | – |
| US20070963067 | – | – | – |
Members15
| Document | Office | Kind | |
|---|---|---|---|
| EP1380947A2 | European Patent Office (EPO) | A2 | |
| US2004010787A1 | United States of America | A1 | |
| JP2004133894A | Japan | A | |
| US7313793B2 | United States of America | B2 | |
| US2008098154A1 | United States of America | A1 | |
| EP1380947A3 | European Patent Office (EPO) | A3 | |
| JP2009116914A | Japan | A | |
| US7657888B2 | United States of America | B2 | |
| JP2012074090A | Japan | A | |
| JP4942909B2 | Japan | B2 | |
| JP5085590B2 | Japan | B2 | |
| JP2014006935A | Japan | A | |
| JP5769212B2 | Japan | B2 | |
| EP1380947B1 | European Patent Office (EPO) | B1 | |
| ES2734248T3 | Spain | T3 |
40 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
1 recorded assignment at the USPTO, latest first
- Now
Now: Held by
MICROSOFT TECHNOLOGY LICENSING LLC - 2014-12-09
Assignment of assignors interest.
- From
- MICROSOFT CORPMICROSOFT CORPORATION
- To
- MICROSOFT TECHNOLOGY LICENSING LLC
Recorded 2014-12-09, Signed 2014-10-14
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Publication
- 20080098154
- Publication, DOCDB
- 2008098154
- Publication, EPODOC
- US2008098154
- Application
- 11963067
- Application, DOCDB
- 96306707
- Application, EPODOC
- US20070963067
Titles
- English
- METHOD FOR FORKING OR MIGRATING A VIRTUAL MACHINE
Patent term adjustment
- A delay
- +219 daysthe office missed an examination deadline
- Net adjustment
- 219 days
Classification
- CPC, 2
- G06F9/4856
- G06F9/45537
- IPC, 3
- G06F9 455
- G06F9 46
- G06F12 00
- USPC, 3
- 711006000
- 711E12002
- 718001000