中级软考(软件工程师)第一章知识点——计算机系统知识
中级软考(软件工程师)第一章知识点——计算机系统知识
考点分析
- 分值占比:2-8分
- 题型:单选、案例分析
- 侧重点:概念

一、计算机系统基础知识
1、计算机系统硬件基本组成
📝 计算机的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备五大部件组成。
📝 运算器和控制器被集成在一起统称为中央处理单元(CPU)。
📝 存储器是计算机的记忆设备,分内部存储和外部存储,内部存储速度高,容量小,一般用于临时存放程序、数据及中间结果(内存),外部存储容量大、速度慢,可长期保存数据和程序(硬盘)。
📝输入/ 输出设备统称为外部设备(外设),输入设备用于输入数据和各种命令,而输出设备用于输出处理结果。

2. CPU的功能和组成
2.1 CPU的功能
- 程序控制
- 操作控制
- 时间控制
- 数据处理

2.2 CPU的组成
📝 主要组成:运算器、控制器、寄存器组、内部总线

(1)运算器

- 算术逻辑单元 (ALU)
- 负责处理数据,实现对数据的
算术运算和逻辑运算。
- 负责处理数据,实现对数据的
- 累加寄存器 (AC)
- 也称为累加器,是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术运算或逻辑运算时,
为ALU提供一个工作区。
- 也称为累加器,是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术运算或逻辑运算时,
- 数据缓冲寄存器 (DR)
- 在对内存储器进行读/写操作时,用DR
暂时存放由内存储器读/写的一条指令或一个数据字,将不同时间段内的读/写数据隔离。 - 主要作用是作为CPU和内存、外部设备之间数据传送的
中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数据寄存器。
- 在对内存储器进行读/写操作时,用DR
- 状态条件寄存器 (PSW)
- 由算数指令和逻辑指令运行或测试的结果建立的各种
条件码内容,主要分为状态标志和控制标志。
- 由算数指令和逻辑指令运行或测试的结果建立的各种
这里重点来理解一下什么是PSW:状态条件寄存器
📝 通过上面的描述可以简单总结一下,ALU相当于发动机,AC可以当做油箱,DR可以当做输油管,这三个都是纯工作性质的,光是闷头干活,而PSW就是仪表盘,它得记录各种信息,不然怎么控制系统呢。
- 条件码:在
计算过程中出现的一些伴生信息就是条件码,比如是不是0,是负数吗,进位了吗等等。 - 状态标志:表示一些特
殊的信号比如进位、零、符号、负数、溢出等标志。 - 控制标志:这是由操作系统或外界
主动输入设置的,也就是让你干什么,怎么干的信息,比如中断允许、方向、追踪(debug)标志,这个是用来控制CPU行为的主要标志。
| 类别 | 来源 | 代表性标志 | 核心作用 | 简单理解 |
|---|---|---|---|---|
| 状态标志 | 被动产生 (由运算结果决定) | 零标志(ZF)、进位标志(CF)、 溢出标志(OF)、符号标志(SF) | 反馈结果,供程序进行逻辑判断(跳转、分支)。 | 汽车仪表盘的指示灯 (油没了、超速了、水温高) |
| 控制标志 | 主动设置 (由指令设置) | 中断标志(IF)、方向标志(DF)、 追踪标志(TF) | 控制行为,管理 CPU 的运行状态和模式。 | 汽车的控制开关 (运动模式、雨刮器开关) |
基于上和扩展内容,运算器的主要功能如下:
- 算术运算(加减乘除)
- 逻辑运算(与或非异或)
- 移位运算(左移右移,辅助乘除)
- 数据传送(内部寄存器间的数据传输)
- 状态生成(生成条件码,反馈给PSW)
(2)控制器
📝 运算器只能完成计算,而控制器(大脑)则用来控制整个CPU的工作,决定了计算器运行过程的自动化。它不仅保证了程序的正常执行,而且还要保证不能出现异常。

(3)寄存器组
📝 分专用寄存器和通用寄存器,运算器和控制器中的寄存器是专用寄存器,是固定的作用,而通用寄存器一般由程序员指定,数量因CPU的不同有差异。
2.3 多核CPU
📝 核心又称为内核,是CPU最主要的组成部分。CPU所有的计算、接受/存储命令、处理数据都
由核心执行。各种CPU核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单
元和总线接口等逻辑单元都会有合理的布局。
📝 CPU主要厂商AMD和Intel的双核技术在物理结构上有很大的不同。AMD将两个内核做在一
个Die上,通过直接架构连接起来,集成度更高;Intel则是将放在不同核心上的两个内核封装在
一起。因此,有人将Intel的方案称为“双芯”,将AMD的方案称为“双核”。
3. 数据表示
📝 各种数值在计算机中表示的形式称为机器数,特点是采用二进制计数制,数的符号用0和1表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。
这里简单了解一下各种表示的基础,后面在详细展开,毕竟这是基础知识部分。
3.1. 机器字长
- 定义:指计算机进行一次整数运算所能处理的二进制数据的位数,用变量 n n n 表示。
- 结构:在有符号数的表示中,通常由 1位符号位(最高位)和 n − 1 n-1 n−1位数值位组成。
- 意义:字长越长,计算机能表示的数值范围越大,计算精度越高。
3.2. 各种码制的作用与区别
| 码制 | 规则简述 | 核心作用与优缺点 |
|---|---|---|
| 原码 | 符号位0正1负,数值位为绝对值。 | 作用:最符合人类直观思维。 缺点:存在两个0 ( +0, -0);加减运算硬件设计复杂。 |
| 反码 | 正数同原码;负数符号位不变,数值取反。 | 作用:历史遗留,主要作为原码求补码的中间过渡。 |
| 补码 | 正数同原码;负数在反码末位加1。 | 核心作用: 1. 只有一个0。 2. 统一加减法(将减法变为加法),简化CPU硬件。 3. 范围比原码多表示一个最小值。 |
| 移码 | 补码的符号位取反。 | 作用:常用于浮点数的阶码(指数部分),方便硬件直接比较数值大小。 |
3.3. 数值范围表 (设机器字长为 n)
注: 2 n − 1 2^{n-1} 2n−1 表示 2 的 n-1 次方
| 码制 | 定点整数范围 | 定点小数范围 | 备注 |
|---|---|---|---|
| 原码 | − ( 2 n − 1 − 1 ) ∼ + ( 2 n − 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)) | 也就是 ± ( 2 n − 1 − 1 ) \pm(2^{n-1}-1) ±(2n−1−1) |
| 反码 | − ( 2 n − 1 − 1 ) ∼ + ( 2 n − 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)) | 同原码 |
| 补码 | − 2 n − 1 ∼ + ( 2 n − 1 − 1 ) -2^{n-1} \sim +(2^{n-1}-1) −2n−1∼+(2n−1−1) | − 1 ∼ + ( 1 − 2 − ( n − 1 ) ) -1 \sim +(1-2^{-(n-1)}) −1∼+(1−2−(n−1)) | 重点:整数最小值能到 − 2 n − 1 -2^{n-1} −2n−1,小数最小值能到 -1 |
| 移码 | − 2 n − 1 ∼ + ( 2 n − 1 − 1 ) -2^{n-1} \sim +(2^{n-1}-1) −2n−1∼+(2n−1−1) | − 1 ∼ + ( 1 − 2 − ( n − 1 ) ) -1 \sim +(1-2^{-(n-1)}) −1∼+(1−2−(n−1)) | 范围同补码 |
4. 校验码
📝 在计算机系统运行时,各部位之间要进行数据交换,为了确保数据在传送过程中正确无误,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。


这里首先要知道一点,在硬件和信号传输过程中,从微观层面(bit)数据是非常容易受到损坏的。
- 电磁干扰:如果网线在微波炉或者其它强磁区域,电磁波可能会干扰信号量,把代表0的低电平瞬间变为高电平。
- 信号衰减:数据在光前或者电缆里面跑了很远,信号就会微弱,之后可能就读错了。
- 宇宙射线(虽然扯但存在):在高空飞行或者密度高的内存中,来自宇宙的高能例子还是会击中芯片导致晶体管状态变化(简称单粒子翻转)。
如果只是为了应付考试,那校验码这块儿目前的了解够了,下面我们将简单的聊聊校验码怎么实现的校验,解决问题的层面在哪里,这和数据签名有什么区别等等。
首先看一下几种校验码的核心:
- 奇偶校验码:这只是在数据末尾增加1位校验位,只是确保整个数据的奇偶个数对不对,而且只能检错不能纠错。
- 海明码:增加了多位校验码,而且分组校验的设计不光能校验数据位,还能校验传递的校验位对不对,具有纠错能力(因为计算机底层就是0和1,错了我翻转一下就好了)。
- 循环冗余校验码(CRC):就是模2除法,接收方和发送方都内置一个校验码(这是规定且都知道,类似篮球的三分线一样),即使多位出错也能一下校验出来。
思考:那校验位在传输过程中也有可能损坏吧,如果出现太多损坏怎么办呢?这种出现错误的概率会很大吗?
- 实际上
海明码通常只能纠正1位,如果错了2位可能就搞错了,但概率非常小。 - 而CRC能校验出很多位错误,即使真的出现了极端情况,那
概率相当相当小。 - 同时我们要知道,这种校验是发生在
物理层 / 链路层的,也就是在一个标准下,看数据包对不对就完事儿了,只是用来防止数据是否被“天灾”(电磁干扰等)损坏,就相当于你看快递外面有没有破洞一样,在应用和传输层才是我们熟悉的数字签名和哈希校验等等。
💡 记住了,这是发生在物理层的数据正确性校验,只看坏没坏,对不对是在传输和应用层来管的。
二、计算机体系结构
1. 计算机体系结构的发展
1964年,阿姆达尔(G.M.Amdahl)在介绍IBM360系统时指出,计算机体系结构是站在程序
员的角度所看到的计算机属性。
1982年,梅尔斯(G.J.Myers)在其所著的《计算机体系结构的进展》一书中定义了组成计算
机系统的若干层次。
1984年,拜尔(J.L.Baer)在一篇题为《计算机体系结构》的文章中给出了一个含义更加广泛
的定义:体系结构是由结构、组织、实现、性能四个基本方面组成的。
计算机体系结构、计算机组织、计算机实现 三者的关系。
融入一个知识点,为什么要从这三种方向进行解释,这从官方上来讲叫“
抽象分层”。
在针对一个复杂的系统构建时,并不是一个单一方向的人才就可以实现的,需要多种不同方向的人参与,而为了保证各方能正常协作,这种思维方式
屏蔽了复杂性和兼容性,只要是核心的体系不变,那就可以通用,这个大厦就不会崩塌。
概念设计 -> 逻辑设计 -> 物理实现,这种思维方式在很多复杂的领域都可以适用,比如建筑学、电影、公司管理等。

1.1 计算机体系结构分类
(1) 从宏观上按照处理机的数量分类

(2) 从微观上按照并行程度分类

1.2. 指令系统
(1)常见的指令集系统

重点是CISC 和 RISC
(2)指令集架构分类的5个关键维度
- 操作数的存储方式
- 即操作数从主存取出后保存在 CPU 内部的什么位置(如:通用寄存器、累加器、堆栈)。这是区别堆栈架构、累加器架构和寄存器架构的关键。
- 显式操作数的数量
- 在一条典型的指令中,有多少个显式命名的操作数。例如 ADD A, B 是双操作数,ADD A, B, C 是三操作数。
- 操作数的位置
- 指 ALU 指令的操作数能否直接来自主存,以及如何定位。例如,CISC 允许直接在内存中进行运算,而 RISC 通常要求先将数据 Load 到寄存器。
- 指令的操作
- 指令集中提供了哪些功能操作。这决定了硬件能直接支持哪些类型的计算(如移位、逻辑、浮点、多媒体扩展等)。
- 操作数的类型与大小
- 指令集支持的数据格式,包括整数、浮点数、字符等,以及它们的位宽(8位、16位、32位、64位等)。
(3) RISC 与 CISC 的利弊分析
CISC (复杂指令集计算机)
- 设计理念:用一条指令完成尽可能多的功能(
以硬件换软件)。 - 弊端(基于您提供的图片):
- 指令庞杂:指令集过大,利用率低(二八定律),设计困难。
- 速度受限:依赖微程序技术,执行一条复杂指令需要多个 CPU 周期。
- 编译困难:指令选择太多,编译器难以优化生成高效代码,且编译器本身变得冗长复杂。
- 研制周期长:强调完善的中断控制和复杂逻辑,导致设计周期变长。
- 成本高良率低:芯片设计复杂,出错率高,成品率低。
- 优点:
- 代码密度高(程序占用内存小)。
- 编程相对简单(汇编语言时代优势)。
- 向下兼容性好(x86 的护城河)。
RISC (精简指令集计算机)
- 设计理念:只保留最常用的简单指令,依靠组合指令完成复杂任务(
以软件换硬件)。 - 弊端:
- 代码密度低:实现同样的功能需要更多的指令,程序体积变大。
- 编译器压力大:需要极其智能的编译器来进行指令调度和优化。
- 优点(针对 CISC 的痛点):
- 速度快:指令长度固定,适合流水线技术,大部分指令可在一个时钟周期内完成。
- 硬件简单:控制器采用硬布线逻辑(Hardwired),不依赖微程

(4)RISC关键技术
- 重叠寄存器窗口技术:减少函数调用时参数传递的内存访问(通过寄存器重叠直接传参)。
- 优化编译技术:靠编译器来调整指令顺序,减少停顿。
- 超流水及超标量技术:这是提升并行度的核心。
- 硬布线为主,微程序为辅:大部分指令直接用硬件电路实现(快),极少数复杂的用微程序。
(5)指令的流水处理
- 三种控制方式:
- 顺序方式:一条做完做下一条(慢,设备利用率低)。
- 重叠方式:第K条指令执行时,第K+1条开始取指(类似流水线的雏形)。
- 流水方式:将指令执行过程细分为多个阶段(取指、分析、执行),多条指令并行推进。
- 流水线的分类(了解即可):
- 按级别:部件级、处理级、系统级。
- 按功能:单功能、多功能。
- 按连接:静态(同一时间只能做一种功能)、动态(可同时做不同功能)。
- 按反馈:线性(无反馈)、非线性(有反馈,用于递归)。
- 关键分类(RISC专用):
超流水线、超标量、超长指令字(VLIW)。
(6)三种高级流水线技术(RISC核心)
- 超流水线 (Super-pipelining):
- 关键词:细化周期。
- 原理:把流水线切得更细,时钟频率更高,一个时钟周期内分段处理。
- 本质:
时间换空间。
- 超标量 (Superscalar):
- 关键词:多条流水线。
- 原理:CPU内部有多条并行的流水线,一个时钟周期能发射多条指令。
- 本质:
空间换时间(需要更多硬件)。
- 超长指令字 (VLIW):
- 关键词:编译器打包。
- 原理:由编译器找出可以并行的指令,打包成一条超长的指令,同时发给多个处理单元。
(7)多机系统架构的区别
- 阵列处理机:
- 结构:
1个控制部件 (CU) + N个处理单元 (PU)。 - 原理:大家听一个指挥,同时做同样的动作(处理不同的数据)。
- 对应:SIMD(单指令流多数据流)。
- 结构:
- 并行处理机:
- 包括 SIMD 和 MIMD(多指令流多数据流)。
- SIMD 分为共享存储器和分布存储器两种。
- 多处理机:
- 结构:N个处理机(每个都有自己的CU和PU)。
- 原理:各干各的,但是共享同一个主存和外设。
- 对应:MIMD(紧耦合系统)。
(8)流水线执行时间计算
流水线执行时间 = 一条指令执行时间 + ( 指令条数 − 1 ) × 流水线周期 流水线执行时间=一条指令执行时间+(指令条数−1)×流水线周期 流水线执行时间=一条指令执行时间+(指令条数−1)×流水线周期
假设计算机执行一条指令需要分为 3 个步骤(也叫流水线段):
取指(取指令):耗时 2ns
分析(指令译码):耗时 2ns
执行(执行运算):耗时 1ns
现在,我们需要连续执行 100 条 这样的指令。
- 一条指令执行时间: 2ns+2ns+1ns=5ns
- 流水线周期: max(2ns,2ns,1ns)=2ns
- 最终答案:5+(100−1)×2 = 203
2. 存储系统
2.1 存储器的层次结构
📝 首先SIMD是“单指令多数据流”的计算机。
(1)具有共享存储器的SIMD结构
在这种结构中,系统中所有的处理单元(PE)通过一个互联网络(ICN)共享同一个存储器模块集合(M)。
- CU (Control Unit):
控制部件,向所有 PE 广播指令。所有 PE 同步执行相同的指令。 - PE (Processing Element):
处理单元,只负责运算,不持有私有的大容量数据存储,数据需要去共享存储器中取。 - ICN:
互连网络,作为 PE 和存储器 M 之间的桥梁,负责数据交换。 - M (Memory):
共享的存储器模块,所有 PE 都可以通过 ICN 访问这些存储模块。

(2)具有分布存储器的SIMD结构
在这种结构中,每个处理单元(PE)都有自己的专属局部存储器(PEM)。
- PEM (PE Memory):每个 PE 拥有
自己的私有存储空间,数据存取速度快,无需通过复杂的网络竞争。 - PE 与 PEM 的关系:PE 直接访问自己的 PEM,形成多个独立的“处理器-存储器”对。
- ICN 的作用:此时的互连网络主要用于
PE 之间的数据通信(消息传递),而不是用于存取内存。 - CU:依然负责向所有 PE 广播指令。

(3)存储器的层次结构
📝 这里介绍一下各种存储器的速度、容量、价格之间的关系,以及在CPU中的访问频率。
- CPU 内部通用寄存器:速度最快,容量极小,直接参与运算。
- Cache (高速缓存):位于 CPU 和内存之间,缓解速度差异。
- 主存储器 (RAM):存放当前运行的程序和数据。
- 联机磁盘存储器:硬盘/SSD,用于持久化存储。
- 脱机光盘、磁盘存储器:用于归档备份,速度最慢。

2.2 存储器的分类
- 按存储器的所处位置分:
- 内存
- 外存
- 按存储器的构成材料分:
- 磁存储器
- 半导体存储器
- 光存储器
- 按存储器的工作方式分:
- 读/写存储器
- 只读存储器
- 按访问方式分:
- 按地址访问的存储器
- 按内容访问的存储器
- 按寻址方式分:
- 随机存储器
- 顺序存储器
- 直接存储器

2.3 相联存储器
- 原理:
- 相联存储器不根据地址来定位数据,而是
根据数据的内容(部分或全部)来查找。 - 它可以并行地将输入数据与存储单元中的数据进行比较。
- 相联存储器不根据地址来定位数据,而是
- 作用:
- 主要用于需要快速查找的场合,最典型的应用是在 Cache(高速缓存) 的地址映射表(Tag比较)和 TLB(快表) 中。
- 运行方式:
- CPU 发出一个关键字(Key)。
- 存储器同时将这个 Key 与所有存储单元的内容进行比较。
- 如果匹配成功,则输出对应的标志或数据。
- 利弊:
- 利:检索速度极快(并行比较)。
- 弊:硬件电路复杂,成本极高,容量通常很小。
2.4 高速缓存(Cache)——重点
- 原理:
- 基于
局部性原理(时间局部性:刚访问过的指令可能再访问;空间局部性:刚访问过的数据附近的可能被访问)。 - 利用小容量、高速度的 SRAM 存储最活跃的数据副本。
- 基于
- 作用:
- 解决 CPU 速度快与主存(DRAM)速度慢之间的速度匹配问题。
- 运行方式:
- CPU 读数据 → 查 Cache → 命中(Hit)则直接读取。
- 未命中(Miss) → 访问主存 → 取出数据交给 CPU 并写入 Cache(以备后用)。
- 利弊:
- 利:大幅提升系统平均运行速度。
- 弊:增加了硬件成本和控制逻辑的复杂性(如一致性问题)。
平均存取时间计算(必考)
设 Cache 的命中率为 h h h,Cache 的存取周期为 t c t_c tc,主存的存取周期为 t m t_m tm。
系统平均存取周期 t a v g t_{avg} tavg 为:
t a v g = h × t c + ( 1 − h ) × t m t_{avg} = h \times t_c + (1 - h) \times t_m tavg=h×tc+(1−h)×tm
地址映射方式:CPU 访问的是主存地址,需要映射到 Cache 地址。
- 直接映射 (Direct Mapping):主存中的块只能映射到 Cache 中的
固定位置。- 特点:硬件简单,成本低;但冲突率最高,Cache 空间利用率低。
- 全相联映射 (Fully Associative Mapping):主存中的块可以映射到 Cache 中的
任意位置。- 特点:冲突率最低,利用率高;但比较电路极复杂,成本最高,只适合小容量 Cache。
- 组相联映射 (Set Associative Mapping):折中方案。将 Cache 分组,
组间直接映射,组内全相联。- 特点:综合了前两者的优点,是现代计算机的主流选择。

替换算法:当 Cache 满了,新数据要进来,旧数据通过什么规则被踢出?
- 随机算法 (RAND):随便找一个踢走。简单,但效率低,没利用局部性。
- 先进先出 (FIFO):踢走最早进入 Cache 的。容易实现,但可能踢走经常需要使用的重要数据(不符合局部性)。
- 近期最少使用 (LRU, Least Recently Used):考点。踢走最长时间没有被访问过的块。最符合局部性原理,命中率高,但硬件实现较难(需要记录访问历史)。

高速缓存性能分析
- 命中率是Cache的一个重要指标,但不是最主要的指标
- Cache命中率与Cache容量的关系是:容量越大,命中率越高。
多级Cache
- L1 Cache:集成在 CPU 内部,速度最快,容量最小,分为指令 Cache 和数据 Cache。
- L2/L3 Cache:容量逐步增大,速度稍慢,用于降低 CPU 与内存之间的速度差异。
2.5 虚拟存储器
- 原理:
- 将主存(物理内存)和辅存(磁盘)视为一个整体。
- 通过MMU(内存管理单元) 建立“逻辑地址”与“物理地址”的映射表(页表/段表)。
- 作用:
- 扩充内存容量:让 4GB 内存的电脑能运行需要 8GB 内存的游戏(通过 Swap/分页)。
- 隔离保护:每个进程有独立的地址空间,互不干扰。
- 运行方式:
- 程序访问逻辑地址 → 查页表
- 若页在内存中 → 转换为物理地址访问
- 若页不在内存中(缺页中断) → 操作系统从磁盘调入该页 → 更新页表 → 重试
- 利弊:
- 利:逻辑容量大,无需考虑物理内存大小,程序编写方便。
- 弊:地址转换和页面调度需要时间,如果频繁“抖动”(频繁换入换出),效率会急剧下降。
| 特性 | 页式存储 (Paging) | 段式存储 (Segmentation) | 段页式存储 |
|---|---|---|---|
| 划分依据 | 物理需求,大小固定(如4KB)。对用户不可见。 | 逻辑需求(如主程序段、子程序段、数据段)。大小不固定。 | 结合两者。先分段,段内再分页。 |
| 地址结构 | 一维(线性空间) | 二维(段号+段内地址) | 二维(实际上涉及三次访问) |
| 碎片情况 | 有内部碎片(最后一页没装满),无外部碎片。 | 有外部碎片(段与段之间空隙),无内部碎片。 | 内部碎片。 |
| 优缺点 | 内存利用率高,管理简单;但不利于程序共享和保护。 | 利于程序的模块化、共享和保护;但内存碎片多。 | 综合优点,但硬件复杂,访问效率稍低(需查段表+页表)。 |
2.6 外存储器
- 原理:
- 利用磁性材料(HDD)或半导体闪存(SSD)进行持久化存储,还有光盘,用于归档和分发。
- 机械硬盘涉及盘片旋转和磁头移动。
- 作用:
- 长期保存大量数据,断电不丢失。
- 运行方式(针对机械硬盘):
- 寻道:磁头移动到指定磁道(最耗时)。
- 旋转延迟:等待扇区转到磁头下。
- 传输:读写数据。
- 利弊:
- 利:容量大,成本低(HDD),永久保存。
- 弊:速度远慢于内存(尤其是随机读写)。
2.7 磁盘阵列技术(重点)
- 原理:
- 将多个物理磁盘组合成一个逻辑磁盘。
- 利用 条带化(Striping)提高速度,利用冗余(Redundancy) 提高安全性。
- 作用:
- 提高存储系统的可靠性(防数据丢失)和I/O性能。
| RAID 级别 | 名称/机制 | 详细说明 (结合图片与考点) | 优缺点总结 | 软考关键点 |
|---|---|---|---|---|
| RAID 0 | 条带化 (Striping) | 不具备容错。数据分块并行写入 n 个磁盘。 | 优:极高的读写速度 (单盘的 n 倍)。缺:无可靠性,坏盘即全毁。 | MTBF = 1/n (可靠性最低) 利用率 100% |
| RAID 1 | 镜像 (Mirroring) | 两个盘互为备份,写入时同时写入两盘。 | 优:可靠性最高。 缺:利用率最低 (50%),成本高。 | 利用率 50% 读快写慢 |
| RAID 2 | 海明码校验 | 采用海明码进行错误检测和纠正。数据分散位存取。 | 缺:需要多个校验盘,开销大,且海明码计算复杂。 | 现代已少用,主要考海明码概念。 |
| RAID 3 | 专用奇偶校验 (位/字节) | 数据分块(字节级),只有一个专用校验盘。 | 优:有效容量高 (n−1)。缺:每次写都要访问校验盘,校验盘成瓶颈。 | 减少了校验盘个数,提高有效容量。 |
| RAID 4 | 专用奇偶校验 (块) | 数据分块(块级),独立读写,只有一个专用校验盘。 | 缺:同样存在校验盘热点(瓶颈)问题。 | 类似于RAID 3,但按块存取。 |
| RAID 5 | 分布式奇偶校验 (重点) | 不设专用校验盘,校验信息分散在所有盘上。 | 优:解决了 RAID 3/4 的校验盘瓶颈问题,读写并行能力强。 缺:重构数据时较慢。 | 无专用校验盘 利用率 (n−1)/n允许坏 1 块盘 |
| RAID 6 | 双重校验 | 采用两级数据冗余,计算两个独立的校验数据(P+Q)。 | 优:允许同时坏 2 块盘,数据极其安全。 缺:写入时计算量大,写性能差。 | 两级冗余 利用率 (n−2)/n |
| RAID 10 | 先镜像后条带 | 结合 RAID 1 和 RAID 0(先做镜像 RAID 1,再做条带 RAID 0)。 | 优:兼顾速度和容错。 缺:成本高,利用率 50%。 | 实际上是 RAID 1+0 |
- 要速度,不在乎数据丢:RAID 0
- 要最高安全性,不在乎钱:RAID 1
- 要性价比(既有容错又有利用率):RAID 5 (最常选的答案)
- 坏了2块盘还能救:RAID 6
3. 输入 / 输出技术
3.1 微型计算机中常用的内存与接口的编址方法
独立编址
- 核心概念:
- 内存和接口是两个完全独立的世界。
- CPU 拥有两套独立的地址空间:一套专门给内存(如 RAM),一套专门给接口(I/O 端口)。
- 例如:地址 0x0001 在内存空间中代表一个存储单元,而在接口空间中可能代表鼠标的数据端口。它们互不冲突,因为访问它们的指令不同。
- 特点:
- 隔离性:内存和接口互不干扰,物理上和逻辑上都是隔离开的。
- 缺点:
- 指令贫乏:CPU 必须设计专门的 I/O 指令(如 x86 汇编中的 IN 和 OUT 指令)来访问接口。
- 功能太弱:由于只有专门的几条指令能操作接口,通常只能进行简单的数据输入输出,无法像操作内存那样直接进行复杂的算术运算或逻辑运算(不能直接对端口做加法、移位等)。
统一编址
- 核心概念:
- 内存和接口共用同一个地址空间。
- 系统把内存的一块地址区域“挖”出来,分配给接口设备使用。
- 例如:系统的地址空间是 01000。也许 0900 分配给 RAM(内存),901~1000 分配给打印机、显卡等接口。CPU 访问地址 901 时,它以为自己在写内存,实际上是在给打印机发数据。
- 优点:
- 指令丰富:原则上,所有用于操作内存的指令都可以用来操作接口。你可以用 MOV(传送)、ADD(加法)、AND(逻辑与)等指令直接操作硬件接口。
- 功能强大:大大增强了对接口的操作能力(图片中提到的“操作工程”应理解为操作能力/功能)。
- 编程统一:在指令层面上,程序员不需要区分“这是内存指令”还是“这是接口指令”,简化了指令集设计。
- 缺点:
- 占用内存空间:地址空间被劈成两半,一部分给内存,一部分给接口。这导致内存地址不连续(内存容量会有所减少,或者地址出现空洞)。
- 代码维护困难:图片中提到“维护程序时需要根据参数定义表加以辨认”。因为代码里的 MOV [0xFFFF], A 看起来像是在写内存,但实际上可能是在关闭硬盘马达。如果不看硬件手册(参数定义表),程序员很难区分这行代码到底是在存数据还是在控制硬件,容易造成误操作。
| 特性 | 独立编址 (I/O Mapped) | 统一编址 (Memory Mapped) |
|---|---|---|
| 地址空间 | 两个独立空间 (内存空间, I/O空间) | 一个公共空间 (内存+I/O共用) |
| 指令系统 | 需要专用的 I/O 指令 (如 IN/OUT) | 不需要专用指令,与访存指令相同 |
| 内存容量 | 不占用内存空间 | 占用内存空间,导致内存地址不连续 |
| 指令功能 | 弱 (仅限数据传输) | 强 (可进行算术逻辑运算) |
| 译码电路 | 较简单 | 较复杂 (需要区分该地址是内存还是I/O) |
| 典型代表 | Intel x86 体系结构 (同时也支持统一编址) | ARM 体系结构, MIPS, RISC-V |
3.2 I / O 的四种控制方式
(1)直接程序控制
定义: 外设数据的输入和输出过程完全是CPU执行程序控制的,细分为以下两种
无条件传送
-
定义:在此条件下,外设总是准备好的,它可以无条件的随时接收CPU发来的输出数据,也能够无条件的向CPU提供需要的输入数据。
-
适用场景:简单的机械开关、LED指示灯、继电器等。
程序查询方式(又称轮询方式)
- 运行流程
- 查询:CPU读取外设的状态寄存器
- 判断:CPU检查状态位判断是忙是闲
- 循环:如果准备好即可开始,相反则循环查询
- 缺点
- 降低CPU效率
- 对突发事件不能及时响应,必须要等到之前的处理完成
(2)中断方式
📝 上面的程序控制IO效率很低,所以出现了中断方式,当IO准备好之后给CPU一个信号,CPU停下现在的事情去处理IO,之后再返回处理之前的事情。
- 并行工作:CPU 在执行主程序,外设在自行准备数据,互不干扰。
- 中断请求:当 I/O 设备准备好后,向 CPU 发出一个信号(中断请求)。
- 中断响应与处理:
- CPU 暂停当前正在执行的程序。
- 保护现场:把当前的寄存器状态、程序计数器(PC)的值压入堆栈保存起来(为了等会儿能回来接着干)。
- 转入中断服务程序:CPU 跳转到专门处理该 I/O 设备的程序代码去执行数据传输。
- 中断返回:
- 数据传输完成后,恢复现场(把刚才保存的状态弹出来)。
- CPU 返回到刚才被打断的地方,继续执行原来的程序。
中断处理方法:5种
- 多中断信号线法:每个设备都拉一根线连到 CPU。简单粗暴,但线太多,硬件引脚不够用。
- 中断软件查询法:CPU 收到中断后,运行一段程序,挨个问设备:“是你吗?是你吗?”。硬件省事,但软件费时,慢。
- 菊花链法 (Daisy Chain):设备像菊花链一样串联在一起。信号顺着链传,位置靠前的设备优先级高。优点是硬件简单,缺点是若中间断了,后面全瘫痪。
- 总线仲裁法:设备通过总线发请求,由专门的仲裁电路来判断谁获得控制权。
- 中断向量表法 (重点):
- 每个设备都有一个编号(中断向量号)。
- 内存里有一张表(中断向量表),存着所有中断服务程序的入口地址。
- 设备发请求时带上自己的编号,CPU 查表直接跳转。这是现代计算机最常用的方式,速度最快。
中断优先级控制
情况一:同时请求(竞争)
- 场景:不同优先级的多个中断源同时提出请求。
- 解决:
优胜劣汰。CPU 优先响应优先级最高的那个中断源。- 例子:鼠标动了(低优先级)和电源故障报警(高优先级)同时发生,CPU 肯定先处理电源故障,不然电脑都要烧了。
情况二:中断嵌套(插队)
- 场景:CPU 正在处理一个中断(比如打印机),此时来了一个优先级更高的中断(比如网络数据包到达)。
- 解决:中断嵌套。
- CPU 暂停当前的打印机中断服务。
- 保护当前打印机中断的现场。
- 转去处理网络数据包中断(高优先级)。
- 处理完网络数据后,回到打印机中断继续处理。
- 处理完打印机后,回到最初的主程序。
- 注意:如果新来的中断优先级低于或等于当前正在处理的中断,CPU 是不会理会的,必须等当前处理完。
(3)DMA直接存储器方式
这种方式不需要CPU的多次参与,只需要在开始和结束的时候进行控制权的移交,数据是通过总线在内存和IO之间传输的。
- 第一阶段:
预处理,CPU初始化数据的源地址和目的地址以及一些其它的信息,比如传输大小。 - 第二阶段:
申请总线,外设向DMA发送请求,DMA向CPU申请数据总线的控制权,CPU向DMA移交控制权,之后数据就可以直接传输了。 - 第三阶段:
数据传输,此时DMA获得了总线的控制权,在数据传输结束后向CPU发送结束信号,移交总线的控制权。

⚠️ 注意这种方式传输数据都是按照block为单位,一块一块,速度很快。
(4)输入输出处理机(IOP)
- 字节多路:适合
慢速设备(键盘),以字节为单位轮转。 - 选择传送:适合
高速设备(硬盘),一旦选中一个硬盘,通道就会被独占,知道整个文件传完。 - 数组多路通道:混合型传输方式,也就是
字节多路+选择传送,总结就是以数据块为单位进行分时传送的通道控制方式。
| 通道类型 | 关键特征 | 适用设备 | 传输单位 |
|---|---|---|---|
| 字节多路通道 | 分时轮转 | 低速 (键盘/打印机) | 字节 |
| 选择通道 | 独占 | 高速 (单台磁盘) | 整个文件/数据流 |
| 数组多路通道 | 分时 + 高速 | 多台高速 (磁盘阵列) | 数据块 |
(5)总结

4. 总线结构

三、计算机安全
3.1 计算机安全概述
计算机安全主要分为以下两种
- 系统资源:软件、硬件、配套设置、文件资料以及相关的服务系统和业务工作人员
- 信息资源:计算机中存储、处理、传输的各种信息
(1)信息安全的基本要素
- 机密性: 确保信息不暴露给未授权的实体或者进程。
- 完整性: 只有被允许的人才能修改数据,并能判断数据是否已经被篡改。
- 可用性: 得到授权的实体在需要时可访问数据。
- 可控性: 可控制授权范围内的信息流向及行为方式。
- 可审查性: 对出现的安全问题提供调查的依据和手段。
(2)计算机的安全等级
技术安全性管理安全性政策法律安全性
参考以下准则:
(1)美国国防部和国家标准局推出的《可信计算机系统评估准则》(TCSEC)。
(2)加拿大的《可信计算机产品评估准则》(CTCPEC)。
(3)美国制定的《联邦(最低安全要求)评估准则》(FC)。
(4)欧洲英、法、德、荷四国国防部门信息安全机构联合制定的《信息技术安全评估准则》
(ITSEC)。
(5)美国制定的《信息技术安全通用评估准则》(CC)。
(3)安全威胁
| 威胁 | 说明 |
|---|---|
| 授权侵犯 | 为某一特权使用一个系统,却将该系统用作其他未授权的目的 |
| 拒绝服务 | 对信息或其他资源的合法访问被无条件地拒绝,或者推迟与时间密切相关的操作 |
| 窃听 | 信息从被监视的通信过程中泄露出去 |
| 信息泄露 | 信息被泄露或暴露给某个未授权的实体 |
| 截获/修改 | 某一通信数据项在传输过程中被改变、删除或替代 |
| 假冒 | 一个实体(人或系统)假装成另一个实体 |
| 否认 | 参与某次通信交换的一方否认曾发生过此次交换 |
| 非法使用 | 资源被某个未授权的人或未授权的方式使用 |
| 人员疏忽 | 一个授权的人为了金钱或利益,或者由于粗心将信息泄露给未授权的人 |
| 完整性破坏 | 通过对数据进行未授权的创建、修改或破坏,使数据的一致性受到损坏 |
| 媒体清理 | 从废弃的或打印过的媒体中获得信息 |
| 物理入侵 | 一个人侵者通过物理控制而获得对系统的访问 |
| 资源耗尽 | 某一资源(如访问端口)被故意超负荷使用,导致其他用户的服务被中断 |
3.2 加密技术和认证技术
(1)加密技术
对称加密

⚠️ 重点注意AES(现行主流)和DES(过时算法)
非对称加密


(2)PKI和数字签名
PKI
📝 PKI 是一个提供安全基础服务的平台,其核心构成包括以下五个部分:
- 认证机构 (CA, Certificate Authority):这是 PKI 的核心(类似公安局)。负责接收申请,并签发数字证书。它是所有人都信任的第三方。
- 数字证书库:一个公开的目录或数据库,用于存储已签发的数字证书和公钥,供用户查询。
- 密钥备份及恢复系统:针对解密密钥(注意:通常用于签名的私钥是不能备份的,但用于解密的密钥为了防止丢失导致数据无法找回,需要备份机制)。如果用户弄丢了密钥,可以通过此系统恢复。
- 证书作废系统 (CRL/OCSP):证书也是有有效期的,或者因为私钥泄露需要提前作废。PKI 必须提供一种机制(如证书吊销列表 CRL)来告知公众哪些证书已经失效了。
- 应用接口 (API):PKI 必须提供标准的接口,让各种应用程序(如浏览器、Outlook、OA系统)能够方便地使用加密和签名服务。

数字签名与数字加密
(1) 数字签名过程
- 目的:
确认发送者身份,确认信息未被修改。 - 发送方操作:
- 对原文进行 Hash 运算,生成信息摘要。
- 用自己的私钥对摘要进行加密,生成数字签名。
- 将原文和数字签名一起发给接收方。
- 接收方操作:
- 用发送方的公钥解密签名,得到摘要 A。
- 对收到的原文进行同样的 Hash 运算,得到摘要 B。
- 比对:如果 A == B,说明信息未被篡改,且确实是发送方发的。
(2) 数字加密(数字信封)过程
- 目的:
传送机密数据(混合加密体制)。 - 发送方操作:
- 随机生成一个对称密钥(会话密钥)。
- 用这个对称密钥加密原文(因为对称加密快)。
- 用接收方的公钥加密这个“对称密钥”(形成数字信封)。
- 发送:密文 + 数字信封。
- 接收方操作:
- 用自己的私钥解密数字信封,得到对称密钥。
- 用对称密钥解密密文,得到原文。

下一章:程序设计语言基础知识
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)