软件设计师-第一章 计算机系统

1. 计算机系统基础知识

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

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

1.2 中央处理单元

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

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

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

  1. 运算器:运算器只能完成运算。

    • 算术逻辑单元(ALU):负责处理数据,实现对数据的算数运算和逻辑运算
    • 累加寄存器(AC):运算器的算数逻辑单元执行算数或逻辑运算时,为ALU提供一个工作区,运算的结果存储在AC中。
    • 数据缓冲寄存器(DR):作为CPU和内存、外部设备之间的中转站。
    • 状态条件寄存器(PSW):保存各种条形码内容。
  2. 控制器:控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。

    • 指令寄存器(IR):当CPU执行指令时,先把它从内存存储器取到缓冲寄存器中,在送入IR暂存。对用户完全透明

    • 程序计数器(指令计数器)(PC):跟踪指令的地址。PC在顺序执行的时候加1,在转移执行的时候加上一个位移量

    • 地址寄存器(AR):保存当前CPU所访问的内存单元的地址

    • 指令译码器(ID):指令包含操作码和地址码。对指令中的操作码进行分析解释

      还有如下:

      时序控制逻辑:要为每条指令按时间顺序提供应有的控制信号

      总线控制逻辑:是为多个功能部件服务的信息通路的控制电路

      中断控制逻辑:用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU

  3. 寄存器组

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

补充:指令 == 操作码 + 地址码

1.3 计算机基本单位

位(比特) 最小数据单位 bit、b 8b=1B
字节 最小存储单位 byte、B 1B = 8b
千字节 KB 1KB = 1024B
兆字节 MB 1MB = 1024KB
吉字节 GB 1GB = 1024MB
太字节 TB 1TB = 1024GB

1.4 数据表示

进制 英文简写
二进制 B
八进制 O
十进制 D
十六进制 H
进制转换
  1. 非十进制数转为十进制数:(按权展开求和)每位上的数码基数的位次方

    二进制转换为十进制

    (101.1101)B=1x22+0x21+1x20+1x21+1x22+0x23+1x24=(5.8125)D(101.1101)B = 1x2^2 + 0x2^1 + 1x2^0 + 1x2^{-1} + 1x2^{-2} + 0x2^{-3} + 1x2^{-4} = (5.8125)D

  2. 十进制数转换为非十进制数:(除n取余法)

    整数部分:除N取余,商为0时,将 余数倒序输出

    小数部分:乘N取整数,直至积为0(或满足精度), 整数部分正序输出

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

    二进制转为八进制(三位一组)

    将二进制数从小数点开始分别向左(整数部分)和向右(小数部分)每3位二进制位组成一组,将每一组

    内的3位二进制数转换成八进制数码中的一个数字,按顺序连接起来即得八进制表示。不足3位时,对原数值

    用0来补足3位。

    例如:(001 011 111 . 001)B = (137.1)O

    二进制转为十六进制(四位一组)

    将二进制数从小数点开始分别向左(整数部分)和向右(小数部分)每4位二进制位组成一组,将每一组内

    的4位二进制数转换成十六进制数码中的一个数字,按顺序连接起来即得十六进制表示。如果总的位数不是4

    的倍数,那么最左面的一组可以少于4位,前面用0来补足4位。

    例如:(1111 1111 0100 1011)B = (FF4B)H

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

1.5 原码,反码,补码,移码

符号位:如果机器字长为n,则最高位(或最左边的第一位是符号位:0表示正号,1表示负号) 。

  • 原码:原码就是符号位加上真值的绝对值**,** 即用第一位表示符号, 其余位表示数值绝对值.

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

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

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

如果机器字长n=8,对比如下数字的原码,反码,补码,移码

数值 原码 反码 补码 移码
+0 00000000 00000000 00000000 10000000
+1 00000001 00000001 00000001 10000001
+127 01111111 01111111 01111111 11111111
+45 00101101 00101101 00101101 10101101
+0.5 0<>1000000 0<>1000000 0<>1000000
-0 10000000 11111111 00000000 10000000
-1 10000001 11111110 11111111 01111111
-127 11111111 10000000 10000001 00000001
-45 10101101 11010010 11010011 01010011
-0.5 1<>1000000 1<>01111111 1<>1000000

长度公式:

1.6 浮点数

浮点数使用两个定点数来分别表示实数的尾数(F)和阶码(E)。其一般形式为:N=2EFN = 2^E * F

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

  • 阶码为带符号的纯整数,尾数为带符号的纯小数。

  • 一个数的浮点表示不是唯一的。小数点位置改变,阶码也随着相应改变。

  • 浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。

  • 阶数不一样,先对阶小阶向大阶对,浮点数右移

  • 规格化就是将尾数的绝对值限定在区间[0.5,1]

  • 一般浮点数阶码用R位的移码表示,尾数用M位的补码表示。这种表示的数值范围为:

1.6 寻址

  • 立即寻址:操作数就包含在指令中。(最快)

  • 寄存器寻址:操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。

  • 直接寻址:操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。

  • 寄存器间接寻址:操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。

  • 间接寻址:指令中给出操作数地址的地址。(最慢)

  • 相对寻址:指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。

  • 变址寻址:操作数地址等于变址寄存器的内容加偏移量。

  • 补充

    指令系统中采用不同的寻址方式的目的是:扩大寻址空间并提高编程灵活性

    寻址速度:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

1.7 校验码

  1. 奇偶校验码

    • 只能检错,不能纠错,码距 = 2。
    • 只能检测出奇数个数据位出错,不能检测偶数个数据位出错
    • 水平奇偶校验码、垂直奇偶校验码、水平垂直奇偶校验码。
  2. 海明码

    • 海明码可以检错也可以纠错。
    • 码距 = 2 ,检错能力     码距 \geq 3,才有可能有纠错能力
    • 数据位是n,校验位是k,则n和k必须满足一下关系:2k1n+k2^k-1\geq n+k
  3. 循环冗余校验码(CRC)

    • 可以检错,但不能纠错,码距 = 2。
    • k个数据位后跟r个校验位
    • 校验位r采用模2运算

2. 计算机体系结构

2.1 Flynn分类法

2.2 CISC 和 RISC

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

2.3 流水线

计算机中的流水线技术是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。

若要执行n条指令:

  • 顺序执行总时间:顺序执行总时间 = 单条指令执行的时间 × n

  • 流水线执行总时间:

    • 流水线执行总时间 = 一条指令执行的时间 + 流水线周期 × (n−1)

    • 流水线(操作)周期为执行时间最长的一段操作的时间。

  • 连续输入n条指令的吞吐率:

    • 吞吐率

      吞吐量=指令条数(n)一条指令执行的时间+流水线周期×(n1)\text{吞吐量}=\frac{\text{指令条数}(n)}{\text{一条指令执行的时间} + \text{流水线周期} × (n−1)}

    • 如果是流水线的吞吐率,则总执行时间为流水线执行总时间。 流水线的吞吐率是最长流水段操作时间的倒数。即:最长流水段操作时间 = 流水线执行总时间 ÷ n

  • 加速比:

    加速比 = 顺序执行总时间 ÷ 流水线执行总时间

2.4 存储系统

  1. SRAM(静态随机存储器):构成Cache(缓存)
  2. DRAM(动态随机存储器):构成主存 DRAM需要周期性地刷新保持信息。
  3. RAM(读/写存储器)
  4. ROM(只读存储器)
  5. PROM(可编程的只读存储器)
  • 按存储器所处位置可分为:

    • 内存(主存):在主机内或主板上,存放机器当前运行所需的程序和数据,以便向CPU提供信息。(相对外存)容量小、速度快。

    • 外存(辅存):存放当前不参加运行的大量信息,在需要时调入内存。

  • 按存储器的构成材料分类:

    • 磁存储器

    • 半导体存储器

    • 光存储器

  • 按存储器工作方式:

    • 读/写存储器(RAM)。

    • 只读存储器:ROM、PROM、EPROM、EEPROM等。

      • 固定只读存储器(ROM):厂家生产时就写好数据在其中。只能读(用户)不能写。一般用于存放BIOS和微程序控制。
      • 可编程读只读存储器(PROM):其内容可以由用户一次性地写入,写入后不能再修改。
      • EPROM、EEPROM是指带电可擦可编程只读存储器。
  • 按访问方式:

    • 按地址访问:

      • 随机存储器(RAM)
      • 顺序存储器(SAM)
      • 直接存储器(DAM)
    • 按内容访问:例如相联存储器。

2.5 Cache

  • 高速缓存(Cache)用来存放当前最活跃的程序和数据,其特点是:

    • 位于CPU与主存之间;容量一般在几千字节到几兆字节之间;

    • 速度一般比主存快5~10倍,由快速半导体存储器构成;

    • 其内容是主存局部域的副本,对程序员来说是透明的。

高速缓存中的地址映像方法

  • 直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、 Cache块冲突率高。

  • 全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率 低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。

  • 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式。

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

Cache存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。

  • 补充内容
    • 命中率是Cache的一个重要指标,但不是最主要的指标。

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

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

2.6 虚拟存储器

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

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

2.7 中断

计算机在执行程序过程中,当遇到急需处理的事件时,暂停当前正在运行的程序,转去执行有关服务程序,处理完后自动返回源程序,这个过程称为中断。

  • 中断向量:提供中断服务程序的入口地址
  • 中断响应时间:发出中断请求开始,到进入中断服务程序
  • 保存现场:返回执行源程序
  • 多级中断使用堆栈来保护现场最有效

2.8 磁盘阵列技术

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

  • RAD0 又称为Stripe或Striping,代表了所有RAD级别中最高的存储性能。RADO
    提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就
    可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上
    的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

  • RAD1又称为Mirror或Mirroring,它的宗旨是最大限度地保证用户数据的可用性
    和可修复性。RAD1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外
    个硬盘上。由于对存储的数据进行百分之百的备份,在所有RAD级别中,RAD1提
    供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的
    一半,因而Mirror的磁盘空间利用率低,存储成本高。Mirror虽不能提高存储性能,
    但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储
    等领域。

  • RAD0+1是RAD0和RAD1的组合形式,即先做RAD0,再做RAID1,它是存储性能和数据安全兼顾的方案

  • RAD1+0是RAD1和RAD0的组合形式,即先做RAD1,再做RAID0,它是数据安全和存储性能兼顾的方案

  • RAD5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAD5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAD5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAD5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAD5可以理解为是RAD0和RAD1的折中方案。RAD5可以为系统提供数据安全保障,但保障程度要比RAD1低而磁盘空间利用率要比RAD1高。RAD5具有和RAD0相近以的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比RAD0稍慢但保障程度比RAD0要高。

2.9 输入输出(I/O)控制方式

  1. 程序查询方式

    • CPU和 I/O(外设)只能串行工作 ,CPU需要一直轮询检查,长期处于忙等状态。CPU 利用率低

      • 一次只能读/写一个字

      • 由 CPU 将数放入内存

        ​     

  2. 中断驱动方式

    • I/O 设备通过中断信号主动向 CPU 报告 I/O 操作已完成

      • CPU 和 I/O(外设)可并行工作

      • CPU 利用率得到提升

      • 一次只能 读/写 一个字

      • 由 CPU 将数据放入内存

  3. 直接存储器方式(DMA)

    • CPU 和 I/O(外设)可并行工作

    • 仅在传送数据块的开始和结束时才需要 CPU 的干预

    • 由外设直接将数据放入内存

    • 一次读写的单位为”块“而不是字

2.10 总线结构

总线是连接计算机有关部件的一组信号线,一般来说,任何连接两个以上电子元器件的导线都可以称为总线是计算机中用来传送信息代码的公共通道。

采用总线结构主要有以下优点:

  • 简化系统结构,便于系统设计制造;
  • 大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;
  • 便于接口设计,所有与总线连接的设备均采用类似的接口;
  • 便于系统的扩充、更新与灵活配置,易于实现系统的模块化;
  • 便于设备的软件设计;
  • 便于故障诊断和维修,同时也降低了成本。

在计算机系统中采用总线结构,便于实现系统的积木化构造,同时可以减少信息传输线的数量。

微机中的总线分为数据总线、地址总线、控制总线。

  • 数据总线(DB):用来传送数据信息,是双向的。CPU既可以通过DB从内存或输入设备读入数据,也可以通 过DB将内部数据送至内存或输出设备。DB的宽度决定了CPU和计算机其他设备之间每次交换数据的位数。

  • 地址总线(AB):用于传送CPU发出的地址信息,是单向的。传送地址总线的目的是指明与CPU交换信息的 内存单元或I/O设备,地址总线的宽度决定了CPU的最大寻址能力

  • 控制总线(CB):用来传送控制信号、时序信号和状态信息等,双向线表示。其中有的信号是CPU向内存或 外部设备发出的信息,有的信号是内存或外部设备向CPU发出的信息。CB中的每一条线的信息传送方向是单方向且确定的,但CB作为一个整体则是双向的。

常见总线:

  • ISA总线。

  • EISA总线。

  • PCI总线:PCI总线是目前微型机上广泛采用的并行内总线。

  • PCI Express 总线。

  • 前端总线。

  • RS-232C。

  • SCSI总线:小型计算机系统接口(SCSI)是一条并行外总线

  • SATA。

  • USB。

  • IEEE-1394。

  • IEEE-488总线。

总线带宽的计算

在计算机系统中,总线带宽是一个重要的性能指标。总线宽度为 32bit,时钟频率为 200MHz 的总线,若总线上每 5 个时钟周期传送一个 32bit 的字,其带宽的计算有着明确的方法。

  • 总线带宽是指单位时间内总线上可传输的数据量,通常以每秒传输的字节数(B/s)为单位。
  • 时钟频率是指总线每秒钟的时钟周期数。
  • 已知时钟频率为200MHz,即每秒钟200106200*10^6个时钟周期。

计算公式总结:

总线带宽(B/s)=(时钟频率(Hz)÷ 每个字所需时钟周期数)× 每个字的位数(bit)÷8

例题:总线宽度为32bit,时钟频率为200MHz,若总线上每5个时钟周期传送一个32bit的字,则该总线的带宽为160 MB/s。

32bit/8=4B,200MHz/54B=160MB/s32bit/8 = 4B,200MHz/5*4B = 160MB/s

3.计算机安全

3.1 加密技术和认证技术

对称加密(私有密钥加密)、非对称加密(公开密钥加密)

认证阻止主动攻击,加密阻止别动攻击

对称加密(私钥/私有密钥)算法:DES、3DES、RC-5、IDEA、AES、RC4

  • 数据加密标准(DES):主要采用替换和移位的方法加密
  • 三重DES(DES,又称TDEA):在DES的基础上采用三重DES,效果相当于将密钥的长度加倍
  • RC-5:RC-5是在RCF2040中定义的,RSA数据安全公司的很多产品都在使用RC-5
  • 国际数据加密算法(IDEA):在DES算法的基础上发展起来的,类似于3重DES
  • 高级加密标准(AES):基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一 个数据单元
加密技术
  1. 对称加密(私有密钥加密)
    加密和解密是同一把密钥,只有一把密钥
    密钥分发有缺陷     1. 加密解密速度很快 2. 适合加密大量明文数据

  2. 非对称密钥(公开密钥加密)
    加密和解密不是同一把密钥,一共有两把密钥 分别是公钥和私钥
    用公钥加密只能用私钥解密 用私钥加密只能用公钥解密
    不能通过一把推出另一把 用接收方的公钥加密明文,可以实现防止窃听的效果
    密钥分发没有缺陷 1.加密解密速度很慢

    公钥体系中,私钥用于解密和签名 ,公钥用于加密和认证

  3. 混合加密

认证技术
  1. 摘要:将发送的明文进行Hash算法后得到的摘要放在密文后一起发送过去,与接收方解密后的明文进行相同的Hash算法得到的摘要进行对比,如果一致,则没有篡改,否则有篡改

  2. 数字签名:发送方用自己的私钥对摘要进行签名(加密)得到数字签名放在密文后一起发送过去。接收方用发送方的公钥对数字签名进行验证(解密)如果验证成功则该消息没有被假冒且不能否认,否则该消息的真实性为假冒发送。 使用数字签名确保消息不可否认

  3. 数字证书:用户向CA(权威机构)机构申请数字证书,将个人信息和公钥发给CA机构,CA机构颁给用户数字证书,数字证书用CA的私钥进行签名(加密)用CA的公钥验证(解密)数字证书得到用户的公钥。使用数字整数确保用户身份,用户通过CA的公钥验证CA的签名,确定网站的真伪

    数字证书主要是用来对用户身份进行认证,而数字签名主要用于确保消息不可被否认

认证是处理主动攻击

3.2 可靠性

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

    • 系统可靠性 R = R₁R₂···Rn
  2. 并联系统。假设一个系统由N个子系统组成,只要有一个子系统正常工作,系统就能正常工作,这样的系统称为并联系统。

    1. 系统可靠性 R = 1 - (1-R₁)(1-R₂)···(1-Rn)

补充列题说明

  • 指令寄存器的位数取决于**指令字长**
  • 逻辑同或:相同为一,不同为零
  • 逻辑异或:相同为零,不同为一
  • 计算机采用分层存储体系的主要目的是为了解决:存储容量、成本和速度之间的矛盾
  • 被动攻击:流量分析、会话拦截。 主动攻击:重放、IP地址欺骗、拒绝服务、系统干涉、修改数据命令
  • CPU依据 指令周期的不同阶段来区分内存中以二进制编码形式存放的指令和数据