系统分析师(4)- 系统可靠性、总线、存储系统-Cache、输入输出(IO)技术、磁盘管理

可靠性指标

  • 平均无故障时间 \(\text{MTTF}=1/\lambda\);\(\lambda\) 失效率
  • 平均故障修复时间 \(\text{MTTR}=1/\mu\);\(\mu\) 修复率
  • 平均故障间隔时间 \(\text{MTBF}=\text{MTTF}+\text{MTTR}\)
  • 系统可用性 \(=\dfrac{\text{MTTF}}{\text{MTTF}+\text{MTTR}} \times 100\%\)

image

image

串联、并联系统可靠性与MTTF(系统分析师高频)

前提:各个子系统失效率相互独立,单个部件 \(\text{MTTF}_i=\dfrac{1}{\lambda_i}\)

1. 串联系统(全部正常,系统才正常)

  • 总失效率:\(\lambda = \lambda_1+\lambda_2+\dots+\lambda_n\)
  • 系统平均无故障时间:

\[\text{MTTF}_\text{串}=\frac{1}{\lambda_1+\lambda_2+\dots+\lambda_n} \]

  • 可靠度:\(R_\text{串}=R_1 \times R_2 \times \dots \times R_n\)

2. 并联系统(只要有一个正常,系统就正常,n个部件并联)

以2个部件并联(最常考):

\[\text{MTTF}_\text{并(2个)}=\frac{1}{\lambda_1}+\frac{1}{\lambda_2}-\frac{1}{\lambda_1+\lambda_2} \]

若两个部件失效率相同 \(\lambda_1=\lambda_2=\lambda\):

\[\text{MTTF}_\text{并}=\frac{3}{2\lambda} \]

n个同失效率\(\lambda\)并联通用公式:

\[\text{MTTF}_\text{并}=\frac{1}{\lambda}\left(1+\frac12+\frac13+\dots+\frac1n\right) \]

  • 可靠度:\(R_\text{并}=1-(1-R_1)(1-R_2)\dots(1-R_n)\)

3. 混联(串并联组合)

思路:从内层向外层,先算一组并联/串联的可靠度、MTTF,再当成一个部件继续计算。

💡考试小提示

  1. 串联:部件越多,整体MTTF越小,可靠性越低;
  2. 并联:冗余,部件越多,MTTF越大,可靠性越高;
  3. 考题经常给每个部件的MTTF,先转成\(\lambda=\dfrac{1}{\text{MTTF}}\)再代入计算。

总线

  • 内部总线、系统总线(数据、地址、控制)、外部总线
  • 串行、并行
  • 单工、半双工、全双工

存储系统-Cache

image

局部性原理

  • 时间局部性:
    • 指程序中的某条指令一旦执行,不久以后该指令可能再次执行;典型原因是程序中存在大量的循环操作。
  • 空间局部性:
    • 指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问;典型情况是程序顺序执行。

工作集理论

工作集是进程运行时被频繁访问的页面集合。

Cache 平均访问时间

假设:

  • h:Cache 访问命中率
  • t₁:Cache 的周期时间
  • t₂:主存储器周期时间

以读操作为例,其中 (1 - h) 为失效率:

\[t_a=h\times t_1+(1-h)\times t_2 \]

系统的平均周期为:

\[t_a=h\times t_1+(1-h)\times t_2 \]


Cache 映像方式

  • 直接相联映像:硬件电路较简单,但冲突率很高。
  • 全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低。
  • 组相联映像:直接相联与全相联的折中。

直接映射 = 固定位置;
全相联 = 随便放、需要比较全部标记;
组相联 = 先分到组,组内全相联。

直接映射

image

  • 分成了128个区,编号 0-127
  • \(128 = 2^{7}\) ,用7个位来标识Cache里的页来自主存的哪一区
    • 显然:Cache大小 = 分区大小
  • 会出现多个主存页映射到同一个Cache页,可能造成读写时反复抢占Cache,导致谁都无法命中,使命中率下降。

全相联

image

  • 页(主存) 与 页(Cache)大小完全一致
  • \(2048 = 2^{11}\) ,用11个位完全能够严格区分出Cache里的页来自主存的哪一页

组相联

Cache淘汰策略 & 写过程

image

  • Cache淘汰策略
    • 先进先出 FIFO : 对应空间局限性,越早进Cache的存放位置离刚进的页最远,越早的越先淘汰掉
    • 近期最少使用 LRU : 对应时间局限性
  • Cache 写过程
    • 写通: Cache 和 内存 都写,保持一致
    • 写回: 只写Cache,当Cache要淘汰时,才写到内存里去保存
    • 标记法:只写内存,并将标记位清0;若要用到此数据,需要再次调取到 Cache

模运算的三种硬件实现方式(含ASCII图解)

针对上一轮提到的三种模运算硬件实现场景,下面分别给出一个具体的工程/数学例子,并结合 ASCII 图形化的方式,把硬件内部寄存器、逻辑门和数据的流动画出来,让你直观看到硬件在干什么。


场景一:通用模运算(整数除法取余)—— 硬件除法器

例子:计算 13 % 5(即 二进制 1101 % 101)

硬件内部有一个“移位-减法”状态机。过程如下:

【初始状态】
被除数寄存器 (A): 1 1 0 1
除数寄存器   (B): 1 0 1
余数寄存器   (R): 0 0 0 0

【第1步:A左移,最高位移入R】
A: 1 0 1 0  (左移,最高位1移出)
R: 0 0 0 1  (接收了移出的1)
比较:R (1) < B (5),不执行减法,商位填0。

【第2步:A继续左移】
A: 0 1 0 0
R: 0 0 1 1  (R左移,移入A的最高位0) -> R=3
比较:R (3) < B (5),不执行减法,商位填0。

【第3步:A继续左移】
A: 1 0 0 0
R: 0 1 1 1  (R左移,移入A的最高位0) -> R=7
比较:R (7) >= B (5)!
执行减法:R = R - B = 7 - 5 = 2
商位填1。

【第4步:A继续左移】
A: 0 0 0 0
R: 0 1 0 1  (R左移,移入A的最高位1) -> R=5
比较:R (5) >= B (5)!
执行减法:R = R - B = 5 - 5 = 0
商位填1。

【结束状态】
商寄存器: 0 0 1 1  (即十进制的3)
余数寄存器(R): 0 0 0 0  (即十进制的0)

硬件结果:13 % 5 = 0(注意:13 是 1101,最后一步移入的 1 让 R 变成 5,减去后为 0)。


场景二:特殊模数($ 2^n - 1 $)—— 加法器与循环进位

例子:计算 29 % 15(即 二进制 11101 % 1111)

此时不需要除法器,硬件只需利用一个简单的加法器(Adder),把二进制数按 4 位(n)切分。

【步骤1:切分与对齐】
被除数:  1 1 1 0 1
模数:    1 1 1 1 (即 2^4-1, 15)
高1位:   1
低4位:     1 1 0 1

【步骤2:相加(利用加法器硬件)】
     1 (高位)
+ 1 1 0 1 (低位)
----------
  1 1 1 0  (十进制 14)

【步骤3:比较(由于 14 < 15,结束)】
结果: 1 1 1 0 (十进制 14)

反面例子:计算 31 % 15 (即 11111 % 1111,触发循环进位)

切分:
高1位:   1
低4位:   1 1 1 1

相加:
     1
+ 1 1 1 1
----------
 1 0 0 0 0 (十进制 16,超出了4位,产生进位)

【循环进位】(关键硬件操作,把最高位加回最低位)
   1 0 0 0 0
      + 1 (最高位落回最低位)
----------
     0 0 0 1 (十进制 1)

结果: 31 % 15 = 1

硬件实现:只需加法器和多路选择器(处理进位),延迟极低,常用于网络硬件。


场景三:模2运算(XOR)—— CRC校验的移位寄存器

例子:计算 1101 % 101(模2除法,生成多项式为101)

在硬件中,这是一个线性反馈移位寄存器(LFSR)。数据从左边依次串行输入:

【待补充 ……】

  • 原理:每当最高位(Q1)移出时,它会与输入数据进行 XOR(异或)。如果是 1,就改变下一位的值;如果是 0,就原样移位。整个电路完全由异步/同步逻辑门组成,没有CPU参与。以太网的网卡芯片里,这个电路被重复了 32 次(CRC-32)并行计算。

🎯 总结:三种硬件电路的形态

  1. 通用除法器:像一台精密的移位机器,需要反复比较和减法。
  2. 特殊模数:像一个加法套娃,把高位切下来扔进低位累加。
  3. 模2除法:像一条带反馈的流水线,数据像流水一样穿过触发器,只有分叉的地方(XOR)才改变水流。

输入输出(IO)技术

I/O控制方式

  • 程序控制(查询)方式:CPU轮询
    • 方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
  • 程序中断方式:外设主动告知
    • 与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
  • DMA方式:中间加一个中介,解放CPU
    • 为了在主存与外设之间实现高速、批量数据交换而设置。DMA方式比程序控制方式与中断方式都高效。
  • 通道方式
    • 纯硬件方式,较快
  • I/O处理机
    • 纯硬件方式,最快

从上往下,通信效率越来越高,CPU参与程度越来越低


程序中断方式

image

  • 图中各阶段的核心解释:
    1. 中断请求(INTR):外设在完成一个字节传输或需要 CPU 处理时,通过硬件引脚向 CPU 发出电信号。这个过程是异步的,CPU 随时可能收到。

    2. 中断响应:CPU 不会在一条指令执行到一半时强行中断。它会在当前指令执行完、取下一条指令之前,检查中断引脚。如果条件允许,才进入中断周期。

    3. 中断隐指令(硬件保护现场):这是由硬件电路自动完成的,不需要程序员写代码。硬件会自动把当前的程序计数器(PC) 和程序状态字(PSW) 压入系统堆栈,然后跳到中断向量表。

    4. 中断服务程序(ISR):由软件实现。你要在这里处理真正的业务(比如把键盘输入存到内存,或者读取传感器数据)。处理完后,必须显式地清除中断标志位,防止中断风暴。

    5. 恢复现场与返回:硬件或指令(如 IRET)会自动从堆栈中弹出之前的 PSW 和 PC,让 CPU 回到被打断的那条指令继续往下跑,仿佛什么都没发生过一样。


例题

计算机系统中常用的输入/输出控制方式有无条件传送、中断、程序查询和DMA方式等。当采用( )方式时,不需要CPU执行程序指令来传送数据
A. 中断
B. 程序查询
C. 无条件传送
D. DMA

答案

D. DMA

解析

题干关键点:不需要CPU执行程序指令来传送数据

  • A 中断方式:外设发出中断后,CPU要执行中断服务程序里的指令完成数据读写,需要CPU指令。
  • B 程序查询方式:CPU不断循环执行指令,查询外设状态、读写数据,全程依靠CPU执行指令。
  • C 无条件传送:由CPU执行I/O指令传输数据,依然需要CPU指令。
  • D DMA(直接存储器访问):DMA控制器接管总线,外设与主存之间直接传输数据;数据传送阶段不需要CPU执行任何指令,CPU仅负责提前初始化DMA控制器,数据搬运由硬件直接完成。

✅ 核心考点:DMA 的本质是数据传输阶段无需CPU干预、不用CPU执行传送指令。


主存(内存)编址

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

编址内容

  • 按字编址:存储体的存储单元是一个字,与硬件设计有关; x86 / ARM 计算位宽是 64bit,但其编址仍是按 8bit。

  • 按字节编址:存储体的存储单元是一个字节,行业约定 8bit

  • 总容量 = 存储单元个数 * 编址内容

  • 总片数 = 总容量 / 单片容量


题目

内存按字节编址,利用\(\boldsymbol{8K \times 4bit}\)的存储器芯片构成\(\boldsymbol{84000H}\)到\(\boldsymbol{8FFFFH}\)的内存,共需()片。
A.6 B.8 C.12 D.24

解析

公式:\(\boldsymbol{总片数 = 总内存容量 \div 单个芯片容量}\)

1. 求总内存大小(按字节编址,一个地址=1字节)

地址区间:84000H ~ 8FFFFH
存储单元数量 = 末地址 − 首地址 + 1

\[8FFFFH - 84000H + 1 = C000H \]

\[C000_{16}=12\times16^3 = 49152\ \text{B}=48\ \text{KB} \]

2. 单片芯片容量

芯片:\(8K \times 4\mathrm{bit}\)
\(8K\times4\mathrm{bit}= 4\mathrm{KB}\)

注意:芯片数据位是4bit,要拼成8bit的字节,2片才能组成8KB内存

3. 计算总片数

\[\text{片数}= \frac{48\mathrm{KB}}{4\mathrm{KB}}=12 \]

答案:C


磁盘管理

image

题目1

假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。逻辑记录R0,R1……R9,R10存放在同一个磁道上,记录的存放顺序如下表所示:

物理块 1 2 3 4 5 6 7 8 9 10 11
逻辑记录 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10

磁盘的旋转周期为33ms,磁头当前处在R0的开始处。若系统使用单缓冲区顺序处理这些记录,每个记录处理时间为3ms,则处理这11个记录的最长时间为( );若对信息存储进行优化分布后,处理11个记录的最少时间为 ( )

第一空选项
A.33ms B.336ms C.366ms D.376ms

第二空选项
A.33ms B.66ms C.86ms D.93ms


已知条件整理

  • 磁道一共11块,旋转一圈总时间:33ms
  • 读1块的时间 = \(33/11 = \boldsymbol{3ms}\)
  • 单缓冲区:读完一块,才能开始处理;处理期间磁盘继续旋转
  • 磁头起点:R0起始位置;顺序处理R0→R1→R2→…→R10
  • 每条记录处理时间=3ms

核心原理:单缓冲区,读完记录放入缓冲区,CPU处理记录的同时,磁盘还在不停旋转。处理完当前记录后,磁头大概率已经转过下一个记录,必须等磁盘转完整圈,再次转到下一块,才能读取。

第一问:原始顺序存放,最长时间

① R0

  • 读取R0:3ms
  • 处理R0:3ms

读完R0开始处理,处理的3ms内磁盘继续旋转,磁头已经滑过R1。
想要读到R1,必须等磁盘转完整圈(33ms)才能再次来到R1。

② R1 ~ R10(一共10条记录)

  • R0读取3ms,处理3ms;读完R0,磁头位置:R0结束,经过3ms处理,磁盘向前移动1块。
  • R0读取:3ms,处理3ms。
  • R0处理完毕,磁头已经到达R2起始。要读R1,需要等待10块的旋转时间:
    • \(10\times3=30\mathrm{ms}\),然后读R1(3ms),处理R1(3ms)。
  • R1~R9(9条):每条等待30ms +读3ms +处理3ms
  • R10:等待30ms,读3ms,处理3ms

计算总时间

\(T = (3+3)+10\times(30+3+3) = 6+360 = \boldsymbol{366ms}\)
✅ 第一空答案:C(366ms)

解释:读完R0,处理3ms,磁盘转过1块(R1),磁头落在R2。要拿到R1,需要等磁盘再转10块(30ms)回到R1。R1~R10每一条都需要等待30ms旋转时间。

第二问:优化分布,最少时间

优化分布:调整记录在磁道上物理块位置,处理完当前记录时,磁头刚好到达下一条记录起始位置,消除多余旋转等待。

  1. 读取R0:3ms,处理R0:3ms
    读R0用3ms,处理R0的3ms,磁盘正好转过1块,下一个物理块正好放R1。
    这样:读完、处理完Ri,磁头正好对准Ri+1,不需要额外等待。

每条记录:读3ms + 处理3ms。
前10条R0~R9:每条6ms;
最后R10:读取3ms,处理3ms。

  • 思路:优化分布,磁头起点R0
    • R0:读3ms,处理3ms(6ms)
    • R1~R10:读完上一条,磁头刚好到下一块,不需要旋转等待,每条读3+处理3
    • 优化排布:R0,R1,R2...R10间隔放置,处理完上一个,磁头刚好到下一个。
  • 总时间 = 11×(3+3) = 66。选 B。

考点小结

  1. 磁盘单缓冲区:读取和处理不能并行;读取时磁盘旋转,处理时磁盘继续旋转。
  2. 普通顺序存放:处理完一条,磁盘已经转过下一块,要等几乎一整圈才能读到下一条,旋转延迟大。
  3. 优化分布(交错分布):调整物理块位置,处理完当前记录,磁头刚好到下一条记录,消除大部分旋转等待,大幅缩短总时间。

磁盘寻道调度4种算法

1. FCFS 先来先服务(最简单)

规则:按照请求到达的先后顺序依次访问,不看距离。
优点:公平,实现简单
缺点:寻道距离不可控,容易产生饥饿、寻道时间很长
例子:当前15,请求顺序 12,19,23,19,12,28 → 访问顺序就是:12→19→23→19→12→28

2. SSTF 最短寻道时间优先(Shortest Seek Time First,刚才这道题)

规则:每次选距离当前磁头柱面最近的请求。
✅ 同柱面多个请求可以一起连续处理
优点:平均寻道距离短,效率高
缺点:会饥饿;离磁头远的请求长期得不到服务

做题要点:算 |当前柱面 - 请求柱面|,挑差值最小的

3. SCAN 电梯算法(扫描算法)

规则:磁头沿着一个固定方向移动(比如从小柱面→大柱面),沿途遇到请求就处理;走到尽头之后,反向掉头,继续扫描。

像电梯:一路往上接人,到顶楼再往下
优点:不会饥饿,寻道性能比较稳定
缺点:两端请求等待时间长

⚠️ 做题一定要先看题目给定【初始移动方向】!

常考坑:题目没说方向,默认往增大方向走

4. C-SCAN 循环扫描算法

规则:单向扫描。只沿着一个方向(从小→大)处理请求;到达最大柱面之后,直接跳回最小的请求位置,重新开始单向扫描,不回头

理解:只往一个方向接单,到顶直接瞬移回起点重新扫,不是电梯来回走
优点:所有请求的等待时间更加均匀
缺点:掉头跳转那一段没有处理请求,有浪费


快速对比表

算法 核心规则 是否饥饿 特点
FCFS 按到达顺序 ❌不会饥饿 最简单,性能差
SSTF 每次选最近柱面 ✅容易饥饿 平均寻道短,高频考题
SCAN(电梯) 固定方向走,到头反向 ❌不易饥饿 来回扫描
C-SCAN(循环电梯) 单向扫描,到头直接跳回起点 ❌不易饥饿 单向循环,等待更均匀

通用做题步骤(套模板)

  1. 提取:初始磁头位置、请求的全部柱面号
  2. 看清题目用哪一种算法,看清SCAN的初始移动方向
  3. 同柱面的请求可以连续处理,不用重复移动磁臂
  4. 求总寻道长度:把每一步移动的柱面差值相加(绝对值相加)

高频易错点

  1. 磁头号、扇区号 不参与寻道调度! 寻道只看柱面
  2. SSTF 没有固定方向,每次就近;SCAN是强制方向优先
  3. C-SCAN折返的时候,折返的那一段距离不算寻道长度(有的教材算,看题目说明)
  4. 区分:寻道时间(磁臂移动)、旋转延迟、传输时间,调度算法只管【寻道】

题目1

假设磁盘臂位于15号柱面上,进程的请求序列如下表表示,如果采用最短移臂调度算法(SSTF),那么系统的响应序列应为()。

请求序列 柱面号 磁头号 扇区号
① 12 8 9
② 19 6 5
③ 23 9 6
④ 19 10 5
⑤ 12 8 4
⑥ 28 3 10

A:①②③④⑤⑥ B:⑤①②④③⑥ C:②③④⑤①⑥ D:④②③⑤①⑥

知识点

最短移臂调度 SSTF(Shortest Seek Time First)

优先选择离当前磁头所在柱面距离最近的请求;
✅ 只看柱面号!同一个柱面的多个请求,不需要移动磁臂,可以连续处理。
磁头号、扇区号不影响移臂调度。

解题步骤

初始位置:柱面15
所有请求对应的柱面:
①:12,②:19,③:23,④:19,⑤:12,⑥:28

  1. 当前柱面=15
    计算各个请求柱面与15的距离:

    • 12:|15-12|=3
    • 19:|15-19|=4
      最近的是柱面12,对应请求 ⑤、①(同柱面12,先处理这两个,顺序⑤①)

    移动到柱面12

  2. 当前柱面=12
    剩余请求:②(19)、③(23)、④(19)、⑥(28)
    距离:|12-19|=7;19最近,请求②、④(同柱面19,顺序②④)

    移动到柱面19

  3. 当前柱面=19
    剩余请求:③(23)、⑥(28)
    |19-23|=4,23更近 → 处理③

    移动到柱面23

  4. 当前柱面=23
    仅剩⑥(28),处理⑥

最终响应序列

⑤ → ① → ② → ④ → ③ → ⑥

✅ 答案:B

易错提醒

  1. SSTF只比较柱面号,磁头号、扇区号和磁臂移动无关;
  2. 同一柱面上的多个I/O请求,磁臂不需要移动,可以连续处理;
  3. 磁道/柱面移动距离 = 两个柱面号差值的绝对值。
posted on 2026-10-17 17:56  中年二班  阅读(12)  评论(0)    收藏  举报