接下来的blog将围绕JavaEE的知识,介绍线程,网络等知识
计算机发展过程
- 算盘
- 步进计算器
- 差分机
- 分析机
- 打孔卡片制表机
- 机电计算机
- 真空管计算机
- 电子计算机
- 即将迎来——量子计算机
冯诺依曼体系
即计算机都是由以下几部分构成的
- cpu——中央处理器
- 存储器——外存和内存
- 输入设备
- 输出设备
存储大小:
硬盘(外存) > 内存 > cpu
访问速度:
cpu > 内存 > 外存
注意:
我们平时买手机,电脑时上面写的内存并不是运行内存,而是外存,即硬盘大小
CPU工作原理
CPU即中央处理器,是计算机最核心的部分,其性能决定了计算机的算术能力。其最核心的指标——主频,例如一个1.50GHz的CPU一秒钟可以计算15亿次,其工艺技术堪比氢弹。因为我们需要在芯片上激光雕刻电路,目前最小的门电路大小就是AMD的5nm的CPU,未来受基础力学的影响,计算机将向量子计算机发展。常见的CPU有Intel,AMD,高通等。
我们通过各种语言写出的可执行程序在运行时,操作系统会将其加载到内存中,然后再读取到CPU中,CPU对指令进行解析,把这些语言解析成二进制语言,然后执行这些指令。
下面介绍一下CPU的构成原理
逻辑门
继电器
可通过继电器实现true和false的逻辑运算
门电路
非门
即输入true返回false
输入false返回true
与门
即两个输入都为true时输出true,否则输出false
或门
即只要有一个输入是true,就输出true
我们的计算机的集成程度,例如之前提到的5nmCPU,就是指的是这个门电路的大小
算数单元
半加器
可以实现两个1个bit位的数的加和
两个半加器可以实现带进制的两数加和
全加器
可以实现三个1个bit位的数的加和
单一的全加器就可以实现带进制的两数加和
我们可以通过这些组件实现算数加和,进而实现减法,乘法,除法
指令
我们可以通过操作码,实现CPU对寄存器上的数据的操作
常见的操作码有:
指令 | 功能 | opcode | 操作的项目 |
---|---|---|---|
LOAD_A | 将ram地址的数据加载到A寄存器 | 0010 | 4位ram地址 |
LOAD_B | 将ram地址的数据加载到A寄存器 | 0001 | 4位ram地址 |
STORE_A | 将A寄存器数据写到ram地址 | 0100 | 4位ram地址 |
ADD | 将两个寄存器的数据作加和,其结果放到第二个寄存器 | 1000 | 2位寄存器id 另外2位寄存器id |
计算机指令发展
二进制
即就是通过控制台的开关,通过切换开关实现1和0的切换,通过二进制输入指令
纸带
通过纸带上面的孔进行输入输出
汇编语言
通过英文单词,将二进制的操作进行简化,进行代码的编写
高级语言
例如C语言,不同的高级语言的语法不同,编译器也就不同,转换成的CPU指令也就不同
因此,不同的高级语言的效率与成本都是有所不同的,所以适用的应用场景也不一样,例如c和c++的执行效率高,用于游戏引擎,搜索引擎等,而Python,PHP等的执行效率没有那么高,而开发效率很高,也就是节省人力成本
操作系统
可以管理计算机资源的软件,也就是说既可以管理各种硬件,防止硬件资源被程序滥用,也可以为程序提供运行的空间,便于操作计算机
常见的操作系统有windows,unix,linux等
我们由软件到硬件的顺序依次是
- 应用程序
- 系统调用
提供一系列API,应用程序通过调用API完成任务 - 操作系统内核
实现了内存,进程,硬盘,文件,设备等等的管理 - 驱动
由于硬件很多,因此需要借助驱动程序来管理这些硬件 - 硬件
其中从系统调用到驱动,都是属于操作系统