一. 计算机概述
1.1 计算机发展的4个阶段
- 电子管计算机 - 晶体管计算机 - 集成电路计算机 - 超大规模集成电路计算机
- 趋势: 集成度越来越高, 空间占用越来越小, 功耗越来越低, 运行速度越来远快,操作越来越简单,交互越来越方便
1.2 计算机的分类
- 超级计算机 - 大型计算机 - 迷你计算机(服务器) - 工作站 - 微型计算机
- 趋势:体积越来越小,性能越来越低
1.3 计算机体系与结构
- 冯诺依曼体系:将计算机指令和数据一起存储的计算机设计概念结构,把程序存储起来,设计了通用电路,摒弃了之前修改程序需要重新设计电路的缺点
组成:存储器+控制器+运算器+输入设备+输出设备
对应:硬盘(包含内存、寄存器和缓存) + CPU(包含控制器和运算器) + 键盘 + 屏幕
1.4 计算机的计算单位
- Bit - Byte - KB - MB - GB - TB - EB
- 硬盘厂商制造的硬盘,是以10进制为单位,而计算机是以2进制为单位。 所以制造商的500G硬盘500 * 1000^3 等于465G的465 * 1024^3
1.5 计算机的字符与编码集
- GB2312(只支持汉字) - GBK(只支持更多的汉字) - Unicode(万国码,支持世界上所有的字符)
- UTF-8:一种变长的Unicode编码方案,使用1-6个字节来存储
UTF-16 UTF-32,使用的字节数和UTF-8不一样而已
二. 计算机的组成
2.1 计算机的总线
2.1.1 总线的作用
总线: 为了解决不同设备间的通信问题
2.1.2 总线的分类
- 片内总线:芯片内部的总线,负责寄存器与寄存器,寄存器与控制器与运算器的通信
- 系统总线:连接CPU 内存 硬盘 USB 声卡 显卡 等设备的一条总线,分为3类
1.数据总线:用来传递数据,一般和CPU位数相同(32位、64位)
2.地址总线:指定源数据或目的数据在内存中的地址,用来寻址的,如果地址总线位数=n,那么计算机的寻址范围为0~2^n .例如32位系统的地址总线也是32位,所以它最多容纳2^32=4G的寻址范围,也就是内存最大也就是4G,多了也用不上。
3.控制总线:控制总线是用来发出各种控制信号的传输线,控制信号经由控制总线从一个组件发给另外一个组件
2.1.3 总线的仲裁
- 总线仲裁的原因: 多个设备同时请求占用资源的时候,需要仲裁器来解决总线使用权的冲突问题
- 仲裁的方式:
1.链式查询:优先级高的设备先获取到使用权
2.计时器定时查询
3.独立请求
2.2 计算机的输入输出设备
2.2.1 计算机的输入输出设备
- 字符输入设备: 键盘等
- 图像输入设备: 鼠标 扫描仪等
- 图像输出设备: 显示器 打印机 投影仪等
2.2.2 输入输出接口的通用设计
- 数据线: 是I/O设备与主机进行数据交换的传送线
- 状态线: I/O设备向主机报告的信号线, 是否正常连接,是否被占用等
- 命令线: CPU向I/O设备发送命令的信号线
- 设备选择线: 对连在总线上的设备进行选择
2.2.3 CPU与I/O设备的通信
- 程序中断:当外围I/O设备就绪时,向CUP发出中断信号,CPU有专门的电路响应中断信号
- DMA(直接储存器访问): DMA作为一个中间件, 能减少外围设备对CPU的中断, 提升效率
2.3 计算机的存储器
2.3.1 存储器的类型
按照存储方式分类
- 半导体存储器:内存、U盘、硬盘
- 磁存储器: 磁带、磁盘
按存取方式分类
- RAM(随机存储器)
- 串行存储器
- ROM(只读存储器)
2.3.2 存储器的层次结构
CUP和三级缓存的底层原理:局部性原理。
局部性原理:CPU访问存储器时,无论是存取指令还是存取数据,所有的访问单元都趋于聚集在一个较小的连续区域内。
iOS的OC的方法查找缓存也用的是此原理。
- 缓存:寄存器 高速缓存等
- 主存:内存
- 辅存:硬盘 U盘等
2.3.3 计算机的主存储器和辅助存储器
- 主存储器:内存条,RAM,通过电容存储数据,必须隔一段时间刷新一次,如果掉电,将会丢失所有数据
- 辅助存储器:磁盘,表面是可磁化的硬磁特性材料,通过磁头径向运动(沿半径方向运动)来读取磁道信息
有4种读取方式分别为:
1.先来先服务算法: 根据数据的请求时间顺序,按照队列来读取
2.最短寻道时间优先算法:与当前磁头位置有关,优先访问离磁头最近的磁道
3.扫描算法(电梯算法):每次只往一个方向运动,到达一个方向所需要服务的尽头再反方向运动
4.循环扫描算法:和电梯算法相似,到达一个方向所需要服务的尽头不是反方向运动,而是从头开始
2.3.4 计算机的高速缓存
- 目的:解决CPU和主存的速度不匹配的问题
- 高速缓存的工作原理:局部性原理
- 高速缓存的替换策略:
1.随机算法: 随机找一个位置将最新的数据塞入
2.先进先出算法(FIFO): 找到最老的数据,将最新的数据替换老数据
3.最不经常使用算法(LFU):淘汰最不经常使用的数据,需要一个额外的空间来记录数据的使用次数
4.最近最少使用算法(LRU):优先淘汰掉一段时间内未使用的数据,一般使用双向链表实现,把当前访问结点放在链表头部,保证头部结点是最近使用的。
2.4 计算机的指令系统
2.4.1 机器指令的形式
操作码字段+地址码字段
- 三地址指令: addr1 op addr2 = addr3
- 二地址指令: addr1 op addr2 = addr1
- 一地址指令: addr1 自增等操作
- 零地址指令:中断 空操作 停机操作等
2.4.2 机器指令的操作类型
- 数据传输类型
寄存器之间、寄存器与存储单元、存储单元之间传输
数据读写、交换地址数据 - 算数逻辑操作类型
加减乘除运算
与或非运算 - 移位操作类型
左移 右移 - 控制指令类型
等待指令、停机指令、中断指令等
2.4.3 机器指令的寻址方式
- 指令寻址
1.顺序寻址:默认的方式
2.跳跃寻址:call jmp等汇编指令 - 数据寻址
1.立即寻址:能直接拿到操作数的
2.直接寻址:通过地址拿到操作数的
3.间接寻址:需要多次访问地址拿到操作数,例如void **