[toc]
软件设计师笔记01_计算机系统知识概述
下面的内容参考自《软件设计师教程(第5版)》 这本书的第1章 计算机系统知识概述。主要介绍计算机系统的基本组成和工作原理。
架构图如下所示

计算机基础知识
计算机系统硬件基本组成
计算机的基本硬件系统主要由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
- 运算器和控制器集成在一起统称为中央处理单元(CPU)。负责数据的加工处理,能完成各种算术,逻辑运算以及控制功能。
- 存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。
- 内部存储器(速度高,容量小):临时存放程序、数据及中间结果。
- 外部存储器(速度慢,容量大):长期保存程序和数据。
- 输入设备和输出设备合称为外部设备(简称外设)
- 输入设备用于输入原始数据及各种命令
- 输出设备则用于输出计算机的运行处理结果。
中央处理单元CPU
中央处理单元(CPU)是 计算机系统的核心部件,它负责获取程序指令,对指令进行译码并加以执行。
CPU的功能
- 程序控制。CPU 通过执行指令来控制程序的执行顺序,这是 CPU 的重要功能。
- 操作控制。一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
- 时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。
- 数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是 CPU 最根本的任务。
除此之外,CPU 还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。
CPU的组成
CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成。如下图所示

运算器
运算器是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。并且运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。
运算器有如下两个主要功能
- 执行所有的算术运算,例如加、减、乘、除等基本运算及附加运算。
- 执行所有的逻辑运算并进行逻辑测试,例如与、或、非、零值测试或两个值的比较等。
运算器的组成
运算器由算术逻辑单元(Arithmetic andLogic Unit,ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器等组成。

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

控制器
控制器的功能
运算器只能完成运算,而控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。
控制器不仅要保证程序的正确执行,而且要能够处理异常事件。
控制器的组成
控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。其中
- 指令控制逻辑:用于完成取指令、分析指令和执行指令的操作。其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。
- 指令寄存器(IR)。当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。
- 程序计数器(PC)(又称为指令计数器)。PC 具有寄存信息和计数两种功能。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入 PC,该地址在程序加载到内存时确定,因此 PC 的内容即是程序第一条指令的地址。执行指令时,CPU 自动修改 PC 的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对 PC 加 1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。
- 地址寄存器(AR)。AR 保存当前 CPU 所访问的内存单元的地址。由于内存和 CPU 存在着操作速度上的差异,所以需要使用 AR 保持地址信息,直到内存的读 / 写操作完成为止。
- 指令译码器(ID)。指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。
- 时序控制逻辑:要为每条指令按时间顺序提供应有的控制信号。
- 总线控制逻辑:是为多个功能部件服务的信息通路的控制电路。
- 中断控制逻辑:用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给 CPU 处理。
寄存器组
寄存器组可分为专用寄存器和通用寄存器。
通用寄存器用途广泛并可由程序员规定其用途,其数目因处理器不同有所差异。
运算器和控制器中的寄存器是专用寄存器。
计算机基本单位
计算机基本单位如下
- 位(又称比特, 用bit或b符号表示)
- 字节(用byte或B符号表示) 一个字节等于8比特 (1B = 8b)
- 千字节(KB) 一个千字节等于1024个字节 (1KB = 1024B = 2^10^ B)
- 兆字节(MB) 一个兆字节等于1024个千字节 (1MB = 1024KB = 2^10^ KB)
- 吉字节(GB) 一个吉字节等于1024个兆字节 (1GB = 1024MB = 2^10^ MB)
- 太字节(TB) 一个太字节等于1024个吉字节 (1TB = 1024GB = 2^10^ GB)
计算机中最小的数据单位是 位(b)
计算机中最小的存储单位是 字节(B)
数据表示
非十进制数转换为十进制数
在软考中,非十进制数(如二进制、八进制、十六进制)转换为十进制数的方法是按位权展开相加法。
二进制转十进制
- 方法: 从右往左,将二进制数每一位的值(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 除基取余:将十进制整数不断除以目标进制的基数(二进制为 2,八进制为 8,十六进制为 16),记录每次的余数。
- 步骤2 逆序排列余数:直到商为 0,将余数从最后一次到第一次依次排列,即为转换结果。

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

十进制数(包含整数和小数)转非十进制
- 整数部分:用除基取余法转换。
- 小数部分:用乘基取整法转换。
- 合并结果:将整数部分和小数部分用小数点连接。

各个进制的加减法
在进行不同进制(如二进制、八进制、十进制、十六进制等)的加减法时,核心原理与十进制运算类似,但需注意"逢基数进一"(加法)和"借一当基数"(减法)的规则。
加法规则
- 从右向左逐位相加(低位到高位)
- 若本位数字之和 小于基数:直接写结果
- 若本位数字之和 大于等于基数:则向高位进1位,然后再继续计算。
减法规则
- 从右向左逐位相减(低位到高位)
- 若被减数本位数字 大于等于 减数本位数字:直接相减
- 若被减数本位数字 小于 减数本位数字。则需要从高位借1位(高位减1),然后再继续计算。
十进制(基数 10)
加法示例:计算 1011 + 110
1 0 1 1
+ 1 1 0
----------
1 1 2 1 (步骤:从右向左逐位相加,遇10进1)二进制(基数 2)
加法示例:计算 1011 + 110
1 0 1 1
+ 1 1 0
----------
1 0 0 0 1 (步骤:从右向左逐位相加,遇2进1)八进制(基数是8)
加法示例:计算 35 + 27
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
A 3
+ 2 F
------
D 2 (步骤:3+15=18,18=1×16+2→本位写2,进位1;10+2+1=13→本位写D)原码,反码,补码,移码
存储在计算机中的各个数据称为机器数,其特点是采用二进制计数制,数的符号用 0 和 1表示,小数点则隐含,表示不占位置。
符号位
机器数有无符号数和有符号数之分。
- 对于无符号数,是指在机器数中没有符号位。无符号数都表示正数,没有负数表示。若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高位之前,则是纯小数。例如一串二进制机器数1101,按无符号数的编码方式,其代表十进制数13。
- 对于有符号数,机器数的最高位是指表示正、负的符号位,其中0为正数,1为负数。其余位则表示数值。例如1101,按有符号数的编码方式,其代表十进制数-3。0101其代表十进制数+3。
为了便于运算,带符号数的机器数可采用原码、反码和补码等不同的编码方法。这些编码方法称为码制。
原码表示法
在原码表示法中,机器数是有符号数,最高位表示正负符号位。其中0为正数,1为负数。
原码主要用于早期计算机中,现在已经淘汰了。

反码表示法
在反码表示法中,机器数是有符号数,最高位表示正负符号位。其中0为正数,1为负数。
其中正数的反码与原码相同,负数的反码则是其绝对值按位取反。

补码表示法
在补码表示法中,机器数是有符号数,最高位表示正负符号位。其中0为正数,1为负数。
其中正数的补码与其原码相同,负数的的补码则等于其反码的末尾加1。

移码表示法
在移码表示法中,机器数是有符号数,最高位表示正负符号位。其中0为正数,1为负数。
只要将补码的符号位取反便可获得相应的移码。

总结
补码的优势:是计算机中最核心的码制,因减法可转化为 “加负数的补码”(如 a - b = a + (-b)补)。从而无需单独设计减法电路,简化硬件实现。
浮点数
浮点数是指小数点位置不固定的数,它能表示更大范围的数。
浮点表示法
在十进制中,一个数可以写成多种表示形式。例如 83.125可写成10^3^ x 0.083125 。同样,一个二进制数也可以写成多种表示形式。例如,二进制数 1011.10101 可以写成 2^4^ x 0.101110101 等。
由此可知,一个二进制数 N 可以表示为更一般的形式 N=2^E^ X F,其中E称为阶码,F称为尾数。用阶码和尾数表示的数称为浮点数,这种表示数的方法称为浮点表示法。

规格化浮点数
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。
为了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数。规格化就是将尾数的绝对值限定在区间[0.5,1]。当尾数用补码表示时,需要注意如下问题。
- 例如,二进制数 1011.10101 可以写成 2^4^ x 0.101110101 ,其中 2^4^ 是阶码,0.101110101 是尾数。
规格化浮点数的数值范围如下
如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括1位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下。

校验码
在计算机系统运行时,各个设备之间要进行数据交换,为了确保数据在传送过程中正确无误,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。
其基本思想是把数据可能出现的编码分为两类:合法编码和错误编码。合法编码用于传送数据,错误编码是不允许在数据中出现的编码。合理地设计错误编码以及编码规则,使得数据在传送中出现某种错误时会变成错误编码,这样就可以检测出接收到的数据是否有错。
下面简要介绍常用的 3 种校验码:奇偶校验码、海明码和循环余校验码。

奇偶校验码
奇偶校验码可以检错,但不能纠错。码距为2
奇偶校验码是一种简单有效的校验方法。其分为奇校验和偶校验。通过在编码中增加一位校验位,使编码中 1 的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。
对于奇校验,可检测代码中奇数位出错的编码,但不能发现偶数位出错情况。当合法编码中的奇数位发生错误,即编码中的 1 变成 0 或 0 变成 1 时,该编码中 1 的个数的奇偶性就发生变化,从而可发现错误。
奇偶校验码可以检错,但不能纠错。码距为2
海明码
海明码通过在数据位n之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
假设数据位是n位,校验位是k位,则n和k必须满足:2^k^≥n+k+1。
海明码可以检错也可以纠错。
循环冗余校验码CRC

循环冗余校验码由两部分组成,左边为信息码(数据),右边为校验码,广泛用于数据通讯领域。
若信息码占k位,则校验码就占n-k位。其中,n为CRC码的字长。校验码是由信息码产生的,校验码位数越多,该代码的校验能力就越强。
在求 循环冗余校验码CRC 时,采用的是模2运算。模2加减运算的规则是按位运算,不发生借位和进位。
CRC循环冗余校验码方法可以检错,但不能纠错。
区别
三种校验码的区别

寻址方式
- 立即寻址:操作数在指令中的寻址方式。
- 寄存器寻址:操作数在寄存器中的寻址方式。
- 直接寻址:操作数的地址在指令中的寻址方式。
- 寄存器间接寻址:操作数的地址在寄存器中的寻址方式。
- 间接寻址:操作数的地址的地址在指令中的寻址方式。
存储器中各个寻址方式的速度对比:
立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
计算机体系结构
计算机体系结构的发展
计算机体系结构是由结构、组织、实现、性能四个基本方面组成的。其中结构指计算机系统各种硬件的互连;组织指各种部件的动态联系与管理;实现指各模块设计的组装完成;性能指计算机系统的行为表现。
计算机体系结构,计算机组织和计算机实现,三者之间的关系如图所示。

计算机体系结构分类
从宏观上按处理机的数量分类。分为单处理系统,并行处理与多处理系统和分布式处理系统。
- 单处理系统:利用一个处理单元与其他外部设备结合起来。
- 并行处理与多处理系统:将两个以上的处理机互连起来,彼此进行通信协调的计算机系统。
- 分布式处理系统:指物理上远距离而松耦合的多计算机系统。
从微观上按并行程度分类,有Flynn分类法,冯泽云分类法,Handler分类法,Kuck分类法。
- Flynn分类法:按指令流和数据流的多少进行分类。
- 冯泽云分类法:按并行度对各种计算机系统进行结构分类。
- Handle分类法:在系统中三个层次上按并行程度及流水线处理程度分类。
- Kuck分类法:用指令流和执行流及其多重性来描述计算及系统控制结构的特征。
指令系统
CISC与RISC
CISC 全称为Complex Instruction Set Computing 复杂指令集。
CISC的指令种类多,指令复杂度高,寻址方式复杂,通用寄存器数量一般,不支持流水线技术。采用微程序控制技术实现译码。
RISC 全称为Reduced Instruction Set Computer,精简指令集。
RISC的指令种类少,指令复杂度低,寻址方式固定,通用寄存器数量大量,支持流水线技术。采用硬布线控制逻辑来实现译码。
CISC与RISC的区别

流水线
流水线是为了模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。
流水线把重复的顺序处理过程分解为若干子过程,让每个子过程能在专用的独立模块上有效地并发工作。如下图所示。

流水线公式
流水线执行指令时间的公式 T = NT + (K-1)t
- NT是第一条指令执行的完整时间。
- t 是流水线中耗时最长的哪个部分的时间。
- k 是流水线中一共需要执行的指令数。
流水线的吞吐率公式 = 总的指令数 / (流水线执行指令时间) = 总的指令数 / ( NT + (K-1)t )
存储系统
存储器
存储器的层次结构
计算机系统中可能包括各种存储器,如 CPU 内部的通用寄存器组、CPU 内的 Cache(高速缓存)、CPU 外部的 Cache、主板上的主存储器、主板外的联机(在线)磁盘存储器等。
不同的存储器通过适当的硬件、软件有机地组合在一起形成计算机的存储体系结构。如下图所示

存储器的分类

- 按储存器所处位置:内存,外存。
- 内存:又名主存,存放运行所需要的数据和程序。例如CPU内部的寄存器,缓存Cache等。
- 外存:又名辅存,存放不参与运行的数据。在需要的适合会调入内存中。例如磁盘,磁带等
- 主存与辅存的交互由硬件和软件共同实现的。
- 按访问方式:按地址访问的存储器、按内容访问的存储器。
- 相联存储器 是一种按内容访问的存储器。
- 按存储器的构成材料:磁存储器,半导体存储器,光存储器。
- 按存储器的工作方式:读/写存储器 , 只读存储器等。
- 读写存储器(RAM):既能读取数据也能写入数据。
- 固定只读存储器(ROM):内容只能读出,不能改变。
- 可编程的只读存储器(PROM):其中的内容可以由用户一次性地写入,写入后不能改变。
- 闪速存储器(FM):又名闪存。
- 按寻址方式:随机存储器,顺序存储器,直接存储器等。
- 随机存储器(Random Access Memory,RAM)读取和写入数据的时间是相同的。
- 顺序存储器(Sequent Access Memory,SAM)读取和写入数据,与存储位置相关。
- 直接存储器 (DAM) 介于随机存储器和顺序存储器之间。
高速缓存(Cache 存储器)
在计算机的存储系统体系中,Cache是(除寄存器以外)访问速度最快的,用来存放主存的部分拷贝(副本)数据。主要解决CPU与主存之间速度容量不匹配问题。
高速缓存(Cache)的特点
在计算机中Cache的访问速度是最快的层次(若有寄存器,则寄存器最快)
- 高速缓存(Cache)位于 CPU 与主存之间;其分为 控制部分,存储部分。
- 高速缓存(Cache)与 主存的交互完全由硬件自动完成的。
- 高速缓存(Cache)的容量一般在几千字节到几兆字节之间;速度一般比主存快 5~10 倍,由快速半导体存储器构成;
- 高速缓存(Cache)的内容是主存的部分副本,对程序员来说是透明的。
高速缓存的工作原理
- 先判断 CPU 要访问的信息是否在 Cache 存储器中,若在即为命中,若不在则没有命中。
- 命中时 CPU 直接对 Cache存储器进行寻址;
- 未命中时,CPU 则直接到主存中读取要访问的信息,并且把读取的主存信息放到 Cache 存储器中。

高速缓存 Cache 的命中率
高速缓存的命中率是指在所有对主存的访问中,成功地命中 Cache 存储器的次数占总访问次数的比例。
Cache命中率与Cache容量的关系是 Cache 容量越大,Cache 命中率就越高。

高速缓存的各种地址映像方法
由于高速缓存Cache用来存放主存的部分拷贝(副本)信息。因此有多种地址映像方法。
注意:主存和高速缓存Cache之间的地址映射是由硬件直接完成的。
高速缓存中的地址映像方法如下
- 直接映像:是指主存的块与Cache块的对应关系是一一对应的。优点是硬件电路设计简单,缺点是Cache块冲突率高。
- 全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好。缺点是访问速度慢、硬件电路设计成本太高。
- 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式。
发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射。
三级缓存
现代的CPU对Cache进行了分级处理。即一级Cache(L1 Cache)、二级Cache(L2 Cache)、三级Cache(L3 Cache)。
其结构如图所示。

- L1 Cache 是一级缓存。它是 CPU 内部的缓存,容量通常在几十字节到几百字节之间。
- L2 Cache 是二级缓存。它是 CPU 外部的缓存,容量通常在几兆字节到几十兆字节之间。
- L3 Cache 是三级缓存。它是主板上的缓存,容量通常在几十兆字节到几百兆字节之间。
虚拟存储器
虚拟存储(Virtual Memory)技术是把很大的程序(数据)分成许多较小的块,全部存储在辅存中。运行时把要用到的程序(数据)块先调入主存,并且把马上就要用到的程序块从主存调入高速缓存。这样就可以一边运行程序,一边进行所需程序(数据)块的调进或调出。
虚拟存储器管理方式的分类。 
外存储器
外存储器用来存放暂时不用的程序和数据,并且以文件的形式存储。CPU 不能直接访问外存中的程序和数据,只有将其以文件为单位调入主存才可访问。
常见的两种外存储器如图所示 
磁盘阵列技术 RAID
磁盘阵列是由多台磁盘存储器组成的一个快速、大容量、高可靠的外存子系统,常见的磁盘阵列称为廉价冗余磁盘阵列(RAID)。
常见的 RAID 如图所示。 

中断
计算机在执行程序过程中,当遇到急需处理的事件时,暂停当前正在运行的程序转去执行有关服务程序,处理完后自动返回源程序,这个过程称为中断。
中断是一种非常重要的技术,在各个地方都要用到这种技术。为了提高响应中断的速度,通常把所有中断服务程序的入口地址(或称为中断向量)汇集为中断向量表。
中断处理过程如图所示 
输入/输出技术
输入/输出(I/O)控制方式有三种,分别是程序控制方式、程序中断方式和直接存储器方式(DMA)。
程序控制方式
程序控制方式:分为无条件传送和程序查询方式。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
程序控制方式是指 CPU 主动通过执行程序来查询外设的状态,判断外设是否准备好接收数据或准备好了向 CPU 输入的数据。从而为外设设备提供输入/输出服务。
程序控制方式有如下两大缺点。
- 降低了CPU的效率。在这种工作方式下,CPU 不做别的事,只是不停地对外设的状态进行查询。在实际的工程应用中,对于那些慢速的外设,在不影响外设工作的情况下,CPU应可以执行其他任务。
- 对外部的突发事件无法做出实时响应。
中断方式
与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
利用中断方式完成数据的输入/输出过程为:
- 当 IO 系统与外设交换数据时,CPU 无须等待也不必去査询 IO 的状态,而可以抽身出来处理其他任务。
- 当 IO 系统准备好以后,则发出中断请求信号通知 CPU,CPU 接到中断请求信号后,保存正在执行程序的现场,转入 IO 中断服务程序的执行,完成与 IO 系统的数据交换,然后再返回被打断的程序继续执行。
直接存储器存取方式(DMA)
直接存储器存取方式(Direct Memory Access,DMA) 是指通过DMA硬件来控制内存和设备的数据交换,这种方式可以不需要CPU处理。即绕过了CPU来进行数据交换的方式。
DMA方式是为了在主存与外设之间,添加一个DMA硬件,从而实现高速、批量数据交换。DMA方式比程序控制方式与中断方式都高效。
总线
总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
总线的定义与分类
一般来说,任何连接两个以上电子元器件的导线都可以称为总线。总线一般分为三类,分别是数据总线、地址总线、控制总线。
- 数据总线(DB):用来传送数据信息,是双向的。CPU既可以通过DB从内存或输入设备读入数据,也可以通过DB将内部数据送至内存或输出设备。
- 地址总线(AB):用于传送CPU发出的地址信息,是单向的。传送地址总线的目的是指明与CPU交换信息的内存单元或I/O设备,地址总线的宽度决定了CPU的最大寻址能力。
- 控制总线(CB):用来传送控制信号、时序信号和状态信息等,双向线表示。其中有的信号是CPU向内存或外部设备发出的信息,有的信号是内存或外部设备向CPU发出的信息。CB中的每一条线的信息传送方向是单方向且确定的,但CB作为一个整体则是双向的。
计算机安全
计算机的安全威胁
计算机安全指的是计算机资产安全,是要保证这些计算机资产不受自然和人为的有害因素的威胁和危害。
典型的安全威胁如图所示

加密技术
加密技术是最常用的安全保密手段,数据加密的技术分为对称加密和非对称加密。
对称加密算法
对称加密算法特性
- 加密和解密使用相同的密钥。
- 对称加密算法的加密速度快,但加密强度不高,容易被暴力穷举破解。只适合加密大量数据。

常见的对称加密算法包括:DES,3DES,RC-5,AES等
- DES:密钥长度为56位,已被证明不安全。
- 3DES:是对DES的改进,密钥长度为168位,安全性较高。
- RC-5:用于对明文进行加密的算法,适用于大量明文进行加密并传输。密钥长度为128位。
- IDEA:是一种对称加密算法,密钥长度为128位,安全性较高。
- AES:是一种对称加密算法,密钥长度为128位,安全性较高。
非对称加密算法
非对称加密算法特性
- 非对称加密算法的加密和解密使用不同的密钥。即公开密钥和私有密钥。
- 用公开密钥加密,只能用对应的私有密钥解密。
- 用私有密钥加密,只能用对应的公开密钥解密。
- 非对称加密算法的加密强度高, 但加密速度慢。只适合加密少量数据。
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥和私有密钥。两者是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。如图所示 
常见的非对称加密算法包括:RSA,ECC等。
- RSA是一种非对称加密算法,在用户或者机构之间进行身份认证方面有较好的应用;常用于数字签名
认证技术
认证技术主要解决网络通信过程中通信双方的身份认可。
摘要认证
将发送的明文进行Hash算法后得到摘要放在密文后一起发送过去,与接收方解密后的明文进行相同的Hash算法得到的摘要进行对比。如果一致,则表示消息没有篡改,否则有篡改。
签名认证
数字签名认证的过程如下:
- 发送方用自己的私钥对摘要进行签名(加密)得到数字签名放在密文后一起发送过去
- 接收方用发送方的公开密钥对数字签名进行验证(解密)。如果验证成功,则表示消息没有篡改,否则有篡改。
数字证书认证
CA: 第三方可信任的数字证书发行机构
- 用户向CA机构申请数字证书,将用户的个人信息和用户的公钥发给CA机构,然后CA机构颁给用户数字证书。
- 数字证书用CA的私钥进行签名(加密),用CA的公钥验证(解密)数字证书就可以得到用户的公钥。
计算机系统可靠性
可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。
计算机系统是一个复杂的系统,而且影响其可靠性的因素非常复杂,很难直接对其进行可靠性分析。但通过建立适当的数学模型,把大系统分割成若干子系统,可以简化其分析过程。
常见的系统可靠性数学模型有以下3种。
串联系统
如果一个系统R,由于各个子系统R1...Rn组成。当且仅当所有的子系统都能正常工作时系统才能正常工作,这种系统称为串联系统,如图所示。

- 串联系统的可靠性等于各个子系统的可靠性的乘积。即 R = R1 * R2 * .... Rn
- 其中R1为子系统1的可靠性。
并联系统
如果一个系统R,由于各个子系统R1...Rn组成。只要有一个子系统正常工作,系统就能正常工作,这样的系统称为并联系统,如图所示。

- 并联系统的可靠性等于 1 减去各个子系统的不可靠性的乘积。即 1 - (1-R1) * (1-R2) * ... (1-Rn)
- 其中R1为子系统1的可靠性,(1-R1)为子系统1的不可靠性。
