How does a virtual machine work?