笔者报考了2023年软考高级,考的是架构师,由于之前考过中级,想着自己有点基础,所以备考起步较晚;在网上写文章将自己的学习进度贴出来,一方面是为了敦促自己,另一方面给各位读者老爷找点乐子。如果今年顺利通过,那证明我写的笔记还是很有用的,如果今年果然没有通过,那岂不是很有意思?
1. 计算机硬件(考的少)
1.1 计算机硬件组成
- 5大部件:运算器、控制器、存储器、输入设备、输出设备
- 前两个合起来称为cpu,功能是:数据加工、算数和逻辑运算、各种控制
- 输入输出合成外设
1.2 中央处理单元
- cpu的功能:程序控制(执行顺序)、操作控制(产生操作数和运输操作数)、时间控制、数据处理、响应异常和中断
- cpu的组成:运算器、控制器、内部总线、寄存器组
- 运算器的组成:
- 算数逻辑单元ALU: 可以计算3+5=8
- 累加寄存器AC:存5和8的(5是原操作数,8是计算结果)
- 数据缓冲寄存器DR:存放从内存中拿过来的指令或者数据的
- 状态条件寄存器PSW:存放运行结果的条件码的,比如溢出标志
- 控制器的组成:
- 指令寄存器IR:存放从内存中拿到的指令的
- 程序计数器PC: 存放下一条指令在内存中的地址的
- 地址寄存器AR: 存放当前访问内存地址的
- 指令译码器ID: 用来解析指令的,从中可以解析操作码
- 指令周期:
- 在一个完整的指令周期,cpu对待指令这一坨二进制数字的态度是不同的,在固定的阶段认为其为指令地址,在某些阶段认为其为数据。
1.3 校验码
1.3.1 码距
- 狭义码距:对于相同长度的二进制数据a和b,通过改变a各个bit位的0或者1,可以将a变成b,在这个过程中改动的bit位的个数,称为码距;
- 广义码距:对于相同长度的二进制数据a和b,通过改变a各个bit位的0或者1,可以将f(a)变成f(b),在这个过程中改动的bit位的个数,称为码距;其中f为函数,f(a)为a的映射结果;
1.3.2 奇偶校验码
- 奇偶校验:奇校验就是在原来二进制数据的末尾添加一个bit位,取值可以是0或者1,以保证添加完之后的新的二进制数据中1的个数为奇数;显然,如果原来数据中1的个数本来就是奇数个,则添加的bit位值应该为0,反之为1;在这个过程中:添加完之后的新的二进制数据中1的个数为奇数可以看成是映射f
- 由此容易得到,奇偶校验的广义码距为2
- 奇偶校验码只能检1个bit位的错误,并且不能纠错。
循环冗余校验码CRC
- 同样是只能检错,而不能纠错
- 特点是,数据的接收方和发送方使用相同的多项式
- 在计算校验码的时候需要用到模2除法(就是按位异或)的算法
2. 指令系统(重要的计算机基础知识,考不考试都应该了解)
2.1 指令的组成
- 操作码:表明这条指令要做什么(例如要做加法)
- 操作数:和运算相关的数据 及其所在的地址 (有可能直接给出数据,也有可能给出存放数据的地址),习惯上又称地址码
- 所以有的地方说指令是由操作码和操作数组成的,也是没有问题的
- 不论是操作码还是操作数都是二进制数据,cpu区分它们的方式是根据指令周期的不同阶段(1.2 cpu功能中已经写到了)
2.2 指令执行过程
- 取指令: 一般是PC给出下一条指令在内存中的地址,送入总线从内存中拿到指令之后存到IR中
- 分析指令:ID分析IR中的指令,取出操作码
- 执行指令:在执行指令的时候从指令中拿到操作数
- 这对应上面说到的,在不同的指令周期从二进制指令中分别取出操作码和操作数