1. A computer-implemented method for updating an operating system (OS) without a memory reset, the method comprising: launching Virtual Execution Environments (VEEs) on a host OS of a computer system, the VEEs data is stored in a memory; generating snapshots of the VEEs by the host OS; loading a new OS onto the computer system; giving control to the new OS; verifying the VEE snapshots by the new OS; re-launching the VEEs on the new OS; and using a designated component to restore restoring the VEE data from the snapshots into the memory.