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。
  • 移码:只要将补码的符号位取反,就可以得到对应的移码表示。

浮点数

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

如果浮点数的阶码(包括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 )

存储系统

高速缓存(Cache)

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

高速缓存(Cache)的各种地址映像方法

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

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

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

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

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

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

内存编址计算 *****

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

编制内容:

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

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

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

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

输入输出技术

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

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

直接内存存取 DMA

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

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

总线

一般来说,任何连接两个以上电子元器件的导线都可以称为总线。总线一般分为三类,分别是数据总线、地址总线、控制总线。

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

加密技术

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

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

常见的对称加密算法包括:DES,3DES,RC-5,AES等

常见的非对称加密算法包括:RSA,ECC等。

常见摘要算法:MD5,SHA-1,SHA-256等。

系统可靠性

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

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

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

可靠性公式

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

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

可用性公式

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

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

可维护性公式

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

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

Released under the MIT License.