Skip to content
🗂️ 文章分类: 软考  
🏷️ 文章标签: 软考  
📅 文章创建时间: 2025-03-25
🕘️ 文章最后更新时间:2025-10-15

[toc]

软件设计师笔记01_计算机系统知识概述_精简考点

科目一考试中占2-8分左右。

ruankao_20241009100223.png

计算机系统硬件基本组成

计算机的基本硬件系统主要由运算器、控制器、存储器、输入设备和输出设备五大部件组成。

  • 运算器和控制器集成在一起统称为中央处理单元(CPU)。
  • 存储器是计算机系统中的记忆设备,分为内部存储器(速度高,容量小)和外部存储器(速度慢,容量大)。
  • 输入设备和输出设备合称为外部设备(简称外设)

中央处理单元CPU

中央处理单元(CPU)是 计算机系统的核心部件,它负责获取程序指令,对指令进行译码并加以执行。除此之外,CPU 还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。

CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成。

运算器的组成:

  • 1)算术逻辑单元(ALU):负责 对数据的算术运算和逻辑运算。
  • 2)累加寄存器(AC):是一个通用寄存器。负责暂存算术运算或逻辑运算的中间运算结果。
  • 3)数据缓冲寄存器(DR):写内存时,暂存指令或数据字或操作数。
  • 4)状态条件寄存器(PSW):保存指令执行后的状态。

控制器的组成:

  • 程序计数器PC:存储下一条要执行指令的地址。
  • 指令寄存器IR:存储即将执行的指令。
  • 指令译码器:对指令中的操作码字段进行分析。
  • 时序部件:提供时序控制信号。

进制转换

非十进制数转换为十进制数

在软考中,非十进制数(如二进制、八进制、十六进制)转换为十进制数的方法是按位权展开相加法。

二进制转十进制

  • 方法: 从右往左,将二进制数每一位的值(0 或 1)乘以对应位权(2 的幂次),然后求和。
  • 位权计算:从右往左,第一位为 2^0^ ,第二位为 2^1^ ,依此类推。

例子:

  • 二进制数 1011 转换为十进制:1 x 2^0^ + 1 x 2^1^ + 0 x 2^2^ + 1 x 2^3^ = 1 + 2 + 0 + 8 = 11

八进制转十进制

  • 方法:从右往左,将八进制数每一位的值(0-7)乘以对应位权(8 的幂次),然后求和。
  • 位权计算:从右往左,第一位为  8^0^ ,第二位为 8^1^ ,依此类推。

例子:

  • 八进制数 35 转换为十进制:5 x 8^0^ + 3 x 8^1^ = 5 + 24 = 29

十六进制转十进制

  • 方法:从右往左,将十六进制数每一位的值(0-9,A-F 表示 10-15)乘以对应位权(16 的幂次),然后求和。
  • 位权计算:从右往左,第一位为  16^0^ ,第二位为 16^1^ ,依此类推。

例子:

  • 十六进制数 0xA3 转换为十进制:3 x 16^0^ + A x 16^1^ = 3 + 10 x 16^1^ = 160 + 3 = 163

带小数的非十进制数转换十进制数

方法:整数部分和小数部分,分别按位权展开再相加。

  • 整数部分:从右往左,位权为 基数^0^ ,第二位为 基数^1^ ,依此类推。
  • 小数部分:从左往右,位权为 基数^-1^ ,第二位为 基数^-2^ ,依此类推。

示例:二进制数 101.11 转换为十进制

  • 整数部分:1 x 2^0^ + 0 x 2^1^ + 1 x 2^2^ = 1 + 0 + 4 = 5
  • 小数部分:1 x 2^-1^ + 1 x 2^-2^ = 0.5 + 0.25 = 0.75
  • 总和:5 + 0.75 = 5.75

十进制数转换为非十进制数

在软考中,十进制数转换为非十进制数(如二进制、八进制、十六进制)的方法是除基取余法(整数部分)和乘基取整法(小数部分)。

十进制整数转非十进制

  1. 步骤1 除基取余:将十进制整数不断除以目标进制的基数(二进制为 2,八进制为 8,十六进制为 16),记录每次的余数。
  2. 步骤2 逆序排列余数:直到商为 0,将余数从最后一个到第一个进行逆序排列,即为转换结果。

ruankao_20250325160809.png

十进制小数转非十进制

  1. 乘基取整:将十进制小数不断乘以目标进制的基数,记录每次乘积的整数部分。
  2. 顺序排列整数部分:直到小数部分为 0 或达到所需精度,将整数部分从第一次到最后一次依次排列,即为转换结果。

runakao_20250325161856.png

十进制数(包含整数和小数)转非十进制

  1. 整数部分:用除基取余法转换。
  2. 小数部分:用乘基取整法转换。
  3. 合并结果:将整数部分和小数部分用小数点连接。

ruankao_20250325162023.png

各个进制的加减法

在进行不同进制(如二进制、八进制、十进制、十六进制等)的加减法时,核心原理与十进制运算类似,但需注意"逢基数进一"(加法)和"借一当基数"(减法)的规则。

加法规则

  1. 从右向左逐位相加(低位到高位)
  2. 若本位数字之和 小于基数:直接写结果
  3. 若本位数字之和 大于等于基数:则向高位进1位,然后再继续计算。

减法规则

  1. 从右向左逐位相减(低位到高位)
  2. 若被减数本位数字 大于等于 减数本位数字:直接相减
  3. 若被减数本位数字 小于 减数本位数字。则需要从高位借1位(高位减1),然后再继续计算。

十进制(基数 10)

加法示例:计算 1011 + 110

bash
  1 0 1 1  
+   1 1 0  
----------  
  1 1 2 1  (步骤:从右向左逐位相加,遇10进1)

二进制(基数 2)

加法示例:计算 1011 + 110

bash
  1 0 1 1  
+   1 1 0  
----------  
1 0 0 0 1  (步骤:从右向左逐位相加,遇2进1)

八进制(基数是8)

加法示例:计算 35 + 27

bash
  3 5  
+ 2 7  
------  
  6 4  (步骤:5+7=12,12=1×8+4→本位写4,进位1;3+2+1=6→本位写6)

十六进制(基数是16)

十六进制中,每个位上的数字可以是 0-9 和 A-F(分别表示 10-15)。

加法示例:计算 A3 + 2F

bash
  A 3  
+ 2 F  
------  
  D 2  (步骤:3+15=18,18=1×16+2→本位写2,进位1;10+2+1=13→本位写D)

原码,反码,补码,移码 ⭐

  • 原码:在一串二进制机器数中,数的最高位是符号位。其中0为正符号位,1为负符号位。其余位是绝对值部分。原码主要用于早期计算机中,现在已经淘汰了。
  • 反码:正数的反码与原码相同。负数的反码中绝对值部分相比原码是按位取反的。
  • 补码:正数的补码与原码相同,负数的补码等于其对应反码的末尾加1。
  • 移码:只要将补码的符号位取反,就可以得到对应的移码表示。

原码,反码,补码,移码的数值范围

码制取值范围关键特点
原码(-(2^{n-1}-1) \sim +(2^{n-1}-1))正负对称,有 + 0、-0 两个 0
反码(-(2^{n-1}-1) \sim +(2^{n-1}-1))和原码范围一样,也有两个 0
补码(-2^{n-1} \sim +(2^{n-1}-1))多一个最小负数 (-2^{n-1}),0 唯一
移码(-2^{n-1} \sim +(2^{n-1}-1))范围和补码完全相同,常用于阶码

为什么补码能多表示一个最小负数?

由于机器数的最高位是符号位,这就导致原码和反码都有 + 0、-0 两个 0.

而补码把 +0 和 -0 合并成同一个 0。即正数的0是唯一的0。对于负数的0,即1000....0000 直接规定为最小的负数 (-2^{n-1})

所以补码能多表示一个最小负数。

为什么补码用于计算机中?

补码可以将加减法统一为加法。从而简化了计算机的运算逻辑。

浮点数

规格化浮点数的数值范围如下

如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括1位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下。

ruankao_2025-11-07_102832_206.png

校验码 ⭐

  • 奇偶校验码可以检错,但不能纠错。码距为2
  • 循环冗余校验码CRC 可以检错,但不能纠错。由两部分组成,左边为信息码(数据)。
  • 海明码可以检错也可以纠错。奇偶校验码和CRC循环冗余校验码方法可以检错,但不能纠错。

海明码通过在数据位n之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。

海明码公式

2^k^ >= n+k+1 其中数据位是n,校验位是k

三种校验码的区别

ruankao_20250522163847.png

寻址方式

  • 立即寻址:操作数在指令中的寻址方式。
  • 寄存器寻址:操作数在寄存器中的寻址方式。
  • 直接寻址:操作数的地址在指令中的寻址方式。
  • 寄存器间接寻址:操作数的地址在寄存器中的寻址方式。
  • 间接寻址:操作数的地址的地址在指令中的寻址方式。

存储器中各个寻址方式的速度对比:

立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

指令系统

CISC与RISC ⭐

CISC 全称为Complex Instruction Set Computing 复杂指令集。

  • 指令种类多
  • 指令复杂度高
  • 寻址方式复杂
  • 通用寄存器数量一般
  • 不支持流水线技术
  • 采用微程序控制技术实现译码。

RISC 全称为Reduced Instruction Set Computer,精简指令集。

  • 指令种类少
  • 指令复杂度低
  • 寻址方式固定
  • 通用寄存器数量大量
  • 支持流水线技术
  • 采用硬布线控制逻辑来实现译码。

ruankao_20250522173054.png

流水线 ⭐

流水线是为了模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。

流水线执行总指令时间的公式 T = NT + (K-1)t

  • NT是第一条指令执行的完整时间。
  • t 是流水线中耗时最长的哪个部分的时间。
  • k 是流水线中一共需要执行的指令数。

流水线的吞吐率公式 = 总的指令数 / (流水线执行总指令时间) = 总的指令数 / [ NT + (K-1)t ]

存储系统

存储层次结构 ⭐

CPU → 寄存器 → 高速缓存(Cache)→ 主存(DRAM) → 辅存(硬盘/SSD)

高速缓存(Cache)

在计算机的存储系统体系中,Cache是(除寄存器以外)访问速度最快的。主要解决CPU与主存之间速度容量不匹配问题。

注意:主存和高速缓存Cache之间的地址映射是由硬件直接完成的。

多级Cache:在多级Cache计算机中分为一级(L1Cache),二级(L2Cache)等。

注意: Cache的命中率与Cache容量的关系是:容量越大,命中率越高。

Cache 映射

由于高速缓存Cache中的内容是与主存的内容是一一映像的。因此有多种地址映像方法。

  • 全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好。缺点是访问速度慢、硬件电路设计成本太高。
  • 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式。
  • 直接映像:是指主存的块与Cache块的对应关系是一一对应的。优点是硬件电路设计简单,缺点是Cache块冲突率高。

发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射。

Cache命中率计算

Cache命中率计算

  • Cache命中率 = Cache命中次数 / 总访问次数

  • Cache平均访问时间 = 命中率×Cache访问时间 + (1-命中率)×主存访问时间

内存编址计算 ⭐

存储单元个数 = 最大地址 - 最小地址 + 1

编制内容:

  • 按字编址: 存储体的存储单元是字存储单元,即最小寻址单元是一个字。
  • 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单元是一个字节。

总容量 = 存储单元个数 * 编制内容。

根据存储器中要求的容量和选定存储芯片的容量。就可以计算出存储器中所需要芯片的个数。

总的芯片数 = 存储器的总容量 / 每个存储芯片的容量

输入输出技术 I/O 控制方式 ⭐

输入/输出(I/O)控制方式有三种,分别是程序控制方式、程序中断方式和直接存储器方式(DMA)。

  • 程序控制方式:程序控制方式是指 CPU 主动通过执行程序来查询外设的状态,判断外设是否准备好。从而为外设设备提供输入/输出服务。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
  • 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
  • 直接存储器存取方式(DMA):DMA方式是指通过DMA硬件来控制内存和设置的数据交换,这种方式可以不需要CPU处理。即绕过了CPU来进行数据交换的方式。

输入/输出(I/O)控制方式的效率对比

DMA 方式 > 程序中断方式 > 程序控制方式

直接内存存取 DMA ⭐

DMA全称是直接内存存取。DMA方式是为了在主存与外设之间,添加一个DMA硬件,从而实现高速、批量数据交换。

DMA方式比程序控制方式与中断方式都高效。这种方式可以不需要CPU处理。即绕过了CPU来进行数据交换的方式。

总线 ⭐

一般来说,任何连接两个以上电子元器件的导线都可以称为总线。

总线一般分为三类,分别是数据总线、地址总线、控制总线。

  • 控制总线:用于传输控制信号的,双向的。
  • 数据总线:用于传输数据的,双向的。
  • 地址总线:用于传输CPU发出的地址数据的,是单向的。

双向:控制总线,数据总线。

单向:地址总线。

加密解密技术 ⭐⭐⭐

加密技术是最常用的安全保密手段,数据加密的技术分为对称加密和非对称加密。

  • 对称加密:是指加密密钥和解密密钥是相同的。
  • 非对称加密:是指加密密钥和解密密钥是不同的。

总结

  • 常见的对称加密算法包括:DES,3DES,RC-5,AES等
  • 常见的非对称加密算法包括:RSA,ECC等。
  • 常见摘要算法:MD5,SHA-1,SHA-256等。

非对称加密下的公钥和私钥

加密通信(传明文防窃听)

  • 加密:自己用对方公钥加密
  • 解密:对方用对方私钥解密

口诀:公钥加密,私钥解密

数字签名(防篡改、防抵赖、验身份)

  • 签名:自己用自己的私钥签名
  • 验签:对方用自己的公钥验证

口诀:私钥签名,公钥验签

简单理解:

假设:A 发消息给 B。

如果是加密通信的话:

  • A 要发给 B 保密信息: 就要用 B 的公钥加密
  • B 收到 A 发送的保密信息后:用 B 自己私钥解密

如果是数字签名的话:

  • A 如果要证明内容是自己发的: 就要用 A 自己私钥签名
  • B 收到 A 发送的签名后:用 A 的公钥验证签名是不是由 A 发送的。

数字证书 ⭐

数字证书里存什么

用户公钥 + 用户信息 + CA 机构私钥签名

数字证书的作用

证明公钥属于本人,防止中间人冒充篡改公钥

数字证书的验证流程

拿CA 公钥验证证书签名 → 确认公钥合法可用

系统可靠性 ⭐

可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。

  • 串联系统的可靠性:各个子系统的可靠性乘积。即 R = R1 * R2 * ....Rn
  • 并联系统的可靠性:1减去各个子系统的不可靠性的乘积。即 R = 1 -(1-R1)(1-R2)...(1-Rn)

其中R1为子系统1的可靠性。

系统可用性(平均修复时间和平均无故障时间) ⭐

可靠性指标

  • MTBF(平均无故障时间):系统正常运行的平均时间
  • MTTR(平均修复时间):系统故障后修复的平均时间
  • 可用性:MTBF / (MTBF + MTTR)

可用性 = 平均无故障时间 / (平均无故障时间 + 平均修复时间) = MTBF / (MTBF + MTTR)

可靠性公式

可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。

记忆: 可靠性公式 = t / (1+t) 其中t为平均无故障时间。

可用性公式

可用性是在给定的时间点上,一个系统能够按照规格说明正确运作的概率。

记忆: 可用性公式 = t / (1+t) 其中t为平均失效间隔时间。

可维护性公式

可维护性是在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率。

记忆: 可维护性公式 = t / (1+t) 其中t为平均修复时间。