计算机是如何工作的
冯诺依曼体系🌊
- cpu:中央处理器:主要进行算术运算和逻辑判断
- 存储器:分为内存和外存,内存就是所谓的RAM,而外存就比如硬盘
- 输入设备:用户给计算机发号指令的设备,如键盘
- 输出设备:计算机给用户汇报结果的设备,比如屏幕
- 针对存储空间:硬盘>内存>>cpu
- 针对数据的访问速度:cpu>>内存>硬盘
cpu的基本工作流程📦
电子开关(电磁继电器)🏷
初中物理应该都学过,通电导线周围会有磁场,利用这个磁场就可以将开关进行闭合和打开.基于这个开关的不断切换,我们就可以得到0/1数据.
门电路🏮
基于上述电子开关,我们可以实现1个bit的基本逻辑运算
(此处仅展示一个非门了,除了非门,基础门电路还有与门,或门)
基于上述三站基础门电路,还能构造出更复杂一点的门电路:异或门
算路逻辑单元(ALU)😆
基于上述的逻辑门电路,我们可以构建出一些运算器,如半加器(2个bit),全加器(3个bit),甚至于构造出多bit位的加法器,有了加法器我们又能继续进行加减乘除的运算了!当代计算机的ALU部件非常强大,复杂度已经超过我们的想象了,32位甚至是64位基本已经普及全球.
逻辑单元(CU)🔍
在cpu中负责指挥ALU去进行何种的计算.
寄存器(Register)和内存(RAM)🎲
- 寄存器是cpu内部用以存储数据的组件
- 内存,即之后所要讨论的主内存,不属于cpu,属于cpu的是工作内存,只不过cpu要操作的指令,和要操作的数据会从内存中去取.
- 寄存器,造价更高,访问速度较内存更快,但是寄存器一般只有若干个字节
- 掉电,寄存器和内存中的数据都会消失
conclusion:上述简单论述了计算机的宏观组成部件,以及cpu的基本单元(电子开关)->门电路->算术逻辑单元->受控制单元把控进行各类计算->数据的存储
指令👯
语言分类:机器语言->汇编语言->高级语言(如java)
指令:主要由操作码+被操作数组成,前者表示一个动作(任务),后者表示前面的动作作用到谁身上,一般是内存地址或者寄存器编号.
不同的cpu生产厂商,哪怕是同一个厂,生产出来的cpu的及其指令都有可能存在差别,具体到一个cpu到底支持哪些及其指令,生产厂商会提供一个"芯片手册"来详细介绍cpu都支持哪些指令,每条指令都是干啥的.
而汇编语言就是为了克服用纯机器语言(01这样的数字去编程)带来的弊端,使用一些简单的英文单词,来表示不同的指令(助记符),所以说汇编语言与机器指令其实是一一对应的关系,还不过表达方式不同.也因为刚才提到了,不同的cpu所支持的及其指令不一定完全相同,所以不同的cpu上面跑的汇编也不一定一样!
指令是如何执行的⚡️
指令本身也是一个数字,它也是用二进制形式保存在内存中的某个区域内.
如:
指令 | 功能说明 | 4位opcode | 操作的地址或者寄存器 |
---|---|---|---|
LOAD_A | 将RAM的指定地址中的数据加载到A寄存器 | 0010 | 4位RAM地址 |
LOAD_B | 将RAM的指定地址中的数据加载到B寄存器 | 0001 | 4位RAM地址 |
STORE_A | 将数据从A寄存器写回到RAM指定的地址中 | 0100 | 4位RAM地址 |
ADD | 计算两个指定寄存器中的数据之和,并将计算结果存到第二个寄存器中 | 1000 | 2位的寄存器ID,2位的寄存器ID |
如,现有两个寄存器A,B,前者编号00,后者编号01
现有机器指令:1000 0100
可解读为:操作码是1000,这在指令表中意思就是:将被操作数表示的两个寄存器中的数据进行相加,然后相加的结果存到被操作数的第二个寄存器编号的寄存器中.
即:将A中的数据和B中的数据相加,并且把和再保存到A寄存器中.
所以说cpu的工作流程:
- 从内存中读取到指令
- 解析指令
- 执行指令
上述三步,都是有cu即控制单元来实现.最后搭配条件跳转,就能实现条件语句和循环语句.
操作系统🌵
操作系统是一组做计算机资源管理的软件的统称,目前常见的操作系统有:Windows系列,Unix系列,Linux系列…
操作系统的定位🥓
对操作系统的概括就是:
- 它本质还是一个软件
- 它可以提供两个基础功能:
- 防止硬件被时空的应用程序滥用
- 想应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备