计算机是如何工作的(上篇)

javaEE初阶的学习内容0213

计算机发展史

世界上很多的高科技发明,来自于军事领域
计算机最初是用来计算弹道导弹轨迹的

弹道导弹 ~~国之重器,非常重要
两弹一星
原子弹,氢弹,卫星(背后的火箭发射技术)

计算弹道导弹轨迹的计算过程非常复杂,计算量也很大 ~~ 但是可以手动计算出来的(当年我国研究两弹一星,就是全靠算盘算出来的) ~~ 1.算的慢 2. 算得可能不准 => 因此,就迫切的需要一台机器来帮助我们计算=> 计算机(专用计算机)就出现了
第一台计算机, 埃尼阿克,诞生于1946年,美国普林斯顿大学,主要用来计算弹道导弹轨迹,运算速度(CPU主频)每秒5000hz(每秒5000次),重达几十吨,占地面积为好几个房间 ~~ 虽然非常low,但还是远远超过人工手动计算
博主破笔记本的处理器处理器 12th Gen Intel® Core™ i5-12500H2.50 GHz ~~ 1GHz即十亿赫兹(10^9 Hz),每秒计算25亿次

珠脑心算(珠心算) ~~ 打算盘,或者心算
看着一长串需要运算的数字,在极短的时间内就能得出正确的结果的珠心算人才,
是属于国家战略储备人才!!!这种人才在极端情况下(即所有电子设备都失效了),仍然
可以把弹道导弹的轨迹算出来对敌人进行反制

随着时代的发展,通用型计算机开始出现
通用型计算机的愿景是图灵(祖师爷)提出来的,冯洛伊曼(祖师爷)实现的

图灵和冯洛伊曼这两位祖师爷是属于同一个时代的人,都是那个时代的天才,诺依曼只比图灵大8岁
~~ 但是冯洛伊曼在美国,图灵在英国
冯洛伊曼曾经对图灵抛出橄榄枝,邀请他一起来研究通用计算机,但可惜被图灵给拒绝了,因此两位祖师爷就没有一起共事过

图灵的介绍

图灵,本来只是一个数学家,但是随着二战爆发,
在欧洲战场,作为世界老大,号称日不落帝国的英国,被后起之秀的德国打的很惨
英国为了寻求反击,对德国进行有效的进攻,就需要获取到德国的军事部署
当时各国的通讯都是通过无线电报进行的,只要你有电台,就能收到数据.
但是由于德国的无线电报都是加密的,就需要进行解密
~~ 对于无线电报的解密,很多国家都是有专门的人才储备,英国也有.
但是由于德国的著名密码系统Enigma的出现,通过机器的方式来进行加密,
导致使用人力破解这种方式就没了作用,束手无策了,根本算不过来,就算破解了,
也会发现加密方式早就变了

由于图灵本来就一直在研究计算机相关的内容,于是,图灵就站了出来
~~提出用魔法打败魔法!!! => 通过仔细研究Engima的构造,造出来一个反Engima机,
用机器来破解机器加密的数据!!!
因此,通过这样的一种手段,让英国解析出了很多来自德国的重要军事情报,
这些情报在当时就直接推动了著名战役诺曼底登陆(欧洲战场重要的转折点)的发生,
最后,帮助盟军取得了二战的胜利.

不过,遗憾的是,图灵祖师爷,在战后遭到了政府的迫害 =>
1952年,英国政府对图灵的同性恋取向定罪,随后图灵接受化学阉割,
1954年6月7日,图灵吃下含有氰化物的苹果中毒身亡,享年42岁。
2013年12月24日,在英国司法大臣克里斯·格雷灵的要求下,
英国女王伊丽莎白二世向图灵颁发了皇家赦免,进行了平反

图灵奖,名称就取自艾伦·麦席森·图灵,计算机领域的国际最高奖项,被誉为“计算机界的诺贝尔奖”。



独显跟集显有什么区别

集显是集成在CPU内部的.
独显是独立出来的.
同时代的产品相比,最好的集显,也打不过最差的独显

CPU 工作流程

~~ (工作不用&面试不考)

逻辑门

电子开关 —— 机械继电器(Mechanical Relay)

image-20230916112935398

~~ 它可以实现 1 位(bit) 的基本逻辑运算

门电路(Gate Circuit)
  • 与门

    image-20230916105910183

  • 或门

    image-20230916110834307

  • 非门

    image-20230916110956200

与门,或门,非门的实现,借助于二极管等设备特殊物理特性
输入的信号是1,0这样的比特位,通过这个门电路,来计算出与或非的值

异或门 ~~ 相同为0,相异为1

image-20230916112504463

算术单元(Arithmetic Unit)

~~ 算数单元,负责计算机里的所有数字操作,比如四则运算

  • 半加器
    ~~ 两个比特位相加

image-20230916114129049

  • 全加器
    ~~ 三个比特位相加

image-20230916114729936

  • 加法器 ~~ 由半加器和全加器构成
    ~~ 针对两个二进制的数字进行相加
    不仅仅是针对一个比特运算,而是多位的运算
    ~~ 加法器,不仅可以算加法,
    还可以算减法 => 本质上是加上减数的补码
    乘法 => 连续相加
    除法 => 连续相减
    有了加法器,加减乘除都搞定了!!!

image-20230916120441773

CPU的设计理念与道家老祖宗提出的道生—,一生二,二生三,三生万物不谋而和!!!
推荐阅读一下科幻小说<<三体>>中有关人列计算机的描述,有助于加深你的理解!!!
博主在这为你们简单介绍一下
<<三体>>的人列计算机的诞生背景:
三体星人(外星人),他们的生存的星球上方有三个太阳,三个太阳做着三体运动,导致其运动轨迹是
相当混乱的,这就导致他们无法进行正常的农业生产,社会发展举步维艰,文明发展甚至出现倒退的情况!!!
这时,他们的领袖“秦始皇”广招天下能人,来制作“万年历”,对农业生产进行指导,促进帝国发展.无数的大佬
就站了出来,贡献出自己制作的“万年历”,不过都前赴后继的都失败了.直到两位大佬的出现,牛顿和冯洛伊曼

牛顿 : 万有引力定律 + 牛顿三定律 => 列方程 ~~ 有关恒星与行星之间运动的轨迹方程
微积分 => 解方程 ~~ 就可以得到“万年历”

冯洛伊曼 : 陛下,给我三千万个训练有素的士兵!!!我来解方程
用三个士兵来为陛下进行演示
三个士兵站成品字形,上面两个代表输入,下面一个代表输出.
每个士兵拿着两个小旗,一个旗子是黑旗(图中用红旗代替),一个是白旗(图中用绿旗代替)
红旗表示0,绿旗表示1
image-20230916141224973

士兵挥旗规则
如果两个为输入的士兵都挥动红旗 ~~ 输入了2个0 => 输出的士兵挥动红旗 ~~ 输出了1个0
如果两个为输入的士兵都挥动绿旗 ~~ 输入了2个1 => 输出的士兵挥动绿旗 ~~ 输出了1个1

如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0 ~~=> 就构成了一个与门
如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1 ~~=> 就构成了一个或门

类似的,如果用两个士兵,一个代表输入,一个代表输出
为输入的那个士兵挥动红旗 ~~ 输入了1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1
相反的是:
为输入的那个士兵挥动绿旗 ~~ 输入了1个1
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0
~~=> 这两个士兵就构成了一个非门

有了基本的与门,或门,非门,用更多的士兵组合,就可以构成异或门
更多的异或门 => 就可以构成半加器和全加器
更多的半加器和全加器 => 就可以构成加法器

通过更多的士兵,构造出更多的门电路,也就有了CPU ,
进一步的也就有了存储器,输入设备,输出设备…

这时,一个人列计算机就出现了,冯洛伊曼还为这个计算机编写了一套操作系统,
基于这个操作系统,来进一步的去进行解方程操作

结果如何???
最终棋差一招.牛顿力学体系,不够精确,
没有考虑相对论造成的影响,计算出现误差,功亏一篑,
这黑锅得牛顿来背,最可气的是牛顿最后还跑路了!!!

这本书,对于我们找工作也是有一定帮助的
因为面试中有一些非技术的问题.
最近在看啥书?"(常见经典问题)
你回答说你看的书必须是有意义,
另一方面家喻户晓.三体就是很好的选择.(很多程序猿都看过)
和面试官聊三体,你就很容易和面试官有共同语言,刷得好感,提高印象分
比如一些三体中值得讨论,具有争议的话题,”“章北海的做法是否正确?”
让面试官对你有更多的了解!!!

编程语言(Program Language )

~~ 被视为是程序猿和计算机之间沟通桥梁
编程语言和日常使用自然语言,是有很大的区别的.编程语言必须要严谨,无歧义.
世界上的编程语言种类繁多.大体可以分成三个大类


注意:高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成

  1. 机器语言

    二进制(0,1)构成的指令 ~~ CPU能够识别
    厂商在设计CPU的时候就会设计好"指令集”CPU都支持哪些指令,以及这些指令要怎么工作.(这就类似于CPU提供的API)
    ~~ 但是人对机器语言很难理解,于是发明了汇编语言

  2. 汇编语言

    通过简单的单词作为"助记符",代替二进制的指令.
    汇编语言与机器语言是一 一对应的,
    每一个机器指令,就对应到一条汇编语句

    不同的CPU有不同的体系架构支持的指令集也是不一样的.
    即使是同类架构,不同的版本,指令集也是不一样的,导致了汇编语言会不一样.

    你在学习汇编的时候,一定要明确你学的是针对哪个系列的 CPU的…
    CPU有x86, arm, mips…很多不同种架构的

    学校学汇编大概率是8086CPU体系下的汇编语言
    => 16位汇编,支持的指令有限寄存器个数也比较少,
    现在是64位CPU,支持的指令更多寄存器个数也更多.

    8086CPU ~~ Intel早期的一个经典CPU,是一个16位CPU.
    后面又有了286,386,486….而这些后面诞生的以86结尾的CPU型号
    ~~ 被统称为x86(非常重要的CPU的体系结构.当下主流的PC和服务器都是x86结构)
    手机,路由器,主要是arm架构.

  3. 高级语言

    C,C++,C#(读作C sharp)
    ~~ C++ 相比于C做出改进,多2个加号++
    ~~ C# 相对于C++做出改进,又多2个加号++.
    ~~ 一个 # 相当于4个+(一个井字可以由4个+构成)

    Java,Python,PHP
    Ruby,JS(JavaScript),GO

U型号
~~ 被统称为x86(非常重要的CPU的体系结构.当下主流的PC和服务器都是x86结构)
手机,路由器,主要是arm架构.

  1. 高级语言

    C,C++,C#(读作C sharp)
    ~~ C++ 相比于C做出改进,多2个加号++
    ~~ C# 相对于C++做出改进,又多2个加号++.
    ~~ 一个 # 相当于4个+(一个井字可以由4个+构成)

    Java,Python,PHP
    Ruby,JS(JavaScript),GO

猜你喜欢

转载自blog.csdn.net/m0_73740682/article/details/132920670
今日推荐