笔记 笔记
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

EasT-Duan

Java 开发
首页
  • 开发工具
  • Java Web
  • Java 进阶
  • 容器化技术
  • Java 专栏

    • Java 核心技术面试精讲
    • Java 业务开发常见错误 100 例
  • 数据库专栏

    • MySQL 实战 45 讲
    • Redis 核心技术与实战
  • 安全专栏

    • OAuth 2.0 实战课
  • 计算机系统
  • 程序设计语言
  • 数据结构
  • 知识产权
  • 数据库
  • 面向对象
  • UML
  • 设计模式
  • 操作系统
  • 结构化开发
  • 软件工程
  • 计算机网络
  • 上午题错题
在线工具 (opens new window)

购买兑换码请添加

添加时候请写好备注,否则无法通过。

  • Java 核心技术面试精讲

  • Java 业务开发常见错误 100 例

  • MySQL 实战 45 讲

  • OAuth 2.0 实战课

  • Redis 核心技术与实战

  • 软考专栏

    • 计算机系统
      • 1. 计算机系统基础知识
        • 1.1. 计算机系统硬件基本组成
        • 1.2. CPU的功能与组成
        • 1.2.1. CPU的功能
        • 1.2.2. CPU的组成
        • 1.3. 数据表示
        • 1.3.1. 计算机基本单位
        • 1.3.2. 进制转换
        • 1.3.3. 原码,反码,补码,移码
        • 1.3.4. 数值表示范围
        • 1.3.5. 浮点数表示
        • 1.4. 校验码
        • 1.4.1. 奇偶校验码
        • 1.4.2. 海明码
        • 1.4.3. 循环冗余校验码(CRC)
      • 2. 计算机体系结构
        • 2.1. 计算机体系结构的发展
        • 2.1.1. 计算机体系结构的分类
        • 2.1.2. Flynn分类法
        • 2.1.3. 指令系统
        • 2.2. 存储系统
        • 2.2.1. 存储器的分类
        • 2.2.2. 相联存储器
        • 2.2.3. 高速缓存
        • 2.2.4. 虚拟存储器
        • 2.2.5. 外存储器
        • 2.2.6. 磁盘阵列
        • 2.3. 输入输出技术
        • 2.3.1. 直接程序控制
        • 2.3.2. 中断方式
        • 2.3.3. 直接存储器存取
        • 2.4. 总线结构
      • 3. 计算机安全
        • 3.1. 安全威胁
        • 3.2. 加密技术和认证技术
        • 3.2.1. 加密技术
        • 3.2.2. 认证技术
        • 3.2.3. 攻击技术
        • 3.3. 计算机可靠性
        • 3.3.1.串联系统
        • 3.3.2. 并联系统
    • 程序设计语言
    • 数据结构
    • 知识产权
    • 数据库
    • 面向对象
    • UML
    • 设计模式
    • 操作系统
    • 结构化开发
    • 软件工程
    • 计算机网络
    • 上午题错题

  • 专栏
  • 软考专栏
EasT-Duan
2023-10-10
目录

计算机系统

欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。

# 1. 计算机系统基础知识

# 1.1. 计算机系统硬件基本组成

  • 硬件
    • 中央处理器 (CPU) 硬件系统的核心
      • 运算器
      • 控制器
    • 存储器 (记忆设备)
      • 内部存储器 (速度高,容量小):临时存放程序、数据及中间结果
      • 外部存储器 (速度慢,容量大):长期保存程序和数据
    • 外设 (外部设备)
      • 输入设备:输入原始数据及各种命令
      • 输出设备:输出计算机运行结果
  • 软件

# 1.2. CPU 的功能与组成

中央处理单元 (CPU):计算机系统的核心部件,它负责获取程序指令,对指令进行译码并加以执行

# 1.2.1. CPU 的功能

  • 程序控制:通过执行指令来控制程序的执行顺序
  • 操作控制:一条指令功能的实现需要若干个操作信号配合来完成,CPU 产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作
  • 时间控制:CPU 对各种操作进行时间上的控制,即在指令执行过程中操作信号的出现时间,持续时间及出现的 时间顺序都需要进行严格的控制
  • 数据处理:CPU 通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是 CPU 最根本的任务
  • CPU 还需对系统内部和外部的中断 (异常) 做出响应,进行相应的处理。

# 1.2.2. CPU 的组成

(1) 运算器 (是数据加工处理部件,用于完成计算机的各种算术和逻辑运算):运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件

  • 功能
    • 执行所有算术运算,如加、减、乘、除等基本运算及附加运算。
    • 执行所有的逻辑运算并进行逻辑测试,如与、或、非、零值测试或两个值的比较等。
  • 组成
    • 算术逻辑单元 (ALU):运算器的重要组成部分,用来对于数据的算数运算和逻辑运算,加法器是算术逻辑运算单元的组成部件
    • 累加寄存器 (AC):简称累加器,是一个通用寄存器。暂存算术运算或逻辑运算的中间结果。
  • 数据缓冲寄存器 (DR):暂存指令或数据字或操作数。
  • 状态条件寄存器 (PSW):保存指令执行后的状态。

(2) 控制器

  • 功能
    • 用于控制整个 CPU 的工作,决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且能够处理异常事件
  • 组成
    • 指令控制逻辑:要完成取指令、分析指令和执行指令的操作,其过程分为取指令,指令译码按指令操作码执行,形成下一条指令地址等步骤。
      • 指令寄存器 (IR):保存 CPU 正在执行的指令,从内存中取出后存入 IR, 一 ID 根据 IR 产生的内容生成微操指令。控制其他组成部件并要求其工作。
      • 程序计数器 (PC):初始化是指向的是第一条指令的地址,执行后对 PC 的内容 + 1,保证其指向的永远是下一条指令的地址。编写汇编语言程序时程序员可以访问
      • 地址寄存器 (AR):存放的是 cpu 访问内存单元的地址
      • 指令译码器 (ID):对指令中的操作码进行分析解释,识别该指令操作,向控制器发出信号,控制各个部件工作。
    • 时序控制逻辑:要为每条指令按时间顺序提供应有的控制信号
    • 总线控制逻辑:是为多个功能部件服务的信息通路的控制电路
    • 中断控制逻辑:用于控制各种中断请求,并根据优先级别的高低对中断请求进行排队,逐个交给 CPU

(3) 寄存器组

  • 分类:专用寄存器 (运算器和控制器中的寄存器是专用寄存器)、通用寄存器

# 1.3. 数据表示

# 1.3.1. 计算机基本单位

单位 符号 备注
位 (比特) bit (b) 计算机最小的存储单位
字节 byte (B) 数据表示的最小单位: 1B = 8bit
千字节 KB 1KB = 1024B
兆字节 MB 1MB = 1024KB
吉字节 GB 1GB = 1024 MB
太字节 TB 1TB = 1024GB

# 1.3.2. 进制转换

进制 运算规则 标识符
二进制 逢二进一:基数为 2,数值部分用两个不同的数字 0、1 来表示 B
八进制 逢八进一:基数为 8,数值部分用 0、1、2、3、4、5、6、7 来表示 O
十进制 逢十进一:基数为 10,数值部分用 0、1、2、3、4、5、6、7、8、9 来表示 D
十六进制 逢十六进一:基数为 16,有十六种数字符号,除了在十进制中的 0 至 9 外,还另外用 6 个英文字母 A、B、C、D、E、F 来表示十进制数的 10 至 15 H

当没有下标或后缀时默认为十进制数

非十进制数转为十进制数

假设有一个非十进制数 N,其基数为 b,位数从左到右分别为ana_{n}an​,an−1a_{n-1}an−1​,an−2a_{n-2}an−2​,........ 则其十进制值可以表示为:

N10=an⋅bn+an−1⋅bn−1+......+a0⋅b0N_{10} = a_n \cdot b^n + a_{n-1} \cdot b^{n-1} +......+ a_0 \cdot b^0 N10​=an​⋅bn+an−1​⋅bn−1+......+a0​⋅b0

  • 二进制转换为十进制

    (101.1101)2=1×22+0×21+1×20+1×2−1+1×2−2+0×2−3+1×2−4=(5.8125)10(101.1101)_2 = 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 + 1 \times 2^{-1} + 1 \times 2^{-2} + 0 \times 2^{-3} + 1 \times 2^{-4} = (5.8125)_{10} (101.1101)2​=1×22+0×21+1×20+1×2−1+1×2−2+0×2−3+1×2−4=(5.8125)10​

  • 八进制转换为十进制

    (105.236)8=1×82+0×81+5×80+2×8−1+3×8−2+6×8−3=(69.30859375)10(105.236)_8 = 1 \times 8^2 + 0 \times 8^1 + 5 \times 8^0 + 2 \times 8^{-1} + 3 \times 8^{-2} + 6 \times 8^{-3} = (69.30859375)_{10} (105.236)8​=1×82+0×81+5×80+2×8−1+3×8−2+6×8−3=(69.30859375)10​

  • 十六进制转换为十进制

    (A27.5C)16=10×162+2×161+7×160+5×16−1+12×16−2=(2599.359375)10(A27.5C)_{16} = 10 \times 16^2 + 2 \times 16^1 + 7 \times 16^0 + 5 \times 16^{-1} + 12 \times 16^{-2} = (2599.359375)_{10} (A27.5C)16​=10×162+2×161+7×160+5×16−1+12×16−2=(2599.359375)10​

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

  • 整数部分:除 N 取余,商为 0 时,将余数倒序输出
  • 小数部分:乘 N 取整数,直至积为 0 (或满足精度),整数部分正序输出

十进制转换为二进制

将十进制数 78.25 转换为二进制数。

整数 78 部分转换如下:

被除数 除数 商 余数 输出顺序
78 2 39 0 ↑
39 2 19 1
19 2 9 1
9 2 4 1
4 2 2 0
2 2 1 0
1 2 0 1
小数部分如下
计算 整数 输出顺序
0.25×2=0.5 0 ↓
0.5×2=1.0 1

78.2510=1001110.01278.25_{10}=1001110.01_{2} 78.2510​=1001110.012​

十进制转换为八进制

将十进制数 275.171875 转换为八进制数。

整数部分 275 转换如下:

被除数 除数 商 余数 倒序输出
275 8 34 3 ↑
34 8 4 2
4 8 0 4
小数部分 0.171875 转换如下:
计算 整数 输出顺序
0.171875×8=1.375 1 ↓
0.375×8=3.0 3

275.17187510=423.138275.171875_{10} = 423.13_{8} 275.17187510​=423.138​

十进制转换为十六进制

将十进制数 25367.94921875 转换为十六进制数。

整数部分 25367 转换如下:

被除数 除数 商 余数 倒序输出
25367 16 1585 7 ↓
1585 16 99 1
99 16 6 3
6 16 0 6

小数部分 0.94921875 转换如下:

计算 整数 输出顺序
0.94921875×16=15.1875 F ↓
0.1875×16=3.00 3

25367.9492187510=6317.F31625367.94921875_{10} = 6317.F3_{16} 25367.9492187510​=6317.F316​

二进制与八进制、十六进制的相互转换

  • 二进制转为八进制(三位一组)
    将二进制数从小数点开始分别向左(整数部分)和向右(小数部分)每 3 位二进制位组成一组,将每一组内的 3 位二进制数转换成八进制数码中的一个数字,按顺序连接起来即得八进制表示。不足 3 位时,对原数值右补 0 来补足 3 位。
    例如:(001011111.001)2=(137.1)8(001 011 111.001)_{2} = (137.1)_{8}(001011111.001)2​=(137.1)8​

  • 二进制转为十六进制(四位一组)
    将二进制数从小数点开始分别向左(整数部分)和向右(小数部分)每 4 位二进制位组成一组,将每一组内的 4 位二进制数转换成十六进制数码中的一个数字,按顺序连接起来即得十六进制表示。如果总的位数不是 4 的倍数,那么最左面的二组可以少于 4 位,前面用 0 来补足 4 位。
    例如:(1111111101001011)2=(FF4B)16(1111111101001011)_{2} = (FF4B)_{16}(1111111101001011)2​=(FF4B)16​

# 1.3.3. 原码,反码,补码,移码

符号位:如果机器字长为 n,则最高位(或最左边的第一位是符号位:0 表示正号,1 表示负号)。原码:原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示数值绝对值。如果机器字长 n=8

数值 原码 数值 原码
+0 00000000 -0 10000000
+1 00000001 -1 10000001
+127 01111111 -127 11111111
+45 00101101 -45 10101101
+0.5 0< >100000 -0.5 1<>100000

反码:正数的反码与原码相同,负数的反码则是由其绝对值按位取反。

数值 反码 数值 反码
+0 00000000 -0 11111111
+1 00000001 -1 11111110
+127 01111111 -127 10000000
+45 00101101 -45 11010010
+0.5 0< >100000 -0.5 1<>0111111

补码:正数的补码与其原码相同,负数的补码则等于其反码的末尾加 1。补码的补码就是原码

数值 补码 数值 补码
+0 00000000 (唯一) -0 00000000
+1 00000001 -1 11111111
+127 01111111 -127 10000001
+45 00101101 -45 11010011
+0.5 0< >100000 -0.5 1<>100000

移码:只要将补码的符号位取反便可获得相应的移码表示。

数值 移码 数值 移码
+1 10000001 -1 01111111
+127 11111111 -127 00000001
+45 10101101 -45 01010011
+0 10000000 -0 10000000

例题 1
若某整数的 16 位补码为 FFFFH(H 表示十六进制),则该数的十进制值为 (20)B 。(2010 年上半年)
(20) A. 0 B. -1 C. 216−12^{16}-1216−1 D. −216−1-2^{16}-1−216−1

提示

补码的补码就是原码,首先 FFFF 得二进制是 1111 1111 1111 1111,反码为 1000 0000 0000 0000,第一位是符号位即负数首先排除 AC,又得到补码为 1000 0000 0000 0001,除去第一位符号位,得到二进制为 000 0000 0000 0001 加上符号位得到1,最后十进制是 - 1。

例题 2:这也是个定义题,遇到过很多次了

原码表示法和补码表示法是计算机中用于表示数据的两种编码方法,在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以简化计算机运算部件的设计 。(2011 年上半年)


# 1.3.4. 数值表示范围

机器字长为 n 时各种码制表示的带符号数的范围

整数 小数
原码 −(2n−1−1)∼(2n−1−1)-(2^{n-1}-1) \sim (2^{n-1}-1)−(2n−1−1)∼(2n−1−1) −(1−2−(n−1))∼(1−2−(n−1))-(1-2^{-(n-1)}) \sim (1-2^{-(n-1)})−(1−2−(n−1))∼(1−2−(n−1))
反码 −(2n−1−1)∼(2n−1−1)-(2^{n-1}-1) \sim (2^{n-1}-1)−(2n−1−1)∼(2n−1−1) −(1−2−(n−1))∼(1−2−(n−1))-(1-2^{-(n-1)}) \sim (1-2^{-(n-1)})−(1−2−(n−1))∼(1−2−(n−1))
补码 −(2n−1)∼(2n−1−1)-(2^{n-1}) \sim (2^{n-1}-1)−(2n−1)∼(2n−1−1) −1∼(2−(n−1))-1 \sim (2^{-(n-1)})−1∼(2−(n−1))
移码 −(2n−1)∼(2n−1−1)-(2^{n-1}) \sim (2^{n-1}-1)−(2n−1)∼(2n−1−1) −1∼(2−(n−1))-1 \sim (2^{-(n-1)})−1∼(2−(n−1))

# 1.3.5. 浮点数表示

a. 运算过程:对阶 > 尾数计算 > 结果格式化

b. 特点

  • 一般尾数用补码,阶码用移码。
  • 先对阶码,小阶对大阶,尾数右移
  • 阶码决定数值范围,位数越多范围越大。
  • 尾数决定数值精度,位数越多精度越高。
  • 对阶是通过较小数的尾数算术右移实现的。

当字长为 n ,补码和移码可表示 2n2^n2n 个数,原码和反码可表示 2n−12^n -12n−1。

浮点数的一般表示形式为N=F+2EN = F + 2^EN=F+2E,其中 E 为阶码,F 为尾数

如果浮点数的阶码(包括 1 位阶符)用 R 位的移码表示,尾数(包括 1 位数符)用 M 位的补码表示:

  • 最大的正数:+(1−2−M+1)×2(2R−1−1)+(1 - 2^{-M+1}) \times 2^{(2^{R-1}-1)}+(1−2−M+1)×2(2R−1−1)
  • 最小的负数:−1×2(2R−1−1)-1 \times 2^{(2^{R-1}-1)}−1×2(2R−1−1)

定点表示法中,小数点的使用是隐式的,并不实际占用一个存储位。存储格式如下

阶符 阶码 数符 尾数

# 1.4. 校验码

# 1.4.1. 奇偶校验码

可以检错,不能纠错

通过在编码中增加一位校验位来使编码中 1 的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为 2。

# 1.4.2. 海明码

可以检错和纠错

在数据位之间的特定位置上插入 k 个校验位,通过扩大码距来实现检错和纠错。设数据位是 n 位,校验位是 k 位,则 n 和 k 必须满足:2k−1≥n+k2^k - 1 \geq n + k2k−1≥n+k。

# 1.4.3. 循环冗余校验码 (CRC)

码距为 2,可以检错,不能纠错

广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为 k 个数据位产生 r 个校验位来进行编码,其编码 长度为 k+r。

循环冗余校验码是由两部分组成的,左边为信息码(数据),右边为校验码。若信息码占 k 位,则校验码就占 n-k 位。其中,n 为 CRC 码的字长,所以又称为(n,k)码。校验码是由信息码产生的,校验码位数越多,该代码的校 验能力就越强。在求 CRC 编码时,采用的是模 2 运算。

# 2. 计算机体系结构

# 2.1. 计算机体系结构的发展

# 2.1.1. 计算机体系结构的分类

  • 按处理机数量(宏观上):
    • 单处理系统:利用一个处理单元与其他外部设备结合起来
    • 并行处理与多处理系统:将两个以上的处理机互连起来,彼此进行通信协调,以便共同求解一个大问题的计算机系统
    • 分布式处理系统:指物理上远距离而松耦合的计算机系统
  • 按并行度(微观上):
    • Flynn 分类法:按指令流和数据流的多少进行分类
    • 冯泽云分类法:按并行度对各种计算机系统进行结构分类
    • Handle 分类法:在系统中中三个层次上按并行程度及流水线处理程度分类
    • Kuck 分类法:用指令流和执行流及其多重性描述计算及系统控制结构的特征

# 2.1.2. Flynn 分类法

体系结构类型 结构 关键特性 代表
单指令流单数据流 SISD 控制部分:一个
处理器:一个
主存模块:一个
单处理器系统
单指令流多数据流 SIMD 控制部分:一个
处理器:多个
主存模块:多个
各处理器以异步的形式执行同一条指令 并行处理机
阵列处理机
超级向量处理机
多指令流单数据流 MISD 控制部分:多个
处理器:一个
主存模块:多个
被证明不可能,
至少是不实际
目前没有,有文献
称流水线计算机为
此类
多指令流多数据流 MIMD 控制部分:多个
处理器:多个
主存模块:多个
能够实现作业、
任务、指令等
各级全面并行
多处理机系统
多计算机

# 2.1.3. 指令系统

a. 指令集体系结构 (ISA):一个处理器支持的指令和指令的字节级编码称其指令集体系结构。

  • 从体系结构的观点:
    • 操作数在 CPU 中的存储方式,即操作数从主存中取出后保存在什么地方
    • 显示操作数的数量,即在典型的指令中有多少个显示命名的操作数
    • 操作数的位置,即任何一个 ALU 指令的操作数能否放在主存中,以及如何定位
    • 指令的操作,即在指令集中提供哪些操作
    • 操作数的类型与大小
  • 按暂存机制:堆栈、累加器、寄存器组

b. CISC 和 RISC
CISC 和 RISC 是指指令集发展的两种途径。

RISC
精简指令集计算机
CISC
复杂指令集计算机
指令种类 少、精简 多、丰富
指令复杂度 低(简单) 高(复杂)
指令长度 固定 变化
寻址方式 少 复杂多样
实现(译码)方式 硬布线控制器
(组合逻辑控制器)
微程序控制技术
通用寄存器数量 多、大量 一般
流水线技术 支持 不支持

c. 指令的流水控制

  • 流水线的种类
    • 从流水级别:部件级流水、处理级流水、系统级流水
    • 从流水功能:单功能流水线、多功能流水线
    • 从流水连接:静态流水线、动态流水线
    • 从流水是否有反馈回路:线性流水线、非线性流水线
    • 从流水顺序顺序:同步流水线、异步流水线
    • 从流水的数据表示:标量流水线、向量流水线
    • 指令控制的方式:顺序方式、重叠方式、流水方式

RISC 采用的流水线技术有:超流水线、超标量和超长指令字。

d. 吞吐率和流水建立时间

吞吐率是指单位时间内流水线处理器机输出的结果数。对指令而言,就是单位时间内执行的指令数。

吞吐率=指令条数一条完整指令的时间+(n−1)×流水线周期\text{吞吐率}=\frac{\text{指令条数}}{\text{一条完整指令的时间}+(n-1)\times\text{流水线周期}} 吞吐率=一条完整指令的时间+(n−1)×流水线周期指令条数​

流水线的总时间=一条完整指令的时间+(n−1)×流水线周期\text{流水线的总时间}=\text{一条完整指令的时间}+(n-1)\times\text{流水线周期} 流水线的总时间=一条完整指令的时间+(n−1)×流水线周期

其中:n 代表指令数,流水线周期代表最长的操作时间。

# 2.2. 存储系统

# 2.2.1. 存储器的分类

  • 按访问方式:
    • 按地址访问的存储器、按内容访问的存储器
  • 按寻址方式
    • 随机存储器
    • 顺序存储器
    • 直接存储器
  • 按存储器所处位置
    • 内存:也称主存,用来存放机器当前运行所需的程序和数据
    • 外存:也称辅存,用来存放当前不参加运行的大量信息,而在需要时调入内存
  • 按存储器的构成材料
  • 磁存储器:用磁介质做成
  • 半导体存储器:
    • 根据所用元件:双极型、MOS 型
    • 根据数据:静态、动态
  • 光存储器:利用光学方法读 / 写数据的存储器
  • 按存储器的工作方式:
    • 读 / 写存储器(RAM):既能读取数据也能存入数据
    • 只读存储器
      • 固定只读存储器(ROM):内容只能读出,不能改变
      • 可编程的只读存储器(PROM):其中的内容可以由用户一次性地写入,写入后不能改变
      • 可擦除可编程的只读存储器(EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以修改
      • 电擦除可编程的只读存储器(EEPROM):与 EPROM 相似,既可以读出,也可以写入,只不过这种存储器采用电擦除的方式进行数据的改写
      • 闪速存储器(FM):简称闪存,其特性介于 EPROM 和 EEPROM 之间,类似于 EEPROM
  • 按寻址方式:
    • 立即寻址:操作数就包含在指令中
    • 直接寻址:操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址
    • 寄存器寻址:操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名
    • 寄存器间接寻址:操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中
    • 间接寻址:指令中给出操作数地址的地址
    • 相对寻址:指令地址码给出的一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量
    • 变址寻址:操作数地址等于变址寄存器的内容加偏移量
    • 寻址速度:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

# 2.2.2. 相联存储器

相联存储器是一种按内容访问的存储器。

# 2.2.3. 高速缓存

  • 高速缓存的组成部分:
    • 控制部分、存储部分
  • 高速缓存中的地址映像方法
    • 直接映像:指主的块与 Cache 块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache 块冲突率高。
    • 全相联映像:允许主存的任一块可以调入 Cache 存储器的任何一个块的空间中。优点是 Cache 块冲突率少、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。
    • 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式,突率少。
    • 发生块冲突从少到多的顺序: 全相联映射 --> 组相联映射 --> 直接映射
  • 替换算法:
    • 随机替换算法、先进先出算法、近期最少使用算法、优化替换算法(替换算法的时间复杂度并不是影响 Cache 命中率的关键因素。替换算法主要影响的是缺失率(Cache Miss Rate),而不是命中率。)
  • 性能分析
    • 命中率是 Cache 的一个重要指标,但不是最主要的指标
    • Cache 的命中率与 Cache 容量的关系是: 容量越大,命中率越高
  • 多级 Cache
    • 在多级 Cache 计算机中分为一级 (L1Cache),二级 (L2Cache) 等

!!!Cache 与主存的地址映射 : 由硬件自动完成

Cache 的设计思想是在合理成本下提高命中率。

# 2.2.4. 虚拟存储器

虚拟存储器技术是把很大的程序 (数据) 分成许多较小的,全部储存在辅助存储中。运行时要把用到的程序 (数据) 块调入主存,并且马上就要用到的程序块从主存调入高速缓存。这样就可以一边运行程序,一边所需程序 (数据) 块的调进或调出。

虚拟存储器管理方式: 段式虚拟存储器、页式虚拟存储器、段页式虚拟存储器。

# 2.2.5. 外存储器

  • 磁表面存储器
    • 磁盘存取速度较快,具有较大的存储容量,是目前广泛使用的外存储器。硬盘就是最常见的外存储器
  • 光盘存储器
    • 是一种采用聚焦激光束在盘式介质上非接触地记录高密度信息的新型存储装置
    • 根据性能和用途分为:
      • 只读型光盘 (CD-ROM)、只写一次型光盘 (WORM)、可擦除光盘
  • 固态硬盘
    • 存储介质
      • 闪存 (FLASH 芯片)
      • DRAM
    • 具有传统机械硬盘不具备的读写快速,质量轻,能耗低以及体积小等特点,但其价格仍较昂贵,容量较低,一旦硬件损坏,数据较难恢复。

# 2.2.6. 磁盘阵列

磁盘阵列是由多台磁盘存储器组成的 — 个快速,大容量,可靠的外村子系统,常见的磁盘阵列为廉价冗余磁盘阵列 (RAID)。

# 2.3. 输入输出技术

# 2.3.1. 直接程序控制

直接程序控制是指外设数据的输入 / 输出过程是在 CPU 执行程序的控制下完成的。直接程序控制的两种情况:

  • 程序查询方式
    • 利用查询方式进行输入 / 输出,就是通过 CPU 执行程序来查询外设的状态,判断外设是否准备好接受数据或准备好向 CPU 输入数据
      • CPU 和 IO 只能串行工作,CPU 需要一直轮询检查,长期处于忙等状态,CPU 利用率低。
      • 一次只能读 / 写一个字
      • 由 CPU 将数据放入内存
      • 需要 CPU 保护现场
  • 无条件传送
    • 在此情况下,外设总是准备好的,它可以以无条件地随时接受 CPU 发出的输出数据,也能够无条件地随时向 CPU 提供需要的输入数据

# 2.3.2. 中断方式

中断方式即由中断程序控制 I/O 的方法,缺点在于 CPU 必须等待 I/O 系统完成数据的传输任务,而且要定期查询 I/O 系统的状态,确认传输是否完成。因此大大降低了整个系统的性能。

中断处理方法

多中断信号线、中断软件查询法、菊花链法、总线仲裁法、中断向量表法

中断优先级控制

  • 当不同优先级的多个中断源同时提出中断请求时,CPU 应优先响应优先级最高的中断源
  • 当 CPU 在对某一个中断源服务时,有比它优先级更高的中断源提出中断请求,CPU 应暂时中断正在执行的中断服务程序而转去对优先级更高的中断源服务,结束后再回到之前被中断的优先级较低的中断源服务程序继续执行,这种情况称为中断嵌套,即一个中断服务程序中嵌套着另一个中断服务程序,为了便于实现多级中断嵌套,使用堆栈来保护断点和现场最有效。

关键要素

  • 中断向量提供: 中断服务程序的入口地址
  • 中断响应时间:从发出中断请求到开始进入中断处理程序
  • 保存现场:为了正确返回原程序继续执行

中断驱动 I/O

  • IO 设备通过中断信号主动向 CPU 报告 IO 操作已完成
  • CPU 和 IO 可并行工作
  • CPU 的利用率得到提升
  • 一次只能读 / 写一个字
  • 由 CPU 将数据放入内存
  • 需要 CPU 保护现场

# 2.3.3. 直接存储器存取

直接存储器存取(Direct Memory Access,DMA):外设通过 DMA 控制器直接访问内存,实现数据的直接传输,无需 CPU 的干预。这种方式可以提高数据传输速度,减轻 CPU 的负担,提高系统的效率。

  • CPU 和 IO 可并行工作
  • 仅在传送数据块的开始和结束时才需要 CPU 的干预
  • 由外设直接将数据放入内存或者相反
  • 一次读写的单位为 “块” 而不是字
  • DMA 传送一个数据占用一个存储周期
  • 不需要 CPU 保护现场

# 2.4. 总线结构

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

  • 数据总线 (DB) : 用来传送数据信息,是双向的。CPU 既可以通过 DB 从内存或输入设备读入数据,也可以通过 DB 将内部数据传送至内存或输出设备。DB 的宽度决定了 CPU 和计算机其他设备之间每次交换数据的位数。
  • 地址总线 (AB) : 用于传送 CPU 发出的地址信息,是单向的。传送地址总线的目的是指明与 CPU 交换信息的内存单元或 I/O 设备,地址总线的宽度决定了 CPU 的最大寻址能力。
  • 控制总线 (CB) : 用来传送控制信号、时序信号和状态信息等,双向线表示。其中的信号是 CPU 向内存或外部设备发出的信息,有的信号是内存或外部设备向 CPU 发出的信息。CB 中的每一条线的信息传送方向是单方向且确定的,但 CB 作为一个整体则是双向的。

# 3. 计算机安全

计算机安全指的是计算机资产安全,是要保证这些计算机资产不受自然和人为的有害因素的威胁和危害。

# 3.1. 安全威胁

威胁 说明
授权侵犯 为某一特定权使用一个系统,却将该系统用作其他未授权的目的
拒绝服务 对信息或其他资源的合法访问被无条件地拒绝,或者推迟与时间密切相关的操作
窃听 信息从被监视的通信过程中泄露出去
信息泄露 信息被泄露或暴露给某个未授权的实体
截获 / 修改 某一通信数据项在传输过程中被改变、删除或替代
假冒 一个实体 (人或系统) 假装成另一个实体
否认 参与某次信息交换的一方否认曾发生过此次交换
非法使用 资源被某个未授权的人或未授权的方式使用
人员疏忽 一个授权的人为了金钱或利益,或者由于粗心将信息泄露给未授权的人
完整性破坏 通过对数据进行未授权的创建、修改或破坏,使数据的一致性受到损坏
媒体清理 从废弃的或打印过的媒体中获得信息
物理入侵 一个入侵者通过物理控制而获得对系统的访问
资源耗尽 某一资源 (如访问端口) 被故意超负荷使用,导致其他用户的服务被中断

# 3.2. 加密技术和认证技术

# 3.2.1. 加密技术

对称加密 (私钥 / 私有密钥)

  • DES
  • 3DES
  • RC-5
  • IDEA
  • AES 分组加密算法
  • RC4

非对称加密 (公钥 / 公开密钥)

  • RSA
  • ECC
  • DSA

# 3.2.2. 认证技术

消息摘要:将发送的明文进行 Hash 算法(如 MD5(128 位)、SHA-1、SHA-256 等)后得到摘要而放在密文后一起发送过去,与接收方解密后的明文进行相同的 Hash 算法得到的摘要进行对比如果一致,则没有篡改,否则有篡改。

  • 摘要算法防止发送的报文被篡改

数字签名:数字签名是一种基于公钥加密的技术,使用发送方的私钥对消息摘要进行加密,生成数字签名;接收方使用发送方的公钥解密签名并验证其真实性(又或者说用接收方的公钥加密,私钥解密)。

  • 一般是对信息摘要进行签名。
  • 数字签名通常使用公钥密码学中的非对称加密算法来实现。
  • 数字签名可以验证消息的真实性、完整性、发送方不可否认。

数字证书:

CA 是一个受信任的第三方机构,负责颁发和管理数字证书。

用户向 CA 提交身份信息和公钥,CA 机构颁给用户数字证书,数字证书用CA 的私钥进行签名 (加密),用 CA 的公钥验证 (解密)数字证书得到用户的公钥。

可以确认网站的合法性,用户的身份等。

对称密钥适合大量明文消息进行加密传输

# 3.2.3. 攻击技术

被动攻击

被动攻击是指攻击者通过窃听、监视或分析通信内容,试图获取敏感信息,但不直接干扰或修改数据流。

加密阻止被动攻击。

主动攻击

主动攻击是指攻击者不仅窃听通信,还试图篡改、伪造或中断数据流,从而对系统或通信造成直接影响。

认证阻止主动攻击。

# 3.3. 计算机可靠性

# 3.3.1. 串联系统

假设一个系统由 N 个子系统组成,当且仅当所有的子系统都能正常工作时系统才能正常工作,这种系统称为串联系统。

输入 --> [R1] --> [R2] --> ... --> [RN] --> 输出
1

设系统中各个子系统的可靠性分别用R1,R2,R3,...,RNR_1,R_2,R_3,...,R_NR1​,R2​,R3​,...,RN​ 来表示,则系统的可靠性 R 可由下式
求得。

R=R1R2...RNR=R_1R_2...R_N R=R1​R2​...RN​

# 3.3.2. 并联系统

假如一个系统由 N 个子系统组成,只要有一个子系统正常工作,系统就能正常工作,这样的系统称为并联系统,如下图。设每个子系统的可靠性分别以R1,R2,....,RNR_1,R_2,....,R_NR1​,R2​,....,RN​ 表示,整个系统的可靠性可由下式求得。

输入 --+--> [R1] --+--> 输出
       |     :      |
       +--> [R2] --+
       |     :      |
       +--> [RN] --+
1
2
3
4
5

R=1−(1−R1)(1−R2)...(1−RN)R=1-(1-R_1)(1-R_2)...(1-R_N) R=1−(1−R1​)(1−R2​)...(1−RN​)

#软考
上次更新: 2025/08/19, 10:30:51
期末测试题答案-这些Redis核心知识,你都掌握了吗?
程序设计语言

← 期末测试题答案-这些Redis核心知识,你都掌握了吗? 程序设计语言→

最近更新
01
Reactor 核心
02-24
02
前置条件
10-30
03
计算机网络
09-13
更多文章>
Theme by Vdoing | Copyright © 2019-2025 powered by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式