磁盘调度FCFS/SSTF/SCAN手把手排出磁头响应顺序作者鱼宵 系列「软考架构师实战精通营教材版」· 第 1 卷 · 第 2 章 · 第 04 篇面向基础一般、想一次考过系统架构设计师的你考点权重中频近 5 年磁盘调度隔年出现复习按 1-3 天节奏一、本篇目标一句话学完这篇你能看着磁头当前位置 一串请求按 FCFS、SSTF、SCAN 三种规则亲手排出响应顺序还算得出行进的总寻道长度。这块上午选择题年年露面2018、2022、2025 连着考套路死得不能再死规则就三条会排顺序就会拿分。别怕一步一步来这篇全是货梯先停哪层的账。你可能会担心九个请求排一遍是不是很费时间。其实每道题就九步一步挑一个近的五分钟内绝对排完。真正费时间的是粗心代错位置练熟就快了。这章用到的算术就是加减法小学水平够门槛在细心不在智商。对应教材清华社《系统架构设计师教程》第 2 版第 2 章 计算机系统基础知识磁盘调度归属2.2.3 存储器外存/磁盘部分章节细分待核实以原书目录为准。官方考试大纲2022 审定1.2.3 存储器片上缓存、片外缓存、主存和外存等磁盘调度为外存 IO 调度应用。二、零基础开胃课先把这几个词认掉拿老唱片机打比方。唱片机的唱针不会瞬移它得从当前位置挪到唱片上某条轨道才能出声——磁盘读数据一模一样读头磁头得先挪过去。你可能没摸过老唱片机换个现代的例子小区里的货梯。你按 18 楼电梯现在在 5 楼它得先从 5 楼爬到 18 楼——这段爬楼时间就是寻道。爬到之后还得等门正好对着你这一户这是旋转延迟。拿上货就走这是传输时间。货梯一次要服务好几层楼的人先停 18 还是先停 10先到先得还是哪层近先停这就是磁盘调度要回答的问题。后面每碰到这些词不再解释第二遍现在花五分钟认掉后面不慌。先认五个词盘面platter硬盘里叠着的圆形碟片像一摞 CD。数据就刻在每张盘面上。磁道track盘面上一圈一圈的同心圆像靶子上的环。数据就刻在这些环上。同一个环不同盘面摞起来就是后面要说的柱面。扇区sector每个磁道再切成一段一段的小块一次读写的最小单位。你可以理解成磁道这个环上切下来的一小段弧。柱面cylinder所有盘面上半径相同的同心圆摞起来就是一个柱面。你可以理解成磁盘的楼层编号调度题里报的就是它。为什么叫柱面不叫磁道因为读写时所有盘面的读头是固定在同一根臂上的一动全动同一半径的一圈在不同盘面上正好摞成一个圆柱。磁臂arm装着读头的那根臂能水平移动带着读头从外圈挪到内圈。为什么要排序因为磁头每挪一个柱面都要花时间队伍排得好磁头少跑路整盘就快。你住的楼里货梯先停哪层、后停哪层一个道理。再补一句大背景磁盘比内存慢百万倍上一篇刚算过所以哪怕只是少挪两次磁头整体吞吐都肉眼可见地涨。磁盘调度这节内容本质就是操作系统帮你精打细算这趟跑路钱。题目常说的移臂调度就是我们这篇要排的那个序。三、概念讲解这一节按三个问题走先搞懂读数据为什么要移臂再搞懂先到先得到底行不行最后搞懂电梯算法凭什么治 SSTF 的病。每个考点都按它是什么→生活里对应什么→考试怎么考讲。磁盘读数据为什么要移臂先回答最朴素的问题磁头不能一步到位吗不能。它是机械臂得从当前位置挪动挪一次花一笔时间。读一个扇区时间花在三段一笔笔跟你算。这三段时间里调度算法只够得着其中一段。寻道时间磁臂带着读头从当前柱面挪到目标柱面的时间。这是三笔里最大的开销调度算法优化的就是它。你把它理解成货梯从 1 楼跑到 30 楼那趟功夫。旋转延迟盘片一直在转目标扇区转到读头正下方还要等半圈左右。磁盘调度管不了它知道有这回事就行。相当于你到了楼层还得等电梯门对着你这一户打开。传输时间真正把数据读出来的那小段时间相对前两笔很小。相当于进了门拿上东西就走。三笔时间里谁是大头寻道时间。所以磁盘调度只优化一件事——让磁头少跑路。考试问磁盘调度优化哪段时间答寻道时间。你把这三笔时间跟货梯对照着记爬楼寻道最久等门旋转次之拿货传输最快。考试给你排顺序别排反了。移臂调度与旋转调度两阶段操作系统处理磁盘请求分两步——先移臂调度决定先读哪个柱面再旋转调度同一柱面上的扇区按转动顺序依次读。我们这篇算的全是第一步。题目里那句应先进行移臂调度再进行旋转调度眼熟就行。考试若问调度算法优化的是哪一阶段答案是移臂调度——因为它花时间最多。先到先得就挺好吗SSTF 一定最好吗问题来了既然 FCFS 公平又简单直接用它不就行了试试就知道——满盘面折返太亏。于是有了 SSTF近的先来。但 SSTF 也有毛病。这一节三个考点FCFS 是什么、SSTF 是什么、SSTF 的毛病是什么。FCFS先来先服务按请求到达的顺序服务谁先来先送谁。像早高峰排队打车谁排前面谁先走。优点公平简单每个请求都不会被晾着缺点是完全不优化寻道磁头在满盘面上来回折返平均寻道时间长。考试让排 FCFS不用动脑子照原顺序抄。SSTF最短寻道时间优先每次从还没服务的请求里挑离当前磁头最近的先服务。比 FCFS 少跑路。易错点先记死每服务完一个请求当前磁头位置就变了下一步必须站在新位置重新算距离。我当年第一次做题就栽在这儿——服务完忘了挪位置整张序列全错。饥饿现象SSTF 有个副作用。磁头在中间忙碌时不停有新请求落在附近远处那个请求就一直被插队等的时间越来越长却永远排不到。像电梯一直有人按中间楼层1 楼的人永远等不到。这就是 SSTF 的代价也是考试出概念题的点。SCAN 因为按方向走到底远处请求迟早等到掉头比 SSTF 公平C-SCAN 更绝——到头直接跳回起点重来不让任何请求等到天荒地老。电梯算法为什么叫电梯SSTF 会饿死人怎么办工程师想了个招磁头像电梯一样按方向走沿途捎带走到头再掉头。这就是 SCAN名字就是这么来的。下面四个考点把它讲透。SCAN电梯算法磁头先定一个方向比如从小编号往大编号走沿途把这个方向上的请求一个个捎带过去走到头再掉头往回走。就像电梯先一直往上每层停到顶再往下。它不只看距离还看方向基本消除了 SSTF 的来回折返。C-SCAN循环扫描SCAN 的改良版——走到头之后直接跳回起点再按同一个方向走单向循环。相当于电梯到顶直接回 1 楼再重新往上不在下楼层停。两端柱面的请求更公平。考试看到循环扫描四个字就是它。N-SCANN 步 SCAN扫描期间只服务扫描开始前已排队的请求新到的等下一轮。FCFS 和 SCAN 的折中知道名字就行。总寻道长度排队题常让算它——每步移动距离的绝对值|下一柱面 − 当前柱面|全部加起来。磁头跑了多少路一目了然。三种算法谁快谁慢算一下这个数就见分晓。注意别跳步一步一步列加错一次整题扣分。四、手把手演示一套请求三种算法全排一遍这一节先排一道最小的把每步重算位置这个手感练出来再上九请求大例三种算法走一遍。别怕数字多一步步来。先算一道最小的把规则摸熟题目磁头在 50 号柱面请求是 10、90、30。按 SSTF 排。站在 50 算距离10 差 4090 差 4030 差 20。最近是30。磁头到了 30重新算10 差 2090 差 60。最近是10。最后90。序列30 → 10 → 90。总寻道长度 20 20 80 120。看出来了吧SSTF 的规则就是站在当前位置、挑最近、挪过去、再重算每步都问自己一句现在磁头在哪。对比一下 FCFS按原顺序 10 → 90 → 30总寻道 408060 180。同样三个请求SSTF 少跑 60 路。这就是调度的意义数字不会骗人。正式大例磁头 100九个请求例题非软考真题题目磁头初始在100 号柱面请求序列 55、58、39、18、90、160、150、38、184。FCFS按原顺序 55 → 58 → 39 → 18 → 90 → 160 → 150 → 38 → 184。总寻道 4531921727010112146 498。为什么这么大磁头从 100 跑到 55又蹦到 58又折回 39、18再冲到 90、160……来回折返。公平是公平但跑路跑得冤。SSTF站 100最近 90差10→ 到 90 重算最近 58差32→ 到 58最近 55差3→ 到 55最近 39差16→ 到 39最近 38差1→ 到 38最近 18差20→ 到 18剩 160/150/184最近 150差132→ 160差10→ 184差24。你注意到没有38 和 39 就差 1排到这儿时磁头刚在 39先 38差1再 18差20。这就是每步重算位置的威力——你要是站在 55 时偷懒把 18 提前就多跑路了。序列90 → 58 → 55 → 39 → 38 → 18 → 150 → 160 → 184。总寻道 10323161201321024 248比 FCFS 的 498 少跑一半。注意 38→18 那步是 |18−38|20不是 21——每跳都拿绝对值现算别拍脑袋。SCAN假设磁头当前往大编号方向走。先捎方向上的 150、160、184走到头掉头往回走 90、58、55、39、38、18。序列150 → 160 → 184 → 90 → 58 → 55 → 39 → 38 → 18。总寻道 5010249432316120 250。注意 SCAN 前提是题目给方向没说就按往大编号走默认排。三个数摆一起FCFS 498、SSTF 248、SCAN 250。你看SSTF 和 SCAN 几乎打平都比 FCFS 少跑一半路。这就是为什么要排顺序——不是玄学是实打实少跑路。SCAN 和 SSTF 为啥打平因为这组请求里远处的少方向感的优势没完全发挥。请求分布越散SCAN 比 SSTF 越公平考试不会让你比大小只会让你排顺序。五、真题精讲真题 12018 下半年系统架构设计师上午试卷移动臂 21 号柱面在磁盘调度管理中应先进行移臂调度再进行旋转调度。假设磁盘移动臂位于 21 号柱面上进程请求分布在 17、23、32、38 号柱面等位置。采用最短移臂SSTF调度系统响应序列应为 。——来源清华大学出版社《系统架构设计师 2018 至 2022 年试题分析与解答》官方 PDF可信度真题原题官方标准答案 D。该题在 2025 下半年系统架构设计师上午试卷第 18 题原样再考一遍。手把手排站 21距离——17 差 4、23 差 2、32 差 11、38 差 17。最近23。到 23 重算——17 差 6、32 差 9、38 差 15。最近17。到 17剩 32 差 15、38 差 21。先32最后38。响应序列23 → 17 → 32 → 38。总寻道 26156 29。官方完整卷请求共 9 项选项按①~⑨编号可核到的关键柱面就是这四个和官方答案 D②⑧③⑤⑦①④⑥⑨对得上。为什么先 23 不先 17站在 2123 只差 2、17 差 4近的先来。为什么到了 23 先 17 不先 32磁头已经挪到 23 了重新算——17 差 6、32 差 9。记住这个重新算这是 SSTF 和 FCFS 的本质区别。真题 22022 下半年系统架构设计师上午试卷第 4 题移动臂 20 号柱面在磁盘调度管理中应先进行移臂调度再进行旋转调度。假设磁盘移动臂位于 20 号柱面上进程的请求序列如下表所示。如果采用最短移臂调度算法那么系统的响应序列应为 。——来源rkpass.cn 软考在线磁盘调度算法主题页收录本题标注错误率约 55%可信度真题原题题干与题号可核请求序列表在原页面以图片呈现。这道题和 2018 那道是同一个模子起点换成 20 号柱面规则一模一样。它 55% 的错误率说明大家都栽在忘了更新当前磁头位置——你每步都问一句磁头现在在哪就赢过一半人。换句话说这题不难就考细心。把真题 1 的排法抄一遍数字换成 20 开头就是这道题。真题 32025 下半年系统架构设计师上午试卷第 18 题回忆版假设磁盘移动臂位于 21 号柱面上进程的请求序列如下表所示。如果采用最短移臂调度算法那么系统的响应序列应为 。——来源rkpass.cn 软考在线主题页收录本题可信度回忆版题干框架已确认真实存在请求序列表未完整展开。说白了这就是 2018 原题的重考。你把真题 1 的排法练熟这道直接套。三道真题连起来看2018、2022、2025 考的都是 SSTF题干几乎一个模子——“移动臂在某号柱面 请求序列表 最短移臂调度”。你把真题 1 排法练到条件反射这一类题就全拿下了。说明FCFS 和 SCAN 没检索到可溯源的架构师本考完整题面第四节大例用的是操作系统教材经典例题磁头 100请求 55/58/39/18/90/160/150/38/184标注例题非软考真题。三种算法的排法是通的换道例题照样练。考场常见疑问题目给的请求序列是个表格、还带编号①②③怎么排答案表格里每个编号对应一个柱面号你就按 SSTF 规则在这堆柱面里挑、排序最后输出编号顺序而不是柱面顺序。排的时候两边对着写别把柱面号抄成编号。六、图解图 1三种算法跑同一组请求的轨迹——折线上下跳得越凶磁头跑的路越多。同样 9 个请求FCFS 总寻道 498、SSTF 248、SCAN 250。图 2SSTF 的五步规则——站位置、算距离、挑最小、挪过去、重算距离。红色那条链是拿大例实走一遍100→90→58→55→39→38→18→150→160→184。这张图就是 SSTF 的全部规则站位置、算距离、挑最小、挪过去、重算距离。把这五步默念一遍考试不会错。第一张图记住三条线的差别FCFS 照排队上下乱跳SSTF 只在近处来回转SCAN 单向走到头再回头第二张图记住 SSTF 的灵魂每步都要重新站位置算距离。两张图连起来看SCAN 多了方向这个变量SSTF 只认距离FCFS 什么都不认照排队走。考试让你排完一种算法再排另一种就是换个规则重新排一遍。把这两张图默画在草稿纸上做题时照着走不容易漏步骤。考场上草稿纸就这么用画个磁头位置线排一个划一个。七、自测五题答案在本节末尾先合上前面的内容凭印象做做完再对答案。哪题错了回对应小节重看别直接翻答案。SSTF 算法选择下一个服务对象的依据是 。A. 请求到达时间最早 B. 离当前磁头位置最近 C. 柱面编号最小 D. 柱面编号最大SCAN 算法和 SSTF 最大的区别是 。磁头在 50 号柱面请求 10、90、30、70按 FCFS 排顺序并算总寻道长度。磁盘调度主要优化的是哪段时间 A. 旋转延迟 B. 传输时间 C. 寻道时间 D. 校验时间SSTF 可能导致远处请求一直得不到服务这种现象叫 。答案1. B2. SCAN 先定方向、单向走到头再掉头不只看距离3. FCFS 顺序 10→90→30→70总寻道 40806040 2204. C5. 饥饿。错了回第三节对应考点小节和第四节重看。第 3 题要是算错多半是 FCFS 顺序抄错——它不用动脑照请求原顺序抄就行。七补、本篇题库5 道易→难题 1自编易磁头在 50请求 30、70。按 FCFS 顺序响应总寻道多长答案50→3020→704060。解析FCFS 照请求原顺序每步绝对值相加。回指第四节 FCFS 演示。题 2自编易SSTF 算法每次选择依据是什么A. 请求到达时间最早的 B. 距当前磁头最近的 C. 柱面号最大的 D. 柱面号最小的答案B。解析SSTF Shortest Seek Time First最近先服务。回指第三节 SSTF 考点。题 3改编真题中磁头在 100请求 80、120、140。按 SCAN往大方向排顺序并算总寻道。答案100→12020→14020→80掉头|80−140|60。总寻道 202060 100。解析SCAN 先捎方向上的请求走到头再掉头。回指第四节 SCAN 演示。题 4自编中下列哪种调度算法可能导致远处请求饿死A. FCFS B. SSTF C. SCAN D. C-SCAN答案B。解析SSTF 只认距离近处新请求不断插队远处永远轮不到。回指第三节饥饿现象。题 5改编真题难磁头在 20请求 10、30、50、5。按 SSTF 排响应顺序。答案20→1010→55→3025→5020。序列10 → 5 → 30 → 50。解析每步以当前磁头位置为基准重算最近。20 时最近是 10差10到 10 后最近是 5差5到 5 后最近是 30差25到 30 后剩 50。回指第四节 SSTF 演示。八、本篇技术英语高频词seek[siːk]「西克」寻道磁头找道的动作就是这篇的核心词arm[ɑːm]「阿姆」磁臂读头装在这根臂上cylinder[ˈsɪlɪndə®]「西-林-得」柱面调度题里报的就是它的编号scheduling[ˈʃedjuːlɪŋ]「谢-丢-林」调度queue[kjuː]「Q」请求队列就念字母 Q短得很真实句子操作系统模拟器教学页原文“Disk scheduling is the method that computer operating systems use to decide in which order the block I/O operations will be submitted to storage volumes.”来源https://ddpigeon.github.io/os-simulator/Disk/disk.html三步拆读先找动作词——is是再找谁在动——Disk scheduling磁盘调度that 后面一大串修饰 method先跳过抓主干磁盘调度是一种方法。再拼修饰操作系统靠它决定块 I/O 请求按什么顺序提交给存储卷。断句位置Disk scheduling / is the method / that computer operating systems use / to decide in which order / the block I/O operations will be submitted / to storage volumes.关键生词submit「色布-米特」提交storage volume「斯多-瑞奇 沃-留姆」存储卷。block I/O 就是块读写操作系统读磁盘的基本单位。跟读动作手机词典搜这句听 3 遍跟着读 1 遍。读顺了你会发现这句说的就是咱们这篇整篇干的事。真实场景练习打开上面那个 os-simulator 页面CtrlF 搜 “FCFS”把搜到的那句读出来、翻译成中文再顺着找 SSTF、SCAN 的原句各念一遍。这些词混个脸熟以后看英文技术文档不怵。心理松绑发音不标准没关系能读个大概就行。考试不考口语认得出词、敢顺着念出来目的就达到了。九、必背清单考前一天把这十条过一遍每条都是能直接写进卷子的短句。别死背对着大例背。磁盘访问三段时间寻道 旋转等待 传输寻道是大头。磁盘调度只优化寻道时间。FCFS 按请求顺序服务公平但折返多。SSTF 每步挑离当前磁头最近的请求。SSTF 服务完一个当前磁头位置就变了必须重算距离。SSTF 的毛病远处请求可能饿死。SCAN 像电梯定方向走到头再掉头。C-SCAN 走到头跳回起点单向循环。总寻道长度 每步移动距离绝对值之和。先移臂调度定柱面再旋转调度读扇区。这十条对着第四节大例背FCFS 498、SSTF 248、SCAN 250三个数一对比谁快谁慢一目了然。背的时候别死记对着第四节大例背每条规则你都能手排一遍就算真背下来了。十条里最容易错的是第 5 条——每步重算位置考试就考这个细心。十、速记表 复习计划考点一句话FCFS先来先服务按原顺序SSTF每步挑最近小心饥饿SCAN定方向走到头再回头总寻道每步绝对值加起来易错每步重算当前位置这张表考前五分钟扫一眼比临时抱佛脚强。本篇复习计划1-3-7 天今天把第四节大例三种算法自己重排一遍别照抄明天自测五题重做错哪题回哪节周末把本篇和第 02 篇存储层次、第 03 篇流水线串起来过——都是计算机系统基础计算题组手感是通的。下篇预告第 05 篇图论——Dijkstra 最短路径为什么绕路反而更短关键路径怎么找下一篇手把手跑一遍。互动提问磁头在 50请求 10、90、30、70按 SSTF 排出来的序列是什么和 FCFS 比少跑了多少评论区算算看。本篇就到这儿。合上书你应该能看着磁头位置和请求序列三种算法各排一遍顺序、算出总寻道长度。这就是磁盘调度的全部考点。考试时别慌记住那句口诀——每服务完一个磁头位置就变了。算总寻道时一步一步列绝对值别跳步。明天复习时别光看动手把第四节大例重排一遍——看得懂和排得对中间隔着一次亲手算。下一篇图论会接着这种一步步排的手感给你一张带权图求从起点到各点的最短距离。同样是规则死、套路稳练熟就拿分。周末见。磁盘调度这章就聊到这儿考试见真章别慌一步一步来。