1. A system including instructions recorded on a non-transitory computer-readable medium, and executable by at least one processor, the system comprising: a checkpointing engine configured to cause the at least one processor to execute a synchronization of a first virtual machine with a second virtual machine, the first virtual machine being executed with at least a first virtual processor and a second virtual processor, the synchronization including transferring memory pages of the first virtual machine for storage by the second virtual machine, the checkpointing engine including a checkpoint trigger monitor configured to cause the at least one processor to receive a checkpoint trigger initiating the synchronization; a pause manager configured to cause the at least one processor to pause the first virtual processor while allowing the first virtual machine to continue executing, using the second virtual processor, during at least a portion of the synchronization; a page table manager configured to cause the at least one processor to track, within a page table, a page entry for each memory page of the first virtual machine, the page entries each including a write control bit and a dirty bit; a dirty bit bitmap generator configured to cause the at least one processor to generate, based on the page table, a dirty bit bitmap for transmission to, and use by, the second virtual machine, the dirty bit bitmap identifying dirty memory pages of the first virtual machine altered since a most-recent synchronization, based on the corresponding dirty bits, wherein the page table manager is configured to clear the corresponding dirty bits and set corresponding write control bits for write protection, in conjunction with the generation of the dirty bit bitmap; and a copy-on-write manager configured to cause the at least one processor to detect, during the synchronization, a write request for one of the identified dirty memory pages that has not yet been transferred to the second virtual machine, and to copy the identified dirty memory page to a temporary buffer for transferring therefrom to the second virtual machine; wherein the pause manager is configured to release the first virtual processor and resume execution of the first virtual machine, using the first virtual processor and the second virtual processor, once all of the identified dirty memory pages have been provided to the second virtual machine.