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

前趋图与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. 如果题目问的块号大于 一级索引的最大值,不用犹豫,直接选二级间接

相关推荐
深蓝电商API2 分钟前
缓存策略在海淘代购系统中的应用
缓存·系统架构·跨境电商·代购系统·反向海淘·代购平台
慧一居士5 小时前
springboot 项目集成 seate 分布式事务AT模式使用nacos完整配置步骤及说明
系统架构
x2lab7 小时前
系统架构设计高频知识点串讲
系统架构
x2lab7 小时前
系统架构设计易混知识点串讲
系统架构·软考高级
彷徨的蜗牛8 小时前
定义 AI 驱动的研发新范式:HAFW从需求到部署的端到端智能工作流
人工智能·架构·系统架构
半夏映浮光8 小时前
系统架构设计师知识点1-20
系统架构
彷徨的蜗牛1 天前
智能AI自动化协同发文系统架构设计:从理论到实践的完整指南
人工智能·系统架构·自动化
x2lab1 天前
软考架构-需求工程备考主线框架
系统架构·软考高级
LONGZETECH2 天前
新能源汽车充电设备装配与调试仿真教学软件 技术解析与教学落地
开发语言·系统架构·汽车·汽车教学软件·智能网联汽车软件
xcLeigh2 天前
飞算 JavaAI 智能突破:从效率工具到开发范式的革新
ai·系统架构·代码生成·java开发·飞算javaai炫技赛·飞算