软件是如何控制硬件的