一、计算机原理前世今生

计算机,言外之意,最初人民设计出来它的时候就是为了解决“计算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】

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/pythonfor/p/11442414.html