系统架构设计师常见高频考点总结之操作系统

前趋图与PV操作(信号量)

非常经典的前趋图与PV操作(信号量)题目。在软考的操作系统模块中,这类题几乎每年必考。在进程同步中,我们使用信号量(Semaphore, S)来控制执行顺序:

  • 前趋进程(先做完的) :执行 V操作(V(S),相当于"发送信号/释放资源"),告诉后面的人"我做完了"。

  • 后继进程(后开始的) :执行 P操作(P(S),相当于"等待信号/申请资源"),检查前面的人有没有做完。

口诀:前 V 后 P (箭头出发点写 V,箭头指向点写 P)。

操作系统分页存储管理

这是一道关于操作系统分页存储管理的基础计算题。这类题目在软考中属于送分题,只要掌握了"除法取整"和"页表映射"两个概念即可轻松搞定。地址转换(逻辑地址转物理页号)

核心概念:

在分页系统中,逻辑地址不是直接对应物理内存的,它被切割成了两部分:

  1. 页号 (Page Number):数据在第几页?

  2. 页内偏移 (Offset):数据在该页的第几个位置?

计算公式:

  • 页号 = 逻辑地址 / 页面大小 (取整数部分)

  • 页内偏移 = 逻辑地址 % 页面大小 (取余数部分)

流水线时间计算

1.基础定义

n = 指令条数

= 一条指令完整执行的时间(非流水线时间)

= 流水线周期(瓶颈时间)

k = 流水线级数

  • 不使用流水线 :n*

  • 使用流水线 :公式: (𝑘+𝑛−1) *(公式:其中 k=级数, n=指令数)

2.最大吞吐率

1. 核心概念:木桶效应(瓶颈)

流水线的工作原理就像工厂的流水线。不管你的其他工序(取指、分析)做得多快,整个流水线的生产速度(也就是时钟周期 )只能取决于最慢的那一道工序

2. 吞吐率计算

  • 吞吐率 (TP):单位时间内处理指令的数量。

  • 公式

3. 最大理论加速比

标准公式是

当任务量巨大时(n→∞)想象一下,如果不是执行 10 条指令,而是执行 10亿 条指令(n 非常大)。此时,分母里的 (k−1)(也就是流水线的建立时间)相对于 n 来说,小到可以忽略不计。公式就变成了:

把 n 约掉:

磁盘阵列(RAID)容量计算规则

1. 基础知识:RAID 5 是什么

  • 特点:它把数据切块存在不同硬盘上,同时计算出一份"校验数据"(Parity)。

  • 代价 :为了保证坏掉一块盘还能找回数据,RAID 5 必须消耗掉相当于 1 块硬盘容量的空间来存校验信息。

  • 核心公式:可用容量=(𝑁−1)×单块盘容量(其中 N 是硬盘的总数量)

2. 场景一:三块盘大小一样

题目:3 块 80G 的硬盘做 RAID 5 这是最标准的情况。

  • 损耗:必须扣除 1 块盘的空间存校验码。

  • 计算:(3−1)×80G=2×80G=160G

3. 场景二:硬盘大小不一样

题目:2 块 80G + 1 块 40G 做 RAID 5。

解析 :这里涉及到一个极其重要的原则:木桶效应(短板效应)

在组建标准 RAID 时,为了保证数据能整齐地切分和排列,所有硬盘的"有效容量"必须向最小的那块看齐

  • 短板:最小的盘是 40G。

  • 后果:系统会强行把那两块 80G 的盘也当成 40G 来用。

    • 80G 盘 A → 只用前 40G,剩下 40G 浪费掉

    • 80G 盘 B → 只用前 40G,剩下 40G 浪费掉

    • 40G 盘 C → 用满 40G。

  • 现在的情况变成了 :相当于你有 3 块 40G 的硬盘在做 RAID 5。

4. 总结记忆公式

遇到 RAID 容量计算题,记住这两个步骤:

  1. 先看齐(切短板)

    如果硬盘大小不一样,先找到最小的那块。把所有硬盘的容量都视为这个最小容量(多余的舍弃)。

  2. 再扣除(算校验)

    • RAID 0:不扣除。容量 = N×最小容量。

    • RAID 1:扣一半(只有2块盘时)。容量 = 1×最小容量

    • RAID 5:扣一块。容量 = (𝑁−1)×最小容量

    • RAID 6:扣两块。容量 = (𝑁−2)×最小容量

磁盘I/O性能计算题

1. 核心参数提取

拿到题目,先在草稿纸上写下这三个数值:

  1. (读取/传输时间):读取一个物理块需要的时间。

计算公式:𝑑=旋转周期/每道块数Tread​=旋转周期/每道块数

  1. (处理时间):CPU 处理一条记录的时间。

**3.**缓冲区类型:

  • 单缓冲区:读和处理是串行的(读入->处理->读入...)。

  • 双缓冲区:读和处理是并行的(处理第1个的同时,可以读第2个)。

2. 两种情况的计算公式

针对软考中的磁盘I/O性能计算题 (尤其是单/双缓冲区、优化/非优化分布),这类题目有非常固定的解题套路和"软考专用逻辑"。

2.1. 非优化分布(顺序存放)------ "错过等一圈"逻辑

场景 :数据按 𝑅1,𝑅2,𝑅3... 物理相邻存放。
逻辑

  • 读完 R1 花了 3ms。

  • 接着处理 R1 花了 6ms。

  • 关键点:在处理的这 6ms 里,磁盘还在转!它转过了 6/3= 个块。

  • 后果 :当系统处理完 R1 想去读 R2 时,磁头已经越过了 R2 的位置(跑到了 R4 开头)。

  • 惩罚:必须等磁盘转一整圈,再次回到 R2 的开头。

计算公式(前 N-1 个 + 最后一个):

通常为了简化,可以直接算:N * 每条记录耗时 = N * (读取 + 处理 + 等待回转)

2.2. 优化分布(间隔存放)------ "无缝衔接"逻辑

场景 :数据按 𝑅1,空,空,𝑅2...R1,空,空,R2... 间隔存放。
逻辑

  • 读完 R1 花了 3ms。

  • 处理 R1 花了 6ms。

  • 关键点:在这 6ms 里,磁盘转过了 2 个块的位置。

  • 优化目标:我们将 R2 正好放在 R1 后面隔 2 个块的地方。

  • 结果 :当 CPU 处理完 R1,磁头刚好 转到了 R2 的开头。不需要任何等待(寻道/旋转延迟为0)

单缓冲区下的计算逻辑:

由于是单缓冲区,系统必须"读完 -> 才能处理 -> 处理完缓冲区空了 -> 才能再读"。哪怕物理位置对上了,你也必须先把 R1 处理完,才能发指令读 R2。

  1. 读 R1:3ms

  2. 处理 R1:6ms (此时磁头转到 R2 开头,完美!)

  3. 读 R2:3ms

  4. 处理 R2:6ms

  5. ...

总时间公式

3. 软考做题"秒杀"技巧

遇到这种题,直接套用以下经验:

  • 非优化:时间特别长,通常是几百毫秒。

  • 优化:时间短。

    • 单缓冲区(最常见):
  • 双缓冲区 (较少考):

最短移臂调度算法 (SSTF)

核心解题规则

1.第一优先级:移臂调度(找柱面/磁道)

  • 原则:最短移臂调度(SSTF, Shortest Seek Time First)。

  • 做法 :看当前磁头在哪里,下一步去离当前位置最近的那个柱面(Cylinder)。

  • 原因:机械臂移动是最耗时的动作(毫秒级),必须优先优化。

2.第二优先级:旋转调度(找扇区)

  • 原则 :当几个请求都在同一个柱面 上时,不需要移动机械臂了。此时为了减少等待磁盘旋转的时间,按照扇区号(Sector)从小到大的顺序处理(模拟磁盘旋转的方向)。

  • 做法:柱面相同,谁的扇区号小,谁先执行。

3. 第三优先级(如有必要):磁头号

  • 如果柱面和扇区都一样,通常按磁头号排序(电子切换速度极快),或者按照请求的先后顺序。

CRC 循环冗余校验码

1.计算逻辑

信息码字为111000110,生成多项式 G(x)=x^5+x^3+x+1,计算校验码,。

  1. 多项式转二进制:G(x) 对应 101011。

  2. 补位与模二除法:在信息码后加5个0(由x^5决定),用 11100011000000 除以 101011。

  3. 结果:余数为 11001,即为校验码,。理解核心在于模二除法不借位的运算规则。

2. 模二除法

不要像传统除法那样每一位都写商。我们只关注余数规则

  1. 对齐:永远把除数的最高位 1,对齐被除数(或当前余数)的最高位 1。

  2. 异或:进行异或运算(相同为0,不同为1)。

  3. 拉位 :运算结果去掉开头的 0,然后从被除数后面把数字拉下来关键点 :如果拉下来后位数不够6位,就继续拉,直到凑够6位(或者首位是1)再进行下一次运算。

第 1 步:

复制代码
11100000  (取前6位,首位是1,够除)
  101011        (除数对齐)
  ------
  010011        (异或结果)
   10011        (去掉首位0,剩5位)

第 2 步:(拉下来一位 1,凑够6位)

复制代码
   10011 1      (拉下来1,变成6位,首位是1,够除)
   10101 1      (除数对齐)
   -------
   00110 0      (异或结果)
     110 0      (去掉首位两个0,剩4位)

第 3 步: (连续拉位 ------ 这是简便法的精髓

  • 当前余数:1100(4位)

  • 拉一位 1 → 11001 (5位,不够除数6位 ,不要做运算,直接跳过

  • 再拉一位 0 → 110010 (6位,够了!

    复制代码
       11001 0    (凑够了6位,进行运算)
       10101 1
       -------
       01100 1    (异或结果)
        1100 1    (去掉首位0,剩5位)

第 4 步:(继续拉位)

  • 当前余数:11001(5位)

  • 拉一位 0 → 110010 (6位,够了)

  • 观察:这一步和第3步一模一样!说明进入了循环模式。

    复制代码
        11001 0
        10101 1
        -------
        01100 1
         1100 1   (去掉首位0,剩5位)

第 5 步:(继续拉位)

  • 当前余数:11001

  • 拉一位 0 → 110010

  • 继续一样的运算...

    复制代码
         11001 0
         10101 1
         -------
          1100 1

第 6 步:(最后一位 0)

  • 当前余数:11001

  • 拉一位 0 → 110010

  • 最后一次运算...

    复制代码
          11001 0
          10101 1
          -------
           1100 1   (最终余数)

最终剩下的 5 位数是 11001

考场操作建议:

在草稿纸上,按照上面的阶梯状格式写,每次运算完划掉前面的0,不够就往下拉,直到被除数的所有位都被拉完为止。

文件索引节点法

1. 计算核心参数("一把钥匙开多少锁")

这是所有计算的基础。

  • 磁盘块大小:1KB = 1024 字节。

  • 地址项大小:4 字节。

  • 一个索引块能存多少地址 :1024÷4=256

    • 理解: 当我们要用"间接索引"时,系统会拿出一个空的磁盘块专门存地址。这个块能存 256 个指向数据块的指针。

2. 划分各个地址项的"势力范围"

数据块是从 0 开始编号的。我们来看看这 8 个地址项(iaddr[0]~iaddr[7])分别管到哪里:

1. 直接地址索引(iaddr[0] ~ iaddr[4])

  • 数量:共 5 个地址项。

  • 负责范围 :逻辑块号 0 ~ 4(共 5 个块)。

  • 结论 :如果要找 逻辑块号 1 ,它就在这个范围内。所以第 1 个空填:直接地址索引

2. 一级间接地址索引(iaddr[5]、iaddr[6])

  • 原理:这两项不直接存数据,而是指向两个"索引块"。

  • iaddr[5] 能管多少? 256 个块。

    • 接在直接索引后面,范围是:5∼(5+256−1)=5∼260
  • iaddr[6] 能管多少? 又是一个 256 个块。

    • 接在 iaddr[5] 后面,范围是:261∼(261+256−1)=261∼516
  • 累计范围 :目前 0~6 号地址项总共管到了 516 号逻辑块。

3. 更高级别的索引(iaddr[7])

  • 现状 :我们要找的是 逻辑块号 518

  • 比对:518 已经超过了前面一级间接索引管辖的最大范围(516)。

  • 结论 :518 必须存放在下一级地址项,即 iaddr[7] 中。

3. 做题套路总结

  1. 算出 块大小 / 地址大小(通常是 256 或 128)。

  2. 列出直接索引能到多少(比如 0-4)。

  3. 一级索引就是在直接索引的基础上加 256(或 256 的倍数)。

  4. 如果题目问的块号大于 一级索引的最大值,不用犹豫,直接选二级间接

相关推荐
tech-share18 小时前
【无标题】IOMMU功能测试软件设计及实现 (二)
linux·架构·系统架构·gpu算力
vx-bot55566620 小时前
1024proxy现代对抗性环境下的分布式流量调度系统架构设计
分布式·系统架构
lhrimperial1 天前
企业级消息中心架构设计与实践:多渠道统一推送平台
spring cloud·中间件·系统架构
manuel_897572 天前
八 系统架构设计
系统架构
程序员小胖胖2 天前
每天一道面试题之架构篇|Java应用无感热补丁系统架构设计
java·架构·系统架构
lhrimperial2 天前
深入浅出Spring Cloud Gateway:从理论到企业级实践(一)
spring cloud·微服务·系统架构·gateway
lhrimperial2 天前
深入浅出Spring Cloud Gateway:从理论到企业级实践(二)
spring cloud·微服务·系统架构·gateway
编程武士2 天前
UUID 升级:四种现代化方案深度对比
系统架构·课程设计
xixixi777772 天前
CDN(内容分发网络)——缓存和分发网站、应用程序、视频等内容,以提高用户访问速度和稳定性,减少网络延迟和拥塞,同时减轻源服务器的压力
网络·缓存·架构·系统架构·cdn·业务·内容分发网络