ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

2022年408真题详解:DMA方式与外存磁道扇区计算核心考点

2026/10/1 16:14:24 拓冰建站 浏览量
2022年408真题详解:DMA方式与外存磁道扇区计算核心考点 1. 这道真题背后牵出的两条知识主线先从题目的出处说起。这是2022年408计算机统考卷的第44题按往年命题习惯44题在整张试卷里的位置通常是“计算机组成原理”的大题区分值在8分左右考查的从来不是孤立的某个概念而是把I/O控制方式和外存计算拧在一起综合出题。题目本身聚焦在两个地方一个是I/O设备与主机之间进行信息传送的控制方式也就是DMA方式另一个是外存的物理结构计算涉及磁道、扇区这类基本参数。但别小看这两个考点它们恰好是计算机组成原理应试里最容易“听懂但做不对”的典型模块。先说DMA。很多同学复习到这一块能背出DMA的英文全称Direct Memory Access也知道它是“直接存储器访问”但一问到“DMA为什么能减少CPU开销”“传送过程中CPU到底在干什么”“DMA和中断有什么关系”就开始含糊了。2022年的考题之所以把DMA单独拎出来出大题就是因为它既考概念理解又考机制流程还考和中断控制方式的对比关系——这几层考核目标光靠背书是没用的。再说磁道和扇区。这块知识点看起来更像“算术题”已知磁盘转速、扇区大小、磁道数求容量、求数据传输率、求平均等待时间。但它真正的难点从来不是公式本身而是单位换算和概念边界。比如扇区是磁盘物理结构的最小可寻址单位但格式化之后还有逻辑结构再比如磁盘的“平均寻道时间”和“平均旋转延迟”很多同学计算时会把两者弄混。2022年这道题在命题上就是精准踩中了这些易混淆点导致当年的得分率并不高。所以这篇文章的思路很明确我把这道真题涉及的两条知识主线彻底拆开先讲清楚DMA方式的来龙去脉再把外存计算的公式和易错环节逐项过一遍最后给出这类题的标准解法和备考建议。无论你是正在准备408统考的学生还是想补一补组原基本功的开发者这篇文章都值得你花十几分钟读完。2. DMA方式I/O控制方式里的“重头戏”2.1 为什么DMA能站在I/O控制方式的“最高位”要说清楚DMA必须先把它放进整个I/O控制方式的发展序列里看。计算机组成原理教材里I/O设备与主机之间的信息传送控制方式通常列了四种程序查询方式、程序中断方式、DMA方式、通道方式。这四种方式是一个比一个“省CPU”也一个比一个“复杂”。程序查询方式是最原始的。CPU每隔一段时间就去检查I/O设备的状态看看数据准备好了没有。这个过程好比你在食堂等菜隔几秒就问一次厨师“好了没”厨师没做好你就在窗口干等CPU的大量时间就这么白白耗掉了。程序中断方式进步了一点。设备准备好数据后主动“喊”CPU一声CPU再停下当前工作来处理I/O。这相当于厨师做好菜后按铃通知你你不用干等了但问题是每传送一次数据就要打断一次CPU如果数据量很大CPU依然要被频繁打断开销还是很可观。DMA方式则是把“搬运”这个动作从CPU手里彻底解放出来。它的核心设计思想是CPU不再负责逐字逐句地把数据从I/O设备搬到内存而是把这个任务“外包”给一个专门的硬件控制器——DMA控制器由它直接控制I/O设备和内存之间的数据传输。这么做的好处非常直接一次DMA传送可以连续传输一整块数据CPU只在传输开始和结束时介入中间完全不用管。还是拿食堂类比前面两种方式是你一趟一趟自己去端菜DMA则是你请了一个专门帮你端菜的人你只需要说一句“帮我把这桌菜端到3号桌”等他说“端完了”你再确认一下就行中间的时间你可以干别的。所以教材里给DMA的定义才强调它是“主存和I/O设备之间直接传送数据的硬件机构”关键就是这两个字直接。这里顺带说一句通道方式比DMA还要进一步它用通道指令来控制多台设备的数据传输但考研大纲对通道方式的考察基本停留在概念层面真正的计算和流程题几乎都集中在DMA上这也是为什么2022年这道大题偏偏挑了DMA来出。2.2 DMA传送流程拆解谁在什么时间点干什么DMA的传送过程考试最喜欢考而且考得很细。我把它拆成三个阶段来讲每个阶段都要清楚CPU、DMA控制器、I/O设备三者的角色分工。第一阶段传送前的准备。CPU执行一段I/O指令向DMA控制器写入三样关键信息主存起始地址、要传送的字数、设备地址同时启动设备。这个阶段的本质是“CPU交代任务”所有参数都由CPU来设置DMA控制器此时只是一个“听从指令的下属”。第二阶段数据传送。这是DMA真正干活的时间。I/O设备每准备好一个数据就向DMA控制器发一个DMA请求DMA控制器收到请求后向CPU发送“总线请求”要求占用系统总线。CPU在完成当前指令周期后响应这个请求把总线的控制权交给DMA控制器注意这里的响应机制叫周期挪用或周期窃取后面细讲然后DMA控制器就直接在设备和内存之间搬数据。这个过程里CPU没有参与数据的搬移但它也没完全闲着——它可能继续执行不需要访问总线的指令比如算术运算、寄存器操作等。第三阶段传送结束。当规定的字数全部传送完毕DMA控制器会向CPU发出一个“传送结束”的中断请求。CPU响应这个中断转而执行中断服务程序做一些善后工作比如校验数据、更新程序状态。注意这个中断和程序中断方式里的中断不一样它是DMA传送结束后的中断不是“每传送一个数据中断一次”。这是考试最爱挖坑的地方很多考生一看到“中断”两个字就默认是传统的中断I/O方式然后整道题的分析就跑偏了。看起来流程不复杂但有几个细节你必须刻进脑子里整个DMA传送过程数据的“源”和“目的”都在硬件控制下完成不需要CPU执行“取数指令”或“存数指令”。CPU响应总线请求不是马上让出总线而是等当前指令周期结束。所以DMA对CPU的影响是“一个指令周期级别的延迟”不是“数据传送过程中CPU完全停摆”。DMA传送结束后发的中断请求和传统I/O中断在中断类型、优先级、处理流程上都有区别。2.3 周期挪用DMA怎么“蹭”总线而不把CPU“饿死”DMA控制器在数据传送时不是“霸占”总线不放而是采用“见缝插针”的策略这就是教材里反复提到的周期挪用。为什么需要这么设计因为总线是公共资源CPU执行指令也要用总线去取指令、读写数据如果DMA控制器一上来就把总线独占CPU就会因为没有总线可用而被迫“饿死”系统性能反而会大幅下降。周期挪用的做法是DMA控制器只在设备“准备好一个数据”的那个时间点申请占用一个总线周期把这个数据搬到内存然后立刻释放总线。由于一个总线周期很短通常只有几个时钟周期CPU感受到的只是“被插了一小下队”整体运行基本不受影响。打个比方就更直观了CPU是主路上正常行驶的车DMA控制器是从匝道上来的车它不会强行并入主路占住一整条车道而是在主路车流的空隙里并进来走一小段就靠边停下等下一个空隙再走。这个“空隙”就是DMA挪用的总线周期。2022年这道题在DMA部分如果出到计算题十有八九会让我们计算“DMA传送期间CPU被挪用了多少个周期”或者“DMA连续传送一串数据需要多久”这就是周期挪用概念在算术层面的直接落地。等会儿我在讲真题解法的时候再展开。2.4 程序中断方式和DMA方式一张表把区别说透备考这一块你还得有一个随时能调出来的“对比清单”。我整理了下面这张表它浓缩了程序中断方式和DMA方式最核心的区别也是历年真题选择题、大题第一问最爱考的点。对比维度程序中断方式DMA方式数据传送的基本单位一个字或一个字节数据块谁负责数据搬运CPU执行中断服务程序搬运DMA控制器硬件搬运打断CPU的频率每个数据传送一次都要打断整块数据传送完才打断一次传送路径I/O设备→CPU→主存I/O设备→主存CPU不参与响应时机在指令周期的执行阶段结束后在当前指令周期结束后周期挪用应用场景低速设备键盘、打印机高速设备磁盘、网卡、显卡是否有预处理和善后有中断服务程序本身有CPU做初始化结束后处理中断这张表你可以截图保存或者自己动手画一遍。画的过程中你会意识到DMA不是“取代”中断方式而是“分工”低速设备仍然适合用中断方式高速批量数据才非DMA不可。很多同学在这个知识点上犯的错误就是把两者的应用场景搞反了。3. 外存计算磁道、扇区、容量、时间一通百通3.1 先建立磁盘的物理模型从一张盘片说起外存计算题的核心是磁盘要做得顺手脑子里必须先有一个清晰的物理模型。我描述一下你跟着想象。一块磁盘由多个盘片叠放在一起每个盘片有上下两个面每个面上都覆盖着磁性介质数据就记录在这些面上。每个盘面从圆心向外划分出很多个同心圆这些同心圆就是磁道。磁盘在工作时磁头会定位到某一条磁道上而这条磁道又被划分成若干段圆弧每一段圆弧就是一个扇区。需要注意一个很重要的物理事实内圈磁道和外圈磁道的圆周长不一样但同一个盘面上每个磁道被划分出的扇区数是相同的至少在传统CHS寻址方式下是这样每个扇区能存储的数据量也是相同的通常是512字节或4KB。所以磁盘容量计算题的逻辑非常统一总容量 盘面数 × 每个盘面的磁道数 × 每个磁道的扇区数 × 每个扇区的字节数。这个公式看起来太简单了简单到很多同学大意失荆州。实际做题时最容易丢分的几个点如下盘面数和盘片数混为一谈。一张盘片有两个盘面题里说“硬盘有3个盘片”盘面数应该是6如果你的计算直接用3去乘结果就错了。磁道数和柱面数的关系。多个盘面上半径相同的磁道在空间上构成一个圆柱面叫柱面。同一时刻所有磁头定位在不同盘面上半径相同的那条磁道构成一个柱面。所以磁道数 柱面数两个词在计算里是同一个概念。扇区编号从0还是1开始。传统CHS寻址中扇区编号从1开始而LBA逻辑块寻址从0开始。不过考研计算题一般不会在这个地方设陷阱但你在读题时还是要留个心眼。3.2 磁盘容量计算的两种基本题型我把历年考题和练习题里出现过的容量计算归纳成两种题型。题型一直接给参数求总容量。题目会告诉你磁盘有几个盘片、每面有多少磁道、每磁道有多少扇区、每扇区多少字节然后直接求格式化容量或非格式化容量。这种题没有理解难度纯粹考验你单位换算和公式记忆。唯一需要留意的是格式化容量和非格式化容量是有区别的非格式化容量是物理上能记录的数据量格式化容量要扣除扇区之间的间隔、校验位等占用空间所以格式化容量通常小于非格式化容量。但考研计算题如果不特别强调“格式化”一般默认按非格式化容量处理。题型二结合文件大小求占用的存储空间。这种题会绕一点。比如题目给出磁盘容量参数再给一个文件大小问文件占用了多少个扇区、多少条磁道。解题关键是记住文件在磁盘上的存储以扇区为最小单位即使一个文件的末尾只用了一个字节它也要占满整个扇区。这个“向上取整”的逻辑是每年都有考生做错的点。3.3 磁盘读写的时间账寻道、旋转延迟、传输时间容量计算只是前菜真正让外存题有区分度的是时间计算。磁盘读数据的时间由三部分构成寻道时间、旋转延迟、传输时间。寻道时间磁头从当前磁道移动到目标磁道的时间。题目如果没有特殊说明平均寻道时间会直接给出。旋转延迟目标扇区旋转到磁头下方的平均时间。这里有一个经典的结论平均旋转延迟 磁盘旋转半圈所需的时间。如果转速为r转/分钟那么平均旋转延迟 60 /2 × r秒。比如转速为7200转/分钟平均旋转延迟就是60 / 14400约等于4.17ms。传输时间磁头读取整个目标数据块的时间。如果读取的数据跨越多个相邻扇区传输时间的计算就要结合转速和扇区数一起来而不是简单地套公式。很多同学在算总时间时把“平均旋转延迟”和“平均寻道时间”直接相加再加传输时间公式背得滚瓜烂熟但忽略了一个前提如果连续读取的数据在磁道上恰好相邻旋转延迟只需要计算一次。比如题目要求读取一个扇区的数据你寻道结束后磁头停在某个位置目标扇区可能刚好就在磁头下方也可能还要再等接近一整圈平均下来才是半圈这个逻辑没问题。但如果要连续读N个扇区且这N个扇区在磁道上连续排列那读第一个扇区前要等半圈之后的数据在磁头下方依次转过就不再计入新的旋转延迟了。这个细节在2022年真题那道外存计算里极其关键稍后结合真题我再说一遍。3.4 做题时容易踩坑的三个“单位陷阱”外存计算题错得最多的不是不会算而是单位没换算对。我把历届学生踩过的坑集中列一下。第一个坑是分钟和秒、毫秒的换算。转速的单位通常是“转/分钟”rpm但时间计算需要的是“转/秒”所以要先除以60再代入公式。如果你嫌麻烦想直接用毫秒也要小心别把60这个系数漏掉。第二个坑是数据量的十进制和二进制的差异。考研计算机组成原理领域惯例内存容量、磁盘容量如果题目用K、M、G默认按2的幂次计算KB 1024BMB 1024KB而很多硬件厂商公布容量时按十进制KB 1000B计算。考研题目一般会在题干里明确提示用哪种进制但个别年份的题目不提示这时候你要根据题目的“风格”来判断。稳妥的做法是看到磁盘容量、数据传输率这些和存储介质相关的物理参数优先检查题目有没有给换算比例如果没给用2的幂次去算然后看看选项或结果是否合理。第三个坑是扇区大小给的是字节数而题目要求的结果是KB或MB。这种题如果换算错一步后面全部白算。我的建议是做题时把所有单位先统一成“字节”最后一步再换算目标单位。4. 真题实操2022年第44题的命题逻辑与标准解法4.1 先把题目“翻译”成人话我不打算把真题的完整题干一字不差地搬上来因为回忆版和原卷可能会有细节差异但从考点结构来看这道题的设计思路非常清晰前半部分考DMA传送的时间或CPU开销计算后半部分考磁盘磁道、扇区的参数计算两者通过“读磁盘上的某个文件”这个实际场景串起来。这类题的题干通常会这样展开某磁盘的磁头从当前磁道移动到目标磁道需要多少毫秒磁盘转速是多少转每分钟每个磁道分成多少个扇区每个扇区多大现在CPU使用DMA方式从磁盘读取若干扇区的数据问总耗时或者问在DMA传送期间CPU被挪用的情况下CPU有效工作时间占比是多少等等。换而言之一道题里同时考了三件事寻道时间的理解、旋转延迟的平均计算、DMA周期挪用的时间折算。很多考生一上来就慌觉得又是DMA又是磁盘又是传输时间信息量太大。但只要你按下面这个顺序拆解题目就原形毕露了。4.2 标准求解路径三步走第一步分清题目要你求的是“总时间”还是“CPU开销”。如果是总时间你要把所有物理等待时间全部算进去如果是CPU开销你只关心DMA挪用总线的次数和每次挪用的时间。第二步计算磁盘读数的物理时间。这部分分三个子步骤寻道时间题目直接给或者让你从磁道距离推算。旋转延迟题目给转速你用公式算平均旋转延迟。传输时间根据扇区数和转速确定。如果数据在一条磁道上连续存放传输时间大约是“扇区数除以每磁道扇区数”再乘以“旋转一圈的时间”。这里有个细节很多参考书都不点破由于磁道是一个圆环扇区是圆弧数据在磁道上连续排列时整条磁道的扇区相当于等分了这个圆环的周长所以时间上天然和转速成比例。第三步把DMA传送时间和CPU的“被挪用时间”挂上钩。你需要知道一次DMA请求“挪用”的总线周期数乘以总请求次数就得到DMA对CPU的总干扰时间。然后看题目问“CPU在这段时间内有多少时间可用于执行原程序”或是“DMA传送占用了多少比例的时间”按比例算式计算即可。这三步看似独立实则环环相扣物理时间算错了DMA那边的时间基数就错了DMA挪用的次数算错了总时间的口径就错了。这也是真题最阴险的地方它不直接考你一个孤立的公式而是让你在整套流程里跑一遍。4.3 我做题和讲课时积累的三个实战心得讲完标准解法说点参考书上看不到的东西。这道题我在备考阶段做过也给我的学生讲过好几轮有几个心得值得单独拿出来。第一个心得DMA传送的“时间”计算题目可能用“总线周期”作单位也可能直接用“秒”作单位。如果给定的系统时钟频率是100MHz一个总线周期就是10ns而磁盘的传输时间是毫秒级两者相差几个数量级。你算出来的DMA挪用时间通常远远小于磁盘物理等待时间所以在最终求“总耗时”的时候DMA挪用时间往往是可以“并入”而不是“叠加”的——它发生在CPU总线空闲的空隙里不额外增加磁盘读数的物理耗时。这个细节在答案里写清楚能给阅卷老师很专业的印象。第二个心得不要忽略“磁头初始位置”对寻道时间的影响。很多题目会明确告诉你“磁头当前位于0号磁道”让你移到目标磁道这时候寻道距离就是磁道编号差值。但如果题目只说“平均寻道时间是t”那就直接用t不要自己再纠结磁道距离。判断清楚题目的“粒度”比多算一步更值钱。第三个心得扇区计算题的“逻辑块”和“物理扇区”不是一回事。在LBA寻址模式下操作系统看到的是一串连续的逻辑块号和物理的磁道、扇区之间有一个换算关系。真题如果出现“逻辑块号N对应哪个磁道和第几个扇区”这种问法你要用除法取整来定位。先算一个磁道有多少个扇区通常还要乘上盘面数因为柱面内的所有盘面共享同一编号然后用逻辑块号除以“每柱面扇区数”得到柱面号余数再除以“每磁道扇区数”得到磁头号最后取余得到扇区号。这个换算逻辑是考试的热点不要以为不会考。5. 备考建议与避坑清单5.1 把散点串成体系用“一条传送链路”串起所有考点我见过太多考生的复习方式是孤立地背知识点DMA单独背磁盘计算单独练中断又单独做笔记。等到上了考场面对44题这种综合大题一旦信息交叉就开始慌神。其实这些考点在真实计算机里本来就是一体的备考也应该按“一条传送链路”来组织。这条链路是外设准备好数据 → 向DMA控制器发请求 → DMA控制器向CPU申请总线 → CPU让出总线 → DMA把数据从外设存入主存 → 数据传送完毕 → DMA向CPU发中断 → CPU做善后处理。你可以顺着这条链路把每个环节分别对应的考点都写下来第一个环节对应I/O接口与设备的状态第二个环节对应DMA请求与响应机制第三个环节对应周期挪用和总线控制权第四个环节对应DMA传送的数据路径不经过CPU第五个环节对应DMA传送结束后才发中断第六个环节对应中断处理程序的开销比逐字传送小得多。这样串完之后你再去做44题你会发现题目考的不再是“散装知识点”而是这一条流水线上几个关键节点的计算。5.2 常见错误速查表做题前先对一遍为了帮大家在最短时间内排查低级错误我把带过的学生在这两个知识点上最容易犯的错误全部整理成一个速查表表里的每一项都是真实发生过的失分案例。错误类型错误表现正确理解盘片数与盘面数混淆3个盘片当3个盘面算一个盘片有上下两面盘面数 盘片数 × 2每个磁道扇区数漏乘盘面只算单面数据量容量计算要把所有盘面都考虑进去平均旋转延迟公式记反平均旋转延迟 转一圈时间平均旋转延迟 转半圈时间DMA中断理解偏差认为DMA每传一个数据就发中断DMA只在整块数据传完后发一次中断周期挪用影响范围错误认为DMA占用总线期间CPU完全停止CPU仍可执行不访存的指令LBA与CHS换算不熟直接用逻辑块号除以每磁道扇区数要先除以“每柱面扇区数”得到柱面号这里再说明一下“每柱面扇区数”怎么来的每柱面扇区数 一个盘面的磁道扇区数 × 盘面数。因为柱面的定义就是“同一半径的所有磁道”所以一个柱面里实际包含多个盘面上的所有同半径磁道定位数据时先找柱面再找哪个盘面最后找该盘面上磁道的哪个扇区。5.3 应试技巧这道题怎么保证不丢分最后说几个非常实际的考场技巧。第一书写时把计算步骤列清楚不要跳步。阅卷是按步骤给分的这一问求旋转延迟下一问求传送时间即使最终数字错了前面公式和代换对的步骤也有分。很多考得不理想的同学不是不会而是把中间过程全部心算最后填一个数字上去错了就是整题覆没。第二注意题干中的“平均”“最大”“最小”等限定词。如果题目问“平均旋转延迟”直接用半圈的公式如果题目问“最坏情况下旋转延迟”那就要按一整圈来算因为最坏情况是目标扇区刚刚从磁头下方转过。用半圈算最坏情况是每年都有人踩的坑。第三DMA相关的最终结论尽量用“CPU不参与数据搬运只在传送开始和结束时介入”这类关键句收尾。答案的得分点有时候不只在数字上关键的文字表述也能体现你对机制的真正理解尤其是题目最后一问往往问“采用DMA方式的优点是什么”这类送分题绝不能丢。6. 写在最后这类题的本质是“把机制转换成一笔账”回到2022年的这道44题它真正想考察的是一个人对计算机运行机制的理解深度。DMA不是一组让人背的英文字母它是对“CPU本该忙到焦头烂额”这个问题的工程化解法磁道和扇区也不是一堆让人套的公式它们是数据在物理世界上最真实的落脚点。把机制弄懂之后你就会发现所有看起来复杂的计算本质都是把机制里每一步“时间开销”一笔一笔算清楚而已。我个人在实际备考和带练中的体会是与其大量刷题不如把一道综合题嚼透。你把44题的DMA机制、周期挪用、寻道时间、旋转延迟、传输时间、LBA换算这些点老老实实推演三遍比盲目做十道“套路重复”的题有效得多。刷题的目的是见怪不怪而把机制推导到算无遗策才是上考场前最踏实的准备方式。