This document discusses various types of virtualization technologies. It begins by describing characteristics of virtualized environments such as sharing, aggregation, emulation, and isolation. It then discusses different virtualization techniques including hardware-assisted virtualization, full virtualization, paravirtualization, operating system-level virtualization, programming language-level virtualization, and application-level virtualization. For each technique, it provides examples and discusses advantages and performance implications. It also includes diagrams illustrating the virtualization reference model and taxonomy of virtualization techniques.