文章目录
慕课网《计算机基础——更适合程序员的编程必备基础知识》课程
思维导图
1.计算机组成原理 总览
1.计算机体系与结构
1.1 冯诺依曼体系
- 输入设备
- cpu:运算器和控制器
- 存储器
- 输出设备
1.2 冯诺依曼瓶颈
- cpu和存储器速率之间的问题无法调和
- 即cpu处理速度快,而存储设备传输速度满,导致cpu经常空转
1.3 现代计算机结构体系
- 解决cpu与存储设备之间的性能差异问题
- 将存储器加入到cpu中
- 即存储器实质上是更高速的设备,表现为内存、cpu寄存器
2.计算机的层次与编程语言
2.1 程序翻译VS解释
- 计算机执行的指令都是L0低级语言
- 翻译过程,直接执行低级语言
- 解释过程,由L0低级语言编写的解释器去解释高级语言程序
- Java语言,编译与解释并存,且有及时编译功能,由于字节码的作用,先将高级语言编译成字节码供JVM调用,JVM针对各个操作系统都做了定制,做到一次编译,到处运行
程序翻译
- 支持的语言:C/C++、Object-C、Golang
- 优点:执行效率高
- 缺点:是不能跨平台
程序解释
- 支持的语言:Python、Php、Javascript
- 优点:可跨平台
- 缺点:执行效率低
2.2 计算机的层次
实际机器
硬件逻辑层
- 门、触发器等逻辑电路组成
微程序机器层
- 微程序由一组微指令集组成
- 一条机器指令对应一个微程序,即微程序直接交由硬件执行
传统机器层
- 编程语言和硬件是直接相关
- 编程语言是CPU指令集(机器指令)
- 不同架构的CPU使用不同的CPU指令集
虚拟机器
系统软件
操作系统层
- 向下对接了指令系统,管理硬件资源
- 向上提供了简易的操作界面
- 操作系统层是在软件和硬件之间的适配层
汇编语言层
- 汇编语言可以翻译成可直接执行的机器语言
- 编程语言是汇编语言
- 完成翻译的过程的程序就是汇编器
高级语言层
- 高级语言的类别非常多,由几百种
- 编程语言为广大程序员所接受的高级语言
- 常见的高级语言有: Python、 Java、 C/C++、 Golang等
应用软件
- 满足计算机针对某种用途而专门设计
3. 计算机的计算单位
容量单位
- 在物理层面,高低电平记录信息
- 理论上只认识0/1两种状态
- 0/1状态称为bit(比特位)
- 1Byte(字节) = 8 * bit
- KB,MB,GB,TB,PB,EB,1024= 2 10 2^{10} 210换算单位
- 硬盘商一般以10进位标记容量,故500G,实际
500
∗
100
0
3
102
4
3
\frac{500*1000^3}{1024^3}
10243500∗10003 约等于465GB
速度单位
网络速度
- 指的是容量/s,即100M=100M/s
- 注意这里的100M.指的是100Mbit/s,不是100MByte/s,相差8倍
CPU频率
- CPU的速度一般体现为CPU的时钟频率
- CPU的时钟频率的单位一般是赫兹(Hz)
- 主流CPU的时钟频率都在2GHz以上
- Hz其实就是秒分之一,例如20HZ,表示20/s,即每秒振动20次
- 它是每秒中的周期性变动重复次数的计量,不是描述计算机领域专有词汇
- 计算机频频描述的是每秒高低电平变换的次数,是衡量计算机CPU速度的一个指标
4. 计算机的字符与编码集
Extended ASCII码
- 为了表示数学符号等其他字符,对ASCII码进行扩充, 由7bits扩充到8bits,即可以表示
2
8
2^8
28个字符
中文编码集
- GBK,但只能在安装有GBK的平台使用
- UTF-8,Unicode:统一码、万国码、单一码,应用更加广泛
5.计算机组成结构分析
5.1 计算机的总线与IO设备
5.1.1 总线
总线概述
–>是什么
- 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。(总线也是导线,是连接两个以上计算机部件的专用信号线。)
–>作用
对外:
- 通用串行总线USB提供了对外连接的接口
- 不同设备可以通过USB接口进行连接
- 连接的标准,促使外围设备接口的统一,即解决不同设备的通信问题
对内: - 通过总线,如人体的脊柱一样,与内部结构进行通信交互
总线分类
片内总线
-
高集成度芯片内部的信息传输线
- 寄存器与寄存器之间
- 芯片内部的总线
- 寄存器与控制器、运算器之间
系统总线
-
CPU、主内存、 IO设备、各组件之间的信息传输线
–> 数据总线
–>地址总线
–>控制总线
总线仲裁
–>为什么要使用仲裁
- 为了解决总线使用权的冲突问题
–>使用哪些方法
----> 链式查询
-
链式串联的方式,各设备均可向仲裁控制器发出请求,但控制器给出的使用权依次按照链式传递,即优先给与排在前面的设备
-
优先级高的经常得到总线的使用权
-
优缺点:
- 坏处:优先级低的设备难以获得总线使用权
- 好处:电路复杂度低,仲裁方式简单
- 坏处:对电路故障敏感
---->计时器定时查询
-
每个任务向控制器请求一次,控制器就计数一次
-
控制器会根据计数进行查询,比如1,发现设备1没有发送请求,就累加计数,变为2,查询设备2,若2发送的请求,就发送给2
-
依次类推,若设备3发送请求,计时器累加为3
-
优先级高的经常得到总线的使用权
---->独立请求
特点:
- 设备可单独向仲裁器发送请求和接收请求
- 每个设备均有总线独立连接仲裁器
- 当同时收到多个请求信号,仲裁器有权按优先级分配使用权
优缺点:
- 好处:响应速度快,优先顺序可动态改变
- 坏处是设备连线多,总线控制复杂
5.1.2 输入输出设备
常见输入输出设备了解
- 常见输入设备:
- 字符输入设备:键盘
- 图像输入设备:鼠标、数位板、扫描仪
- 常见输出设备:
- 图像输出设备:显示器、打印机、投影仪
输入输出接口的通用设计
- 数据线
- 是I/O设备与主机之间进行数据交换的传送线
- 单向传输数据线
- 双向传输数据线
- 状态线
- IO设备状态向主机报告的信号线
- 查询设备是否已经正常连接并就绪
- 查询设备是否已经被占用
- 命令线
- CPU向设备发送命令的信号线
- 发送读写信号
- 发送启动停止信号
- 设备选择线
- 主机选择I/O设备进行操作的信号线
- 对连在总线上的设备进行选择
CPU与IO设备的通信
- 解决CPU速度与IO设备速度不一致问题
–>程序中断
-
过程:
- 当外围IO设备就绪时,向CPU发出中断信号
- CPU有专门的电路响应中断信号
-
特点:
- 提供低速设备通知CPU的一种异步的方式
- CPU可以高速运转同时兼顾低速设备的响应
–>DMA(直接存储器访问)
-
DMA直接连接主存与IO设备
-
DMA工作时不需要CPU的参与
-
一般存在于硬盘或外置显卡中
5.2 计算机的存储器
5.2.1 分类与层次结构
----->分类
####### 按储存介质分类
-
半导体存储器
- 内存
- U盘
- 固态硬盘
-
磁储存器
- 磁盘、机械硬盘
- 磁带
####### 按存取方式分类
-
RAM
- 随机读取
- 与位置无关
-
ROM
- 只读不写
-
串行存储器
- 与位置无关
- 按顺序查找
----->层次结构
####### 位价
####### 三个结构
####### 两个层次
######## 局部性原理
-
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中
######## 缓存-主存层次 -
缓存的存在是为了解决CPU与存储器速度不匹配问题,在CPU中开辟的处理速度快的寄存器
######## 主存-辅存层次 -
主存就是电脑中的高速内存,为了快速处理程序数据功能,辅存指的是电脑磁盘或是固态硬盘,永久性储存数据资源
5.2.2 主储存器与辅助储存器
主储存器-内存
- 即电脑中的内存条
- 存储器类型是RAM随机储存
- RAM通过电容存储数据,必须隔一段时间刷新一次
- 因此,如果掉电,一段时间后数据会消失,即无法永久保存数据资源
- 与CPU的高速缓存寄存器进行交互
- 大小:
- 32位: 2 32 2^{32} 232 = 4 * 2 30 2^{30} 230 = = 4 * 102 4 3 1024^3 10243 = 4GB
- 64位:
2
32
2^{32}
232 *
2
30
2^{30}
230 =
2
34
2^{34}
234GB
辅储存器-硬盘
####### 固态硬盘
-
存储介质:
- NAND闪存固态硬盘则是以NAND闪存,即一种非易失性的存储器
- 作为存储介质,通过存储器内部的电荷数即cell的通断电进行数据的读取和写入,进而实现数据存储。
-
半导体工艺
- 以半导体技术支撑,在单位面积PCB板上,集成了包括主控芯片、闪存颗粒(即存储介质)以及缓存芯片,外加大大小小的控制芯片和核心单元等核心组件
- 通过通电和放电的形式,将数据存储到闪存介质之中,实现数据的存储。
- 半导体工艺制程,让固态硬盘的内部结构更加稳定,同时拥有着防磕碰、防摔、防水(部分)等突出优势,更能适应负责的工作环境。
####### 机械硬盘
-
表面是可磁化的硬磁特性材料
-
移动磁头径向运动读取磁道信息
######## 先来先服务算法 -
按顺序访问进程的磁道读写顺序
######## 最短寻道时间优先算法 -
与磁头当前位置有关
-
优先访问与磁头近的位置
######## 扫描算法(电梯算法) -
每次只往一个方向移动
-
到达一个方向服务的尽头再反方向移动
######## 循环扫描算法 -
读到尾后,循环扫描到头开始读
5.2.3 高速缓存
工作原理
####### 字,块原理
-
一个字有32位
-
一个字块共B个字
-
主存共有M个字块
-
B*M = 主存总字数
-
B*M乘32 =主存总容量(bits))
-
2 m 2^m 2m = 𝑀
-
2 b 2^b 2b = 𝐵
####### 缓存原理 -
与主存逻辑的字,块逻辑类似
-
缓存的内存更小
-
缓存的速度更快
####### 命中率 -
CPU需要的数据在缓存里
-
如果缓存没有,就去主存里拿
-
反应CPU从缓存里拿数据的概率,越高性能越好
####### 访问效率 -
从CPU访问缓存的时间方面反映性能的指标
高速缓存的替换策略
####### 随机算法
- 地址随机替换
####### 先进先出算法(FIFO)
-
把高速缓存看做是一个先进先出的队列
-
优先替换最先进入队列的字块
####### 最不经常使用淘汰算法(LFU) -
优先淘汰替换最不经常使用的字块
-
需要额外的空间记录使用频率
####### 最近最少使用淘汰算法(LRU) -
优先淘汰一段时间内没有使用的字块
-
有多种实现方法,一般使用双向链表
-
把当前访问节点置于链表前面(保证链表头部节点是最近使用的)