系统结构
对于一台计算机,我们会对其输入原始数据,同时希望它输出计算结果。
于是我们有了以下的思考过程:
计算机无法直接获取我们希望输入的数据,所以计算机需要输入设备来获取我们的原始数据。
同理,计算机输出的东西我们不一定可以理解(或者我们不能直接看到),所以需要输出设备来显示输出的内容
我们的原始数据需要经过一定的操作才会变成我们的结果,所以我们需要运算器来帮助我们计算
运算器不清楚什么时候输出我们的计算内容,于是我们添加了控制器来告诉运算器什么时候输出计算结果
现在我们的计算机可以进行计算,输入和输出
但我们的计算机现在只可以进行单次的运算,并且无法对计算结果进行存储,我们加入存储器来解决这个问题
现在我们就得到了计算机的基本架构

但这样的结构还是存在问题,运算器接受数据的速度非常慢,并且存储数据的压力放在了运算器上,这和我们的初衷不同,于是我们将存储器放在中间,这样运算器就可以专注于数据的计算。

我们不难发现,我们输入的原始数据和计算步骤其实就是我们的软件系统/程序 ,后面蓝色方框中的部分为硬件系统
而软件和硬件在逻辑上是等效的
运算器和控制器的功能比较类似,通常被封装在一起,称为CPU
CPU和存储器(内存)我们统称为主机
输入和输出的地位和功能类似,我们统称为I/O设备
辅助存储器(硬盘)和I/O设备我们称为外设

硬件
运算器
运算器由MQ ACC ALU X PSW组成

MQ:乘商计算器
ACC:累加器
ALU:算数逻辑单元
X:通用计算器(表示为X是因为一个运算器中有多个通用计算器)
PSW:程序状态自检计算器
ALU由组合逻辑实现 根据计算规则来计算
控制器
控制器由CU IR PC组成

CU:控制单元
IR:指令计算器
PC:程序计数器
CU由时许逻辑实现 根据上一个结果判断下一步该如何做
I/O设备
I/O设备即为输入输出设备
我们常见的鼠标键盘,耳机或者屏幕都可以是输入或者输出设备
存储器
存储器分为主存储器和辅助存储器
存储器可以拆分为存储体,MAR(地址寄存器)和MDR(数据寄存器)三个部件
软件
分类
系统软件
管理整个计算机系统 让系统资源调度合理
操作系统(OS),数据库管理系统(DBMS),语言处理程序等都为系统软件
基本上带"管理"二字都为系统软件
应用软件
调用系统软件的接口来完成用户的特定任务
微信,QQ等都算
编程语言
机器语言
机器语言为二进制代码,即0100101这样的指令
计算机通过查询代码表来完成代码的运行
如令0000 为LOAD
令0001为STORE
计算机通过匹配你的指令来进行代码的运行
汇编语言
汇编语言本质上为助记符
即将类似0000的代码直接定义为LOAD代码,这样我们在写代码的时候就不需要写0000,而是写LOAD,计算机通过将LOAD的代码与0000匹配后进行执行
代码在汇编程序(汇编器)的帮助下转换成机器语言来运行
高级语言
C/C++,Java
高级语言即为汇编语言的二次封装
我们通过编译器(编译程序)将我们的代码转换成汇编语言,然后汇编语言再转换为机器语言进行运行(或者直接转为机器语言进行运行)
同时我们的代码有多行/多部分,便存在以下两种转换方式:
1.将整段代码一次性进行编译,速度非常快,一次性出编译结果(C/C++/Java)
2.逐行进行解释(通过解释程序进行),效率较低,可以按顺序运行(Python)
五层结构
计算机的五层结构是由软件和硬件共同协调完成的

其中软件和硬件的分界线不一定如上图所示,软件和硬件的分界线是非常模糊的