1. A computer program product embodied in a tangible, computer-readable medium, the computer program product performing a method for generating a checkpoint for a virtual machine (VM) in a virtual computer system, the VM using a virtual disk and a set of VM memory, the method comprising: maintaining, in an unmodified state, the contents of the virtual disk at the time for which the checkpoint is generated, while allowing the VM to continue reading from and writing to the virtual disk, the unmodified contents of the virtual disk constituting a checkpointed virtual disk, and the contents of the virtual disk used by the VM constituting an ongoing virtual disk; saving device state of the VM, including a plurality of registers and settings for one or more virtual devices, at the time for which the checkpoint is generated, to a checkpoint data store; saving the contents of the VM memory, at the time for which the checkpoint is generated, to the checkpoint data store, and allowing the VM to continue reading from, writing to, and executing code from the VM memory, the contents of the VM memory saved to the checkpoint data store constituting a checkpointed VM memory, and the contents of the VM memory as used by the VM constituting an ongoing VM memory; and allowing the VM to execute, including executing code from the VM memory, during at least a part of the time during which the checkpoint is being generated, and ensuring that the results of any pending disk writes are applied to both the checkpointed virtual disk and the ongoing virtual disk wherein the VM memory is a subset of a physical memory in the virtual computer system, the VM memory being a portion of the physical memory that is allocated to the VM.