每个时代,都不会亏待会学习的人。
大家好,我是 yes。
对于我们程序员来说计算机的重要性不言而喻,相信大家对计算机内部也有一定的了解。
但是大家有没想过为什么一堆逻辑门组合起来就能运算了?它是如何运作来实现加减法的?
为什么 cpu 会不停地取指执行?是什么在驱动着它?
今天我就和大家一起来探索一下底层的奥秘,但是术业有专攻,我们大致的了解一下即可,很多细节不清晰也不影响。
不过相信通过这篇文章你会对底层有不一样的认识,包括运算单元、内存、时钟、地址、溢出、补码等等。
先打个预防针吧,这篇文章有很多电路图,你可能感觉这啥啊,和我们开发有关系吗?
看下去你会懂的,虽说平日里我们都是 CRUD Boy,但是我们也得时刻保持着好奇心,要有求知欲和探索精神。
正文这个故事得从「电」开始说起。
生活中电无处不在,而它却时刻保持着神秘感,为何插上电我们的屏幕就会亮?我们的服务器就能跑?
电是如何来的?
电起源于电子的运动,我们知道一切物质都是由原子组成的,而原子又是由中子、质子和电子构成。
在某种情况下电子从原子中电离出来,这样电就产生了。
质子和电子都具有带电荷的特性,质子带正电荷、电子带负电荷。
而异电相吸,同电相斥,当质子数和电子数相等的时候是最稳定的,如果数量不平衡也会往趋于平衡的方向发展。
像雷雨天气,云层下层积累电子而云层顶层失去电子,而闪电就是大量的电子迅速从一端转移到另一端产生的结果,为了趋于平衡。
题外话:
细心的朋友可能看到这原子核质子不都合在一起了啊,不是说同电相斥嘛?这是因为有个叫强内力的玩意聚集了它们,释放核能的原子核裂变就是由强内力导致的。
相信大家都做过电池点亮灯泡的物理实验。
这其实就是电池发生化学反应,在负极产生多余的电子,然后通过回路中的原子类似接力的形式,一个原子得到电子之后会传递给相邻的另一个原子,如此循环传递电路就形成了,最终通过灯泡到达电池的正极。
改装下再套上个外壳,手电筒就这样被造出来了。
而手电筒不仅仅可以用来照明,还能用来通信。相信大家都看过类似的电影场景,我这手电筒的光闪三下咱们就上!
而说到这样简易的通信就不得不提摩尔斯电码,相信大家也从各渠道对摩尔斯电码有一定的了解,比如「星际穿越」这部贼好看的电影。
在 19 世纪初期,那时候的远距离通信还得利用马车等工具长时间运输传递,人们一直在摸索即时远距离通信的方法。那时的摩尔斯就开始埋头实验,最终发明了电报。
电报的思想和上述说的手电筒思想一样,手电筒通信的思想是通过开关来控制灯的亮暗,而电报利用的是电磁现象。
将导线缠绕在铁棒上,然后通电之后铁棒就变成了磁铁,断电了磁性又会消失,然后再搞个发声器,通过磁性来吸引可动棒敲击发声。
通电后可动棒被拉下,敲击下方就会发出 “滴” 的声音,断电则可动棒复位,敲击上方发出 “嗒” 的声音。将快速的滴答作为点,慢速的滴答作为划。
通过导线的长距离连接就能实现远距离通信,通过判别点和划的组合查阅摩尔斯电码表,转成最终的信息。
如果要双向通信,就再搞一个反过来部署就好了,这就是电报机了。
不过导线是有电阻的,导线越长电阻越大,所以是有距离限制的,不过这难不倒我们,最简单的方法就是转发一下。