Understanding virtual machines: Part two