ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

408真题解析:DMA与磁盘寻址综合考点全攻略

408真题解析:DMA与磁盘寻址综合考点全攻略 1. 从一道408真题说起DMA与磁盘寻址到底在考什么2022年计算机408统考第44题是一道把I/O控制方式和外存磁道扇区计算揉在一起的综合题。当年考完之后群里哀嚎一片不是因为题目有多偏而是因为它把两个平时分开复习的模块——DMA方式和磁盘地址结构——硬生生焊在了一道题里。很多人DMA背得滚瓜烂熟磁道扇区也算得飞快但一遇到“DMA传送过程中磁盘地址如何变化”这种交叉问法脑子就卡壳了。这篇文章就是围绕这道题所涉及的两块核心知识展开DMA方式的工作原理与传送流程以及外存中磁道、扇区、柱面的计算逻辑。我会把这两块拆开揉碎再重新拼起来让你看到它们是怎么在一道题里协同工作的。适合正在准备408统考的同学也适合本科学计算机组成原理、想搞懂“磁盘到底怎么读写”的在校生。不管你是刚学到第五章I/O系统还是已经刷完两轮真题在查漏补缺这篇内容都能帮你把这块硬骨头啃下来。先给个定心丸DMA和磁盘计算本身都不难难的是它们之间的连接点。一旦你理解了“DMA控制器在传送过程中如何与磁盘地址寄存器配合”这类题就是送分题。下面我从整体设计思路开始拆。2. 整体知识框架与考法拆解2.1 为什么408喜欢把DMA和磁盘放在一起考计算机组成原理的I/O系统章节核心就讲三件事I/O接口怎么和主机连、数据怎么传、传送过程谁来管。DMA方式是“数据怎么传”里的最高效方案而磁盘是“外存”里最典型的块设备。两者结合天然就是一道综合题的素材。从命题角度看DMA考的是控制权转移和传送流程磁盘考的是地址计算和容量计算。把两者放一起可以同时考察DMA控制器的寄存器配置内存地址、传送长度、磁盘地址磁盘的物理结构磁道、扇区、柱面、盘面数据块在磁盘上的定位方式DMA传送与磁盘读写的时序配合2022年44题的具体考法根据考生回忆和公开资料大致是给了一个磁盘参数每磁道扇区数、每扇区字节数等然后问DMA传送某个数据块时需要访问哪些磁道扇区以及DMA控制器中相关寄存器的变化。这就是典型的“交叉考点”。2.2 这道题涉及的核心知识清单我把这道题需要掌握的知识点整理成了一张表你可以对照检查自己哪里还有漏洞知识模块具体考点掌握程度要求DMA方式DMA控制器的组成AR、WC、DR等必须能画出结构DMA方式DMA传送流程预处理、数据传送、后处理必须能默写DMA方式DMA与中断的区别理解即可磁盘结构磁道、扇区、柱面、盘面的关系必须能计算磁盘结构磁盘地址的格式柱面号盘面号扇区号必须能换算磁盘计算容量计算、寻址时间计算必须能算交叉考点DMA传送时磁盘地址如何递增重点理解这张表里的每一行我都会在后面的章节里展开讲。你先看看自己哪一行心里没底重点攻克。2.3 复习顺序建议先DMA还是先磁盘我的建议是先磁盘后DMA。原因很简单磁盘的物理结构是具体的、可视化的你脑子里能想象出一个盘片在转、磁头在移动的画面。而DMA是抽象的控制器逻辑寄存器、信号线这些东西看不见摸不着。先把具体的磁盘搞明白再去看DMA怎么控制磁盘读写逻辑就顺了。反过来如果你先学DMA很容易陷入“AR、WC、DR到底怎么变”的细节里却不知道这些寄存器对应的是磁盘上的哪个物理位置。所以顺序很重要。3. DMA方式核心原理与实操要点3.1 DMA控制器的内部结构四个寄存器各管什么DMA控制器的核心就是几个寄存器理解了它们DMA就理解了一大半。我用一个生活化的类比来解释把DMA控制器想象成一个搬家公司内存是仓库A磁盘是仓库BDMA控制器就是那个调度员。内存地址寄存器AR记录数据要搬到内存的哪个位置。相当于搬家单上写的“送到XX路XX号”。传送长度计数器WC记录还要搬多少数据。每搬一次减一减到零就完工。数据缓冲寄存器DR临时存放正在搬运的那一件“货物”。数据从磁盘读出来先放这里再写到内存。设备地址寄存器DAR记录数据要从磁盘的哪个位置读。这个寄存器在磁盘场景下存的就是磁盘地址柱面号、盘面号、扇区号。这四个寄存器里AR和WC是每次传送都会变化的DAR在连续传送同一块数据时可能不变也可能按规则递增取决于题目怎么设定。2022年44题的关键就在于搞清楚DAR在传送过程中怎么变。注意不同教材对DMA寄存器命名略有差异唐朔飞版和白中英版用的符号可能不同但功能是一致的。考试时按题目给的符号来不要死记名字。3.2 DMA传送的三个阶段预处理、数据传送、后处理DMA传送不是一上来就传数据它有一个完整的流程。我把它分成三个阶段每个阶段做什么、谁来做都要清楚。第一阶段预处理。CPU负责完成。CPU要告诉DMA控制器数据从哪来磁盘地址、到哪去内存地址、传多少长度。这些信息通过程序写入DMA控制器的寄存器。同时CPU要启动磁盘设备让磁盘准备好数据。这个阶段CPU是主动的DMA控制器是被动的。第二阶段数据传送。DMA控制器负责。磁盘每读出一个扇区的数据就通过DMA请求信号通知DMA控制器DMA控制器向CPU申请总线使用权获得总线后把数据从磁盘经DR写入内存。每传一次AR加一或加一个步长WC减一。这个阶段CPU不参与可以去做别的事。第三阶段后处理。DMA控制器在WC减到零时向CPU发出中断请求。CPU响应中断检查传送是否正确然后做收尾工作。这个阶段CPU又回来了。三个阶段里第二阶段是考试重点尤其是AR和WC的变化规律。2022年44题考的就是这个阶段中磁盘地址和内存地址如何同步变化。3.3 DMA与中断的区别为什么磁盘要用DMA很多人会问磁盘读写也可以用中断方式啊为什么非要用DMA这个问题在408里经常以选择题形式出现但在综合题里理解它有助于你判断题目场景。中断方式下每传一个字节或一个字CPU都要响应一次中断保存现场、执行中断服务程序、恢复现场。磁盘的传输率很高比如一个扇区512字节如果每字节都中断一次CPU基本干不了别的。DMA方式下CPU只在开始和结束时参与中间的数据搬运由硬件完成效率高得多。用一个类比中断方式就像你每搬一件家具都要给老板打电话请示一次DMA方式就像老板说“这堆家具全搬过去搬完了告诉我一声”。显然DMA更适合磁盘这种大批量、高速的数据传送。实操心得考试时如果题目说“磁盘采用DMA方式”你就默认数据传送过程中CPU不干预所有地址和计数变化由DMA硬件自动完成。这个默认前提能帮你排除很多干扰选项。3.4 DMA传送过程中的地址变化AR和DAR的配合这是2022年44题的核心。我详细拆解一下。假设磁盘的地址格式是柱面号盘面号扇区号。DMA控制器中的DAR存放的是当前要读的磁盘地址。当传送完一个扇区后DAR需要指向下一个扇区。下一个扇区在哪里这取决于磁盘的物理布局。如果当前扇区不是所在磁道的最后一个扇区那么下一个扇区就是同一磁道内的下一个扇区号DAR的扇区号部分加一。如果当前扇区是所在磁道的最后一个扇区那么下一个扇区就是下一个磁道的第一个扇区。如果当前磁道是所在柱面的最后一个磁道那么下一个扇区就是下一个柱面的第一个磁道的第一扇区。这个递增逻辑就是磁盘地址计算的核心。DMA控制器需要知道这个逻辑才能自动更新DAR。而AR的变化就简单得多每传送一个字节或一个字AR加一或加字长指向内存中的下一个存储单元。2022年44题很可能就是给了你一个起始磁盘地址和一个传送长度让你计算传送过程中DAR如何变化或者问你需要访问哪些磁道。理解了上面的递增逻辑这类问题就迎刃而解。4. 外存磁道与扇区计算全解析4.1 磁盘的物理结构从盘片到扇区的层级关系磁盘的物理结构是一个层级关系我用从大到小的顺序理一遍盘片一个磁盘驱动器里可能有多张盘片每张盘片有两个盘面。盘面每个盘面有一个读写磁头。盘面数等于磁头数。磁道每个盘面上有一圈一圈的同心圆每个同心圆就是一个磁道。磁道从外向内编号最外圈是0道。扇区每个磁道被分成若干段每段就是一个扇区。扇区是磁盘读写的最小单位。柱面所有盘面上相同编号的磁道组成一个柱面。比如所有盘面的0道组成0柱面。这个层级关系必须记牢因为磁盘地址就是按这个层级编码的。通常磁盘地址格式是柱面号磁道号 盘面号磁头号 扇区号。为什么柱面号在前因为磁盘寻址时磁头臂移动是机械动作最耗时。把柱面号放在高位意味着相邻地址在同一柱面内磁头臂不用移动只需要切换盘面和扇区速度快得多。这就是“柱面优先”的寻址策略。4.2 磁道、扇区、柱面的计算关系与公式磁盘计算题的核心公式不多但必须熟练到条件反射。我整理如下磁盘总容量 盘面数 × 每面磁道数 × 每道扇区数 × 每扇区字节数这个公式是最基础的但考试时经常不直接给盘面数而是给磁头数磁头数盘面数。也不直接给每面磁道数而是给柱面数柱面数每面磁道数。磁盘地址的位数计算柱面号位数 log2(柱面数)盘面号位数 log2(盘面数)扇区号位数 log2(每道扇区数)总地址位数 柱面号位数 盘面号位数 扇区号位数寻址时间计算寻道时间磁头移动到目标磁道的时间旋转延迟目标扇区旋转到磁头下方的时间平均为半圈时间传输时间读写一个扇区的时间平均存取时间 平均寻道时间 平均旋转延迟 传输时间这些公式看起来简单但考试时经常在单位上做文章。比如转速给的是转/分你要换算成转/秒传输率给的是MB/s你要换算成字节/秒。单位换算是丢分重灾区。4.3 磁盘地址到物理位置的换算一个完整例子我用一个具体例子把上面的公式串起来。假设一个磁盘8个盘面1024个柱面每道64个扇区每扇区512字节。总容量 8 × 1024 × 64 × 512 256MB。磁盘地址位数柱面号10位2^101024盘面号3位2^38扇区号6位2^664总共19位。现在给一个磁盘地址柱面号500盘面号3扇区号20。问这个地址对应的物理位置在哪里答这个地址在第500个柱面即所有盘面的第500个磁道第3个盘面即第3个磁头该磁道的第20个扇区。如果要从这个地址开始连续读取100个扇区问需要访问哪些磁道计算从扇区20开始每道64个扇区。第500柱面第3盘面从扇区20到扇区63共44个扇区。还剩56个扇区。接下来是第500柱面第4盘面从扇区0到扇区55共56个扇区。所以需要访问第500柱面的第3盘面部分和第4盘面部分不需要换柱面。如果题目问的是“需要访问哪些柱面”那答案就是第500柱面。如果传送长度更大跨柱面了就要计算柱面号的变化。注意扇区号通常从0开始编号不是从1开始。计算时要注意题目给的起始扇区号。4.4 扇区编号的两种方式连续编号与交替编号这里要补充一个容易被忽略的知识点扇区的编号方式。有两种连续编号同一磁道内扇区按物理顺序编号0、1、2、3……这种编号方式下读完一个扇区后下一个扇区紧接着到来传输效率高。交替编号扇区按间隔编号比如0、4、1、5、2、6、3、7。这种编号方式是为了适应早期磁盘转速较慢、CPU处理速度跟不上的情况。读完一个扇区后CPU需要时间处理如果下一个扇区紧接着来可能来不及读。交替编号给CPU留出了处理时间。现代磁盘转速很快缓存也大通常用连续编号。但408考试里两种都可能出现题目会明确告诉你编号方式。如果没告诉默认连续编号。这个知识点在2022年44题里可能没有直接考但理解它有助于你判断“下一个扇区是哪个”这个问题。如果题目说“扇区按交替方式编号”那DAR的递增逻辑就完全不同了。5. 2022年44题完整解题思路与步骤复现5.1 题目场景还原与关键参数提取根据考生回忆2022年44题大致场景是一个磁盘采用DMA方式与主机交换数据磁盘参数为每磁道N个扇区每扇区M字节磁盘地址格式为柱面号盘面号扇区号。题目给出了起始磁盘地址和要传送的数据量要求计算传送过程中DMA控制器的相关寄存器变化以及需要访问的磁道范围。具体参数我无法完全还原但解题思路是通用的。关键参数包括每磁道扇区数决定扇区号何时进位到盘面号每扇区字节数决定传送长度如何换算成扇区数盘面数决定盘面号何时进位到柱面号起始磁盘地址柱面号、盘面号、扇区号传送总字节数把这些参数提取出来列在草稿纸上是解题第一步。5.2 第一步计算需要传送的扇区数传送总字节数除以每扇区字节数得到需要传送的扇区数。如果有余数说明最后一个扇区只传一部分但通常题目会设计成整除。比如传送4096字节每扇区512字节需要8个扇区。这一步看似简单但要注意如果题目给的是“传送一个数据块”而数据块大小是扇区大小的整数倍那就直接除。如果不是整数倍要向上取整因为磁盘读写以扇区为单位。5.3 第二步确定起始扇区在磁盘上的位置根据起始磁盘地址确定起始柱面号、盘面号、扇区号。然后计算从这个位置开始连续传送所需扇区数会经过哪些扇区。这里要用到4.3节的递增逻辑扇区号从起始值开始每次加一扇区号达到每道扇区数时归零盘面号加一盘面号达到盘面数时归零柱面号加一这个过程可以用一个循环来模拟也可以用数学计算直接得出结果。考试时建议用数学计算快且不易错。5.4 第三步分析DMA控制器的寄存器变化DMA控制器中AR初始值为内存起始地址每传送一个字节加一或每传送一个字加字长。传送结束后AR的值等于内存起始地址加上传送总字节数。WC初始值为传送总字节数每传送一个字节减一减到零时传送结束。DAR初始值为起始磁盘地址每传送完一个扇区后按磁盘地址递增逻辑更新。2022年44题可能问的是传送结束后AR、WC、DAR的值分别是多少或者问传送过程中某个时刻DAR的值。5.5 第四步计算需要访问的磁道数和柱面数根据起始位置和传送扇区数计算经过的磁道范围。如果传送过程中柱面号发生了变化还要计算经过的柱面范围。这个计算的关键是一个磁道能容纳多少个扇区。如果起始扇区号加上传送扇区数不超过每道扇区数那就只在一个磁道内。如果超过了就要跨磁道。跨磁道时下一个磁道是同一柱面的下一个盘面还是下一个柱面的第一个盘面这取决于盘面号是否达到最大值。5.6 完整计算示例从地址0x0000开始传送100个扇区我构造一个完整例子把上面的步骤串起来。磁盘参数4个盘面16个柱面每道8个扇区每扇区512字节。起始磁盘地址柱面0盘面0扇区0。传送100个扇区。计算过程每道8个扇区100个扇区需要100/812.5即13个磁道。从柱面0盘面0扇区0开始柱面0盘面0扇区0-7共8个扇区累计8柱面0盘面1扇区0-7共8个扇区累计16柱面0盘面2扇区0-7共8个扇区累计24柱面0盘面3扇区0-7共8个扇区累计32柱面1盘面0扇区0-7共8个扇区累计40柱面1盘面1扇区0-7共8个扇区累计48柱面1盘面2扇区0-7共8个扇区累计56柱面1盘面3扇区0-7共8个扇区累计64柱面2盘面0扇区0-7共8个扇区累计72柱面2盘面1扇区0-7共8个扇区累计80柱面2盘面2扇区0-7共8个扇区累计88柱面2盘面3扇区0-7共8个扇区累计96柱面3盘面0扇区0-3共4个扇区累计100所以需要访问柱面0到柱面3共4个柱面。最后一个扇区是柱面3盘面0扇区3。DMA寄存器变化AR初始值假设为0x1000传送100×51251200字节AR最终为0x1000512000x10000xC8000xD800。WC初始51200最终0。DAR初始柱面0盘面0扇区0最终柱面3盘面0扇区3。这个例子完整展示了计算过程。2022年44题的难度大概就是这个水平可能参数更复杂一些但逻辑是一样的。6. 常见问题与排查技巧实录6.1 扇区号从0还是从1开始这是最常见的坑。408考试里扇区号通常从0开始编号但有些题目可能从1开始。如果题目没有明确说明默认从0开始。如果从1开始计算时要特别注意边界。排查方法看题目给的地址范围。如果扇区号最大值等于每道扇区数那可能是从1开始如果最大值等于每道扇区数减一那就是从0开始。6.2 柱面号和磁道号是一回事吗在大多数教材里柱面号和磁道号是等价的。柱面是所有盘面上相同编号的磁道组成的集合所以柱面号等于磁道号。但严格来说磁道号是单个盘面上的概念柱面号是跨盘面的概念。考试时通常混用不影响计算。6.3 DMA传送时CPU真的完全不参与吗严格来说DMA传送过程中CPU不参与数据搬运但CPU可能还在执行其他程序。DMA控制器需要向CPU申请总线使用权这个申请和授予的过程是硬件完成的不需要CPU执行指令。所以从指令层面看CPU确实不参与。但如果题目问“DMA传送过程中CPU做了什么”答案可能是“执行其他程序”或“不参与数据传送”。不要答“什么都不做”因为CPU可能在做别的事。6.4 传送长度计数器WC减到0后会发生什么WC减到0时DMA控制器向CPU发出中断请求表示传送结束。CPU响应中断后进行后处理包括检查传送是否正确、处理错误等。然后CPU可以开始下一次DMA传送。如果题目问“WC为0时DMA控制器做什么”答案是“发出中断请求”。如果问“CPU做什么”答案是“响应中断进行后处理”。6.5 磁盘地址递增时扇区号、盘面号、柱面号的进位顺序这是2022年44题的核心考点。进位顺序是扇区号先加加到最大值后归零盘面号加一盘面号加到最大值后归零柱面号加一。这个顺序不能乱。用一个表格总结当前状态下一个地址扇区号 最大扇区号扇区号1其他不变扇区号 最大扇区号盘面号 最大盘面号扇区号0盘面号1柱面号不变扇区号 最大扇区号盘面号 最大盘面号扇区号0盘面号0柱面号1这个表格必须背下来考试时直接套用。6.6 常见计算错误速查表错误类型表现纠正方法单位换算错误转速转/分没换算成转/秒统一换算成基本单位再计算扇区号起始值错误默认从1开始看题目说明默认从0开始进位顺序错误扇区号没满就进位盘面号严格按扇区→盘面→柱面顺序传送扇区数计算错误字节数除以扇区大小没取整向上取整因为磁盘按扇区读写地址位数计算错误log2计算错误2^1010242^9512熟记常用幂次实操心得考试时遇到磁盘计算题先在草稿纸上画一个表格列出柱面号、盘面号、扇区号的起始值和结束值然后逐项计算。不要跳步跳步容易错。7. 复习建议与实战训练方法7.1 这块知识在408中的分值分布I/O系统和外存在408中通常占10-15分其中DMA方式可能考2-4分磁盘计算可能考3-6分。综合题里如果出现分值可能达到8-10分。所以这块内容性价比很高值得花时间攻克。从历年真题看DMA方式几乎每年都考要么选择题要么综合题。磁盘计算也是高频考点尤其是磁道扇区计算。2022年44题把两者结合说明命题组喜欢这种综合考法。7.2 推荐刷题顺序从课后题到真题我的建议刷题顺序是唐朔飞《计算机组成原理》课后题中关于DMA和磁盘的题目先做一遍熟悉基本概念。王道《计算机组成原理》单科书中的相关章节重点做DMA传送流程和磁盘计算的例题。408历年真题中所有涉及DMA和磁盘的题目按年份刷一遍。最后集中攻克2022年44题这类综合题总结交叉考点的解题套路。刷题时不要只做一遍做错的题要标记隔一周再做一遍。磁盘计算题尤其需要反复练习直到形成条件反射。7.3 自测清单这10个问题你能答上来吗DMA控制器有哪四个主要寄存器各自作用是什么DMA传送的三个阶段分别由谁负责DMA和中断的本质区别是什么磁盘地址的格式是什么为什么柱面号在高位磁盘总容量的计算公式是什么扇区号、盘面号、柱面号的进位顺序是什么平均存取时间由哪几部分组成传送100个扇区每道8个扇区需要访问几个磁道WC减到0时DMA控制器做什么如果扇区按交替方式编号DAR的递增逻辑有什么不同这10个问题能全部答上来这块知识就过关了。答不上来的回到对应章节再看一遍。7.4 考场上的时间分配与答题技巧408考试时间紧张综合题平均每题15-20分钟。遇到DMA磁盘的综合题建议先花2分钟读题提取关键参数然后在草稿纸上列出计算步骤再动笔写答案。答题时要注意写清楚计算过程不要只写结果。408综合题按步骤给分。单位要写清楚比如“扇区”“字节”“柱面”。如果计算量太大可以先写公式再代入数值最后算结果。遇到不确定的地方先跳过做完其他题再回来。注意408答题卡空间有限计算过程要简洁不要写太多废话。关键步骤和结果写清楚就行。7.5 从这道题延伸出去还能怎么考2022年44题考的是DMA磁盘地址计算但同样的知识点还可以这样考给出磁盘参数和传送数据量问DMA传送需要多少次总线请求。问DMA传送过程中CPU能否响应其他中断。问如果磁盘采用中断方式而不是DMA方式传送同样数据量需要多少次中断。问磁盘的传输率是多少DMA控制器需要多快的总线带宽才能跟上。问如果磁盘地址采用交替编号传送同样数据量需要访问的磁道数是否变化。这些延伸考法都需要你真正理解原理而不是死记公式。所以复习时要把原理搞透不要只刷题。我个人在实际教学和复习中发现很多同学卡在DMA和磁盘的结合点上是因为他们把这两个模块当成独立的知识点来背没有建立起“DMA控制器如何控制磁盘读写”这个整体图景。一旦你脑子里有了这个图景——DMA控制器拿着磁盘地址去磁盘读数据读到一个扇区就更新地址同时把数据搬到内存——所有计算题都变成了这个图景的具体化。所以先建图景再练计算顺序不能反。
返回列表