Understanding virtual machines: Part one