This document introduces cloud computing and virtualization. It discusses how virtualization addresses challenges in efficiently provisioning resources for cloud computing. Key features of cloud computing like on-demand services, shared network resources, and pay-as-you-use models are enabled by the flexibility and fine-grained metering provided by virtualization. The document then covers different virtualization techniques like binary translation, paravirtualization, and hardware-assisted virtualization. It also discusses the architecture and benefits of the Xen virtualization system including its use of domains, hypercalls, memory sharing through page tables, and split device drivers.