architecture of a virtual machine