1) The document discusses three main techniques for virtualizing the x86 CPU: full virtualization using binary translation, OS-assisted virtualization (paravirtualization), and hardware-assisted virtualization.
2) Full virtualization using binary translation allows any x86 OS to run virtualized without modification but has more overhead than other techniques. Paravirtualization requires OS modifications to replace privileged instructions but has lower overhead. Hardware assistance traps privileged instructions to the hypervisor with less overhead but was rigid in early implementations.
3) The document compares the techniques and notes that VMware uses all three, balancing performance and functionality for different workloads and hardware.