一计算机原理前世今生
Posted pythonfor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一计算机原理前世今生相关的知识,希望对你有一定的参考价值。
计算机,言外之意,最初人民设计出来它的时候就是为了解决“计算calculation”的事情,而除了最早期的的算盘以外,最早的是在美国的一次人口普查用的,公元1880年,美国举行了一次全国性人口普查,为当时5000余万的美国人口登记造册。当时美国经济正处于迅速发展的阶段,人口流动十分频繁;再加上普查的项目繁多,统计手段落后,从当年1月开始的这次普查,花了7年半的时间才把数据处理完毕。也就是说,直到快进行第二次人口普查时,美国政府才能得知第一次人口普查期间全国人口的状况。
直到有一位叫“霍列瑞斯”的人,发明了“打孔制表机”,把穿孔纸带改造成穿孔卡片,由于每个人的调查数据有若干不同的项目,如性别、籍贯、年龄等等。霍列瑞斯把每个人所有的调查项目依次排列于一张卡片,然后根据调查结果在相应项目的位置上打孔。例如,穿孔卡片“性别”栏目下,有“男”和“女”两个选项;“年龄”栏目下有从“0岁”到“70岁以上”等系列选项,具体实现是怎么样的呢,让我们来了解下:
他的设备核心思想就是用机械来代替人工计数,上面我们讲到了用卡片上的孔来代表某一项的数据,如图所示,当卡片插入机器时,机器上的小金属针就会到卡片上,如果某个地方有打孔,那么小金属针就会穿过,注入一小瓶汞,联通电路,电路会驱动电机,给某个选项的齿轮+1。这样就用自动的电动机械行为代替了手工运算。当时这类机器的效率是人工运算的10倍。要知道,这个数量级的提升在当时是非常有意义的,也就是说本来一次人工普查的耗时7年,现在减少到不到一年。
随着时代的发现和计算需求的逐渐增大,人民需要计算力更强的机器,打孔的本质其实也是区分0和1,因此人民发现有没有更快的方式去去分,这样“继电器”就产生了,如图,当电流流过线圈,线圈产生电磁场,吸引金属臂,从而闭合电路。这个电路可以连到其他电路,比如马达,马达会让计数齿轮+1,类似于上面的打孔制表机。这类型的计算机代表就是哈佛马克系列。
不幸的是,继电器的质量太大,导致开关的速度也不够快,当时最好的继电,1秒也就翻转40次左右。另外,这些继电器组成的庞大的电路,工作时会发出较高的温度。而正由于这些温度会吸引昆虫。1947年,哈佛马克2型出现了一次重大故障,最后查到原因就是有一只“死虫”把其中的继电器卡住了。因此我们今天计算机故障都叫“bug”!
正是由于以上的缺陷,所以我们又得想更加先进的模式去取代它!中间经历过真空管,直到1947年,贝尔实验室科学家发明了晶体管,一个全新的计算机时代诞生了!晶体管的物理学原理有兴趣的同学可以自己深入理解下,涉及到物理学和量子力学。我们只讲用于计算机的原理及基础。
晶体管有两个电极,我们称之为发射机和集电集。电极之间有一种材料隔开它们,这种材料有时候导电,有时候不导电(这叫半导体),控制线连到一个“门”电极,通过改变基级的电荷,我们可以控制半导体材料的导电性,来允许电流流动获不流动。就实现了和之前真空管、继电器一样的功能。
======================①所以到这里为止,我们终于知道了最佳的用于控制0和1的个体元素。====================【所以说计算机就是由晶体管组成的,下面会讲到cpu的三大部件,其实核心本质都是各种晶体管组成的逻辑电路!】
接下来我们就用晶体管组成各类逻辑电路,下面是最简单的一个and电路(“与”门),用两个晶体管可以组成,两个输入一个输出,只有两个输入都是1的时候,输出才为1,否则任何一个输入不为1,结果就不成立:
而同理,我们可以组成或门、非门、或非门。然后这些基础门再组成庞大的电路来处理复杂的运算。下面组成了一个“半加器”
而利用“半加器”又可以组装成“全加器”(有进位的加法器)【这些都是“数字逻辑电路”这门课中讲到的原理,有兴趣的同学可以自行深入了解!】
最早的因特尔74181处理器打工用了70个逻辑门,但不能执行乘除,具体的逻辑电路结构如下:
======================②到这里为止,已经把计算机中的ALU(cpu三大部件之一)讲清楚了。============================
寄存器,也是由晶体管组成的,看以下两个电路,第一个电路,开始的时候A、B输入都为1,那么输出也为1,如果之后A设为0,由于是AND门,输出会变成0,无论后面输入变成什么,output一直为0.因此,这个电路能记录0;
同理下面这个电路可以记录1
现在有了能记录0和1的电路,我们把它们组合起来,变成AND-OR锁存器,它有两个输入,“设置”输入,把输出可以变成1,“复位”输入
,把输出可以变成0。如果“设置”和“复位”都是0,电路会输出最后放入的内容。(大家可以自己模拟试以下,只要复位不为1,输出就永远是上一次的输入!)也就是说,它存住了1bit的信息,这就是传说中的内存原理!!!
======================到这里为止,已经把计算机中的寄存器(cpu三大部件之一)讲清楚了。============================
cpu控制器由两个阶段组成,第一个阶段就是“取指令阶段”,第二个阶段是“解吗阶段”,这两种都是通过电路连接解决。这部分用视频过程演示可以会更清楚,文字的描述篇幅太大了(具体过程可以参考视频讲解,关注微信公众号后,直接发信息即可,我会把视频链接发给大家)。
======================到这里为止,已经把计算机中的控制器(cpu三大部件之一)讲清楚了。============================
剩下的就是执行程序了,有好多好多程序语言,最本质的原理无非是每一个程序指令会和机器码对应,而计算机也保存着这份对应关系。以便用作解码用。
而最终程序也是放在存储中,让cpu控制器去取了,然后逐条执行完成计算。这样就是cpu最简单的工作模型。
总结下,计算机核心部件如下,而cpu内部包括内存都是由晶体管组成的,其实就看我们如何去做我们的集成电路!
可以关注公众号“python三人行”,我们会定期分享讨论数据、架构、算法以及计算机或操作系统底层原理,欢迎参与!
---恢复内容开始---
【1】什么是操作系统?
“操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。”------这个是百度百科的解释
其实最简单的理解就是一个程序,一通电第一个启动的程序,包含了shell和kernel两个模块,shell对接其他应用程序,也就是用户;而kernel对接硬件,这里硬件包含了计算机的底层硬件,另外还有一些外设(包括键盘、鼠标等)
计算机底层硬件其实最主要由三部分构成:CPU、内存和磁盘,其中CPU和内存都是由三极管构成的(此部分如果想深入了解可以看计算机原理,或联系楼主微信allenforu,我这边有快速理解的视频资料可分享,这里不展开来讲)
因此操作系统为了管控其他各类的应用程序,它有特殊的权限,它的最重要的作用就是把实际的CPU、磁盘、内存分布抽象成进程、文件、地址空间。所以操作系统是一个非常复杂的软件,像window操作系统一共有4500万行的代码
所以一般人不可能读完所有源码,我们读懂其中自己关心的一部分已经是很不错了!
上面说到操作系统是一通电第一个启动的程序,因此我们来看下启动的过程及原理:
DISK:存放OS
Bios:基本I/O处理系统
芯片里的电路结构会把CS设置为0xFFFF,IP设置为0x0000,这样组成的地址就是0xFFFF0,而这个就是BIOS的入口地址,因此通电以后第一时间,CPU读取这个地址的代码。然后BIOS去读取放在磁盘里的OS,这样OS就被运行起来了!
操作系统的三种:
1)中断:外设
2)异常:应用程序意想不到的行为
3)系统调用:应用程序请求操作提供服务
【2】
---恢复内容结束---
以上是关于一计算机原理前世今生的主要内容,如果未能解决你的问题,请参考以下文章