Nowadays, virtualization is a technology that is applied for sharing the capabilities of physical computers by splitting the resources among OSs. The concept of Virtual Machines (VMs) started back in 1964 with a IBM project called CP/CMS system. Currently, there are several virtualization techniques that can be used for supporting the execution of entire operating systems. We classify the virtualization techniques from the OS view. First, we discuss two techniques that executes modified guest OSs: operating system-level virtualization and para-virtualization. Second, we discuss two techniques that executes unmodified guest OSs: binary translation and hardware assisted. Finally, we present a summary of resource management facilities for c...