软件是如何控制硬件的?

软件是如何控制硬件的br> 我的答案是,这个问题首先就是错误的,这个世界上本身就没有软件。
这个时候也许许多小伙伴开始向我扔鸡蛋了,rz一样,没软件我的电脑怎么运行的,我昨天还写了一个软件控制LED灯实现了跑马灯效果呢。。。你今天告诉我这个世界上不存在软件子有问题吧br> 先别着急,听我慢慢说。我先问大家,软件是什么伙伴直接掏出下面一段代码,喏,这就是软件,并且我能通过这段代码将一个LED点亮。

说得确实不错,所以说你发出了软件是如何控制硬件的疑问,想知道底层代码是如何点亮LED的,这种刨根问底的思想非常好。那我现在问你,你的软件,也就是上面这份代码,它在真实世界中长什么样子的计你又被我问的生气了,不就长上面这个样子吗能长什么样子!那好,我在问你,你的这份代码是存在哪里的盘啊。
对,软件也就是代码,是存在硬盘里的。硬盘存储数据的原理是什么,是利用磁盘上一颗颗磁粒的磁极方向存储数据的。那么好了,我们的代码在物理世界中的真实存在,其实就是硬盘上一片有着不同磁极方向的磁粒,也就是说,我们的软件其实是硬件。所以开头我说,软件控制硬件的这种说法是错误的。
我刚刚说它是错误的是站在计算机的角度上来讲。但是,站在人的角度来讲这个问题又是正确的,是有意义的,不扯这么多了,我们现在来分析下“软件是如何控制硬件的。
首先软件是位于磁盘上的一片有磁极方向的磁粒,软件运行前要将硬盘上的代码读到内存中,我们分析下硬件上是怎么实现的。首先主机上电,磁盘可以旋转,这个没问题吧,这个是物理上的事实,有电流的导体在磁场中受到力的作用进行旋转。磁头感应到了磁片上一个个磁粒的磁场,生成了相应的感应电流,进而产生高低电平,这些高低电平最终去给内存条中相应的一个个电容充电(实际可能更复杂,我们这里先以最简单的思路来把问题想明白,证明路是通的)。这样就完成了代码从硬盘到内存的搬运,物理上可以认为是磁转电的过程。这个时候的软件依然是有硬件载体的,可以说软件是内存中的一批电荷。软件依然是硬件。代码被放到内存后,CPU就可以读取代码和数据并且进行计算。CPU读取内存数据的时候其实是操纵一块电路,进行电信号的交流,这块电路其实就是读取指令的真实物理存在。同样的加法指令也是一小块电路,实现了加法的功能。这样各种计算和读写操作所对应的一块块电路,就是CPU的运算器,这也构成了这款CPU的指令集。如果这款CPU中只有加法电路,没有乘法电路,那么这款CPU就只支持加法指令,不支持乘法指令。 好了,CPU读取代码和数据后进行计算,将结果再写回内存中。刚刚控制LED亮灯的代码最后被CPU执行的结果就是向内存的某一个电容中充电,使之具有高电平,假如这个电容上连了一个LED灯,这个LED灯不就亮了吗。这就回答了“软件是如何控制硬件的这个问题。
最后,大家发现没,其实一开始的问题并不应该是软件如何控制硬件,而应该是硬件如何控制硬件。
我们再整理下整个原理:磁盘上不同磁极方向的一片磁粒(软件),通过磁头进行磁生电,并将电荷送到内存的电容中(硬盘代码和数据读入内存),CPU通过具有读写和运算功能的电路对内存中的电容进行充放电(CPU进行读写运算操作并将结果输出),最终使得与内存电容相连的LED点亮了。

来源:Li-Yongjun

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月8日
下一篇 2019年10月8日

相关推荐