ARTICLE DETAIL

资讯详情

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

DMA与磁盘计算双考点,22年408第44题彻底拆解

DMA与磁盘计算双考点,22年408第44题彻底拆解 22年408考完那天下考场我印象里大家都在对44题。这道题没有考什么偏门知识点就是I/O子系统里的DMA方式和磁盘外存的磁道扇区计算但恰恰是把这两块内容焊在一起让不少基础不牢的同学在考场上一卡卡半天。我当时看到题目反而踏实因为DMA的机制和磁盘容量计算这两块是我复习时专门下过功夫啃透的属于考纲里性价比极高的送分点。这篇文章就把这道题背后需要的东西完整拆一遍。不管你是25考研还是26考研只要目标是408或者自主命题的计算机组成原理I/O控制方式和大容量外存这章基本就两种考法一是概念机制思辨二是数字计算。这篇文章会从考情定位、DMA原理、磁盘计算基本功、真题演示、避坑指南五个角度展开帮你把这两个知识点彻底吃透以后再遇到这类题目能保证至少拿下70%的分数。1. 考情定位22年44题究竟在考什么1.1 这题考了两个知识点的组合拳计算机408的大题最后两三道往往不是单独考一章而是喜欢把两个知识点串在一起。22年44题就是把“I/O设备与主机之间的三种控制方式”和“外存的物理结构计算”做了一个组合。命题老师的心思其实很好猜DMA方式是I/O控制方式里的重点磁道扇区计算是外存章节的必考计算两边单独考都太简单干脆放在一道题里让你先算磁盘参数再结合DMA传送方式去判断数据传输过程。从大纲角度看I/O控制方式要求掌握程序查询方式、中断方式、DMA方式的原理和区别外存部分要求掌握磁盘的物理结构、容量计算、存取时间计算。这两个知识点在王道书里分别处于I/O章节和外存章节但考试时它们经常手拉手出现。因为磁盘本身就是高速外设它和主机之间的数据传送最合理的控制方式就是DMA甚至高端点的场景还会涉及通道方式把两者综合在一起考既考察基础又考察灵活运用。1.2 这道题的得分点分布与命题逻辑大题的得分点一般按小问切分。44题这类题型典型的问法会包含三到四个递进层次第一问通常是基础计算比如求磁盘的平均存取时间或者某个扇区的读取耗时第二问会把控制方式拉进来问你某种传送方式下CPU需要参与多少次或者DMA和中断谁更合适第三问可能扩展到实际应用场景比如在连续读取大量数据块时计算传输时间。命题逻辑非常清晰先用计算题设置一个具体的磁盘参数环境再在这个环境里考察你对DMA机制的理解。很多同学第一问算对了第二问却答错因为第二问问的不再是纯数字而是“谁在何时接管总线”“CPU被占用了多久”这类机制问题。所以我反复强调复习I/O控制方式不能只背一句话定义要能把DMA的整个工作流程用图表复述出来才能在计算题与机制题的组合中真正拿稳分。提示王道和唐朔飞的教材I/O章节的重点永远是中断和DMA的比较。考研复习到这个章节时可以先把两种方式的流程图画一遍再做计算题效果会比直接刷题好很多。2. 核心知识一DMA方式为什么能扛住高速外设2.1 DMA的本质是让外设直接找内存“对话”先打一个生活化的比方。假设你是流水线上的一名工人你的任务是往仓库搬纸箱。程序查询方式就是你隔一会儿亲自跑去仓库看一眼有没有空位有就搬一个占用你全程的注意力中断方式就是你有事干仓库空了会打电话叫你来一个电话你就跑一趟搬一箱而DMA方式相当于你雇了一个专职搬运工你只需要交代一句“把这一堆箱子从A区搬到B区”搬运工自己就一趟一趟搬完了搬完再通知你一声。DMA的全称是Direct Memory Access直接存储器存取。它的核心思想就是在外设和主存之间开辟一条不经过CPU内部寄存器转手的数据通路。CPU只需要在传送开始前告诉DMA控制器数据的源地址、目的地址、要传多少字节然后就可以去干别的事了。DMA控制器自己接管总线完成数据块的搬运搬完才向CPU发出中断请求。这个机制让CPU从逐字逐句的数据搬运中彻底解放出来尤其在磁盘、网卡这类数据量大的场景下作用非常明显。2.2 DMA工作流程的四个阶段和三个传送方式DMA的完整工作流程可以拆成四段来记。预处理阶段CPU对DMA控制器初始化写入传送方向、内存起始地址、传送字节数然后启动DMA。数据传送阶段DMA控制器不断申请总线、获取总线控制权通过总线把外设数据直接写到内存或从内存读出送往外设。后处理阶段数据传送完毕DMA控制器向CPU发送中断请求CPU响应中断后做校验等善后工作。中断提交阶段操作系统处理这个中断判断这次传送是否成功收尾。如果你只记流程还不够因为DMA还有三种传送方式需要辨析。第一种是CPU停止法也叫成组传送方式DMA在传送一个数据块期间完全占用总线CPU不访存适合高速外设成批传送第二种是周期挪用方式DMA只在CPU不访问存储器的空隙里偷用总线传送一个或几个字效率高但对时序要求高第三种是交替访问方式把存储器的存取周期分成多个时间片CPU和DMA轮流访问本质上是CPU和DMA分时共享存储器带宽这种方式硬件上做得比较极致。真题如果出选择题问“DMA传送数据期间CPU能否访问主存”你没有分清传送方式就会答错注意看题目限定的传送方式是哪一种。2.3 DMA与中断方式的核心差异对照这部分几乎是每年必考我整理了一个对照表你复习的时候可以直接拿这个表作为记忆入口。对比维度程序中断方式DMA方式数据传送单位字节或字数据块CPU参与程度每传一个字节/字都要CPU处理预处理和后处理阶段介入传送阶段不介入数据传送路径外设→CPU寄存器→内存外设→内存直接传送不经过CPU内部寄存器中断请求时机每次传送完成后都请求一个数据块传送完成后才请求响应时机指令执行结束总线访问周期结束利用一时机不受指令边界限制优先级比DMA低比中断高适用场景低速设备、随机零散数据高速、成块、大批量数据这个表背下来之后你还要明白底层逻辑为什么DMA优先级高于中断因为DMA传送的是高速外设的数据如果响应不及时外设缓冲区可能直接被新数据覆盖导致丢数据所以DMA的优先级必须最高。而普通中断丢失一个字节的损失相对小可以稍微等一等。真题特别喜欢拿“中断与DMA的优先级比较”出一个选择题明白这个数据丢失的原理之后就不会死记硬背也不会记反。2.4 2022年44题中DMA的考法预判结合那道真题的题型特点DMA部分的设问一般集中在三处第一处是判断某个传送场景该用DMA还是中断比如低速的键盘输入用中断、高速的磁盘批量读取用DMA第二处是计算CPU被DMA“夺走”了多少总线时间比如磁盘的数据传输率已知求DMA控制器占据总线的时间比例本质上是考察“周期挪用”或者“CPU停止法”下的总线占用问题第三处是辨析DMA传送数据之前CPU要做哪些初始化工作。我见过很多同学在第二处失分因为需要知道“总线宽度”和“存储器存取周期”这两个参数才能算出DMA传送一个数据块需要多长时间。比如总线宽度32位即4字节存储器存取周期是40ns那么DMA传送4字节就需要一个存取周期40ns如果外设的数据传输率是5MB/s也就是每200ns产生1字节数据那DMA可以只在每40ns中挪用一小段时间。抓住“外设需求速率”和“存储器供给能力”这两个量的比较这类题就不难。3. 核心知识二磁道、扇区计算题的底层逻辑3.1 磁盘物理结构与编址方式先弄清楚磁盘存储器的物理结构。一个磁盘由多个盘片叠起来每个记录面上有若干同心圆磁道从外圈到内圈编号磁道又被划分成一个个弧线段每个段就是一个扇区扇区是磁盘读写的最小单位。多个盘面上同一半径的磁道构成一个柱面柱面这个词在计算磁道数时经常用到但计算磁盘存储容量时你其实只需要关注三个参数记录面数、每个面的磁道数、每个磁道的扇区数以及扇区字节数。磁盘编址方式有两种要分清楚。传统方式叫CHS编址即柱面Cylinder、磁头Head、扇区Sector三个维度定位一个扇区现代操作系统更多使用LBA逻辑块地址把整个磁盘线性编号成0号块、1号块、2号块这样连续的逻辑块。真题计算时如果题目给的是CHS参数你需要自己换算成LBA如果题目直接给LBA计算就简单很多。但无论哪种方式核心公式只有一个磁盘容量 盘面数 × 每面磁道数 × 每磁道扇区数 × 每扇区字节数。3.2 三道必背计算容量、平均存取时间、数据传输率第一道必背题是求磁盘容量刚才那个公式直接套就行。考试时偶尔会换个问法比如给出柱面数、磁头数、每个磁道扇区数实际上是同一个公式的换皮柱面数就是每面磁道数磁头数就是盘面数注意别被名词绕晕。如果题目问的是格式化容量和非格式化容量的差异非格式化容量是按磁道总物理空间计算的格式化容量要扣除每个扇区用于校验、标识的控制信息字节408真题很少直接考这两个概念的对比但选择题偶尔会出现。第二道必背题是求平均存取时间。磁盘读取一个扇区的总时间包括三部分寻道时间、旋转延迟时间、传输时间。寻道时间指磁头移动定位到目标磁道的时间题目通常直接给平均值旋转延迟时间指目标扇区旋转到磁头下方的时间平均是磁盘旋转半圈的时间传输时间指扇区数据经过磁头读出的时间等于扇区字节数除以磁盘数据传输率。把三个时间加起来就是一次完整读取的存取时间。很多同学把平均旋转延迟算错问题出在单位换算上转速7200转/分钟要换算成毫秒公式是平均旋转延迟 60 / 转速(r/min) × 1000 / 2单位是毫秒。第三道必背题是求数据传输率。磁盘的数据传输率有两种计算方式一种是外部传输率即磁盘接口向主机传送数据的速率常见有SATA接口6Gbps等另一种是内部传输率即磁头从盘面读出数据的速率计算公式是内部数据传输率 每磁道扇区数 × 扇区字节数 ÷ 磁盘转一圈的时间。考试考内部传输率比较多因为它和磁道扇区参数直接挂钩只要转速和每道容量定了内部传输率就定了。3.3 磁道扇区计算题里的四类单位换算陷阱计算题做得多了你会发现丢分往往不是因为公式记不住而是单位换算环节出错。我总结四个最容易踩的坑你复习时对着自查即可。第一个坑是转速单位的换算。题目给的转速是r/min但计算时要换算成转/秒或者每转需要多少毫秒。7200r/min转一圈需要约8.33ms这个数字要敏感。第二个坑是容量的数量级换算。1KB是1024B还是1000B在数据量语境中容易混淆计算机组成原理考试的标准是K1024但磁盘厂商容量的K1000考研真题基本按1024算除非题目明确用十进制。第三个坑是时间与速率搭配比如数据传输率单位是MB/s扇区大小单位是B先统一单位再算尤其注意MB是2的20次方字节而不是10的6次方。第四个坑是“平均”二字平均旋转延迟永远是半圈时间寻道时间如果题目给的是最小值与最大值平均就是两者相加除以二。4. 真题与高仿真题演示从读题到写出答案的三步走4.1 步骤一划出题目关键信息与隐藏条件由于原题卷面不便在公开文章里逐字复现我直接用一道在知识点分布和命题风格上与44题等价的高仿真题来演示解题路径。题目主干大致是这样某磁盘有4个记录面每面有512个磁道每个磁道分为64个扇区每扇区512字节磁盘转速为7200r/min平均寻道时间为4ms。磁盘采用DMA方式与主机交换数据总线宽度32位存储器存取周期为40ns。第一问求磁盘容量第二问求该磁盘内部数据传输率第三问求连续读取两个相邻扇区总共需要的时间第四问在这个场景中采用DMA方式比采用中断方式好在哪里。拿到这种组合题第一步不是急着套公式而是先把条件归位。记录面数、磁道数、每道扇区数、扇区字节数这四元组是计算容量用的转速和平均寻道时间是计算平均存取时间用的总线宽度和存取周期是DMA结合计算用的。把每个条件归属到对应的知识模块解题线索就清晰了。很多同学做错第二问是因为看到转速直接算“每秒转多少圈再乘以扇区数”忽略了内部数据传输率的本质是转一圈读出的数据量除以转一圈的时间本质是一样的但要注意单位。4.2 步骤二确定使用DMA还是中断并给出机制理由第三问的连续读取两个扇区有个细节值得特别提一下。磁盘读取第一个扇区和读取第二个相邻扇区时磁头不需要重新寻道但中间仍存在旋转延迟和连续的数据传输。如果你读第一个扇区花了平均寻道时间加平均旋转延迟加传输时间读第二个扇区是否还要再加一遍平均寻道时间答案是只要扇区连续且磁头没有换道第二个扇区的寻道时间几乎为零但可能仍然要等旋转定位除非题目明确说明两个扇区连续排列且一次DMA可连续传送。这种“是否要重复计入寻道时间”的判断就是命题组设下的陷阱分值不高但区分度很大。第四问的机制理由回答时要把DMA和中断的差异讲到位。这个场景磁盘是高速外设、连续大批量传送如果采用中断方式每传送一个扇区512字节CPU就要响应一次中断在中断响应、保护现场、恢复现场的过程中被反复打断CPU几乎被I/O操作占满而DMA方式只需要CPU在预处理阶段初始化一次数据以块为单位经由DMA控制器直接传送到内存传送完成后才产生一次中断请求CPU干预极少。我建议你回答时务必提到“数据块”三个字这是和“字节”对应的关键区别也是阅卷老师找的采分点。4.3 步骤三规范书写计算式与单位换算计算题最怕写了半天答案没有单位或者计算式跳步太猛。我建议你按以下节奏书写。第一问四个数值直接代入容量等于4乘以512乘以64乘以512字节算出来是67,108,864字节换算成KB时除以1024等于65536KB约为64MB。注意先算不换算单位最后统一换算这样不容易错。第二问内部数据传输率等于每磁道扇区数乘以扇区字节数再乘以转速除以60秒64乘以512乘以(7200/60)得3,932,160字节每秒约3.75MB/s。如果你把转速转换为每转8.33ms则一转到数据量32768B除以0.00833s约3.93MB/s两种算法结果一致才说明掌握了内在关系。第三问的连续读取时间第一扇区耗时4ms加半圈旋转4.17ms再加传输时间0.13ms(512B÷3.93MB/s)约8.3ms。第二个扇区磁头已对准下一磁道的起始位置磁盘会在转完当前扇区后继续旋转一个扇区角度才把第二扇区转到磁头下实际需要的大致是一个扇区传输时间加上额外旋转延迟。由于题目条件没说两个扇区紧密排列成一个块稳妥做法是分别计算两次读取并把寻道时间只算一次。把每一步的单位换算写在式子后面阅卷老师看到的关键过程分就拿到了。5. 复习中的高频误区和实用避坑指南5.1 四个一定不要搞错的概念细节第一个误区是把DMA理解成CPU完全不管。实际上CPU在DMA预处理阶段要做初始化工作DMA结束后CPU还要响应中断并做后处理只是传送阶段不参与不是全程撒手不管。第二个误区是搞混中断和DMA的优先级。考试题目一旦出现“DMA请求和中断请求同时到达CPU先响应哪一个”很多同学凭感觉会觉得中断更紧急这就错了。DMA的数据丢失风险远大于普通中断DMA优先级更高。除非题目特别说明是某种低优先级DMA场景否则一律按DMA优先答。第三个误区是算磁盘容量时把“每磁道扇区数”和“每扇区字节数”顺序搞反。虽然乘法交换律不会改变数值但如果你把公式写完整再代入可以避免丢掉过程分。第四个误区是把平均旋转延迟记成转一圈的时间。平均是半圈因为目标扇区出现在磁头下的位置是随机的平均等待是半圈时间这个点我身边至少有三个研友在模拟考时栽过跟头。5.2 真题答题与备考策略建议408真题的答题卡是白纸区域没有标准横线所以很多同学写字容易歪计算过程容易写得满天飞。我建议你平时练习时就养成先写“解”、再分行写计算式的习惯1MB等于1024KB这种换算过程也写出来哪怕算错了阅卷老师也会给公式分。另外注意44题这类大题的设问往往有前后关联第一问算错了后面的答案即使思路对也会跟着错所以第一问的容量计算一定要检查一遍乘法和单位换算别在第一问就丢掉整题的根基。备考策略上王道和唐朔飞的教材相关章节配套做两遍是基本盘。第一遍对着教材把中断和DMA的流程图抄一遍第二遍做课后题和真题把错题整理到I/O方式专项错题本里。外存计算题不需要刷大量偏题怪题把典型题做三遍比刷十道新题有用。我备考后期每天花20分钟重新默写一遍DMA四阶段流程和磁盘三个公式默写到不卡壳为止这个笨办法在22年44题上直接换成了分数。5.3 后续扩展你还可能遇到的相似考法如果2025年大纲继续延续近年的风格这个知识点还会变着花样出现。一种变体是结合SSD固态硬盘考察Flash存储器的随机访问特性比如没有寻道时间的概念访问时间主要由控制器的排队延迟决定另一种变体是结合网络设备比如网卡收发数据包时使用DMA直接访问主存缓冲区还有一种是结合操作系统课程考察DMA在Linux设备驱动中的实现角色虽然408不深究驱动代码但了解这个概念能在选择题中快速排除错误选项。如果你的目标院校是自主命题考查深度可能比408更细。比如会考DMA控制器的内部寄存器有哪些、每种寄存器的作用是什么比如会比较周期挪用中DMA与CPU交替访问存储器的时序波形。这些内容在唐朔飞教材的补充章节里都有但408统考基本不涉及完全看你的院校参考书目怎么定。给一个复习建议优先把408最近五年的真题做透再做你目标院校的真题最后用王道模拟题补盲区这个顺序经得起检验。我个人在实际复习中的体会是I/O和外存这两章特别适合用“总结表格自问自答”来学。把DMA与中断的对照表、磁盘三类计算公式、五种常见陷阱整理在一页纸上考前一个月每天过一遍比考前突击效果好太多。最后再分享一个小技巧做DMA和磁盘组合计算题时先在草稿纸上把参数按字母归类比如r表示转速、t表示平均寻道时间、B表示扇区字节数再把问题对应的公式画线连起来这样即使题目再长30秒内你也能锁定正确公式剩下的就是纯粹的算术了。希望这篇拆解能帮你把这两个知识点变成真正的送分题。
返回列表