ARTICLE DETAIL

资讯详情

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

408计组44题:DMA控制流程与磁盘扇区计算全解

408计组44题:DMA控制流程与磁盘扇区计算全解 2022年408统考计算机组成原理的44题考后不少考生在群里讨论明明DMA和磁盘参数都复习过怎么合在一道题里就不会做了这道题的主干是把“I/O设备与主机进行信息传送的控制方式——DMA”和“外存磁道、扇区计算”两大考点串在一起既考控制流程的细节记忆又考容量、地址、时间的综合运算是典型的“知识都会组合报废”题目。这篇文章就把44题拆开揉碎先还原题目轮廓再把DMA方式的控制逻辑和磁道、扇区相关的容量、速率、地址、时间计算一个个讲透最后手把手推演完整解法。正在备考408、卡在计算机组成原理外设章节的同学或者期末复习计组综合题的人都比较适合读这一篇。1. 44题为什么值得单独拿出来琢磨1.1 一道题串联的两个考点板块先说结论44题不是偏题怪题而是把两个“必须掌握”的考点标准组合。第一个考点是I/O设备与主机之间信息传送的控制方式重点考DMA方式第二个考点是外存的物理结构重点考磁道、扇区相关的计算。很多备考的人习惯分开学这两个板块DMA像概念题背流程、背特点磁道扇区像计算题套公式、做换算。单出的时候正确率都不低组合成一个大题就暴露问题了——DMA的流程细节记不牢参数设置写不全磁盘计算的单位换算和地址换算又容易踩坑。44题恰好把这两类毛病一起考了所以它值得单独写一篇复盘而不是当作普通年份真题匆匆刷过。1.2 一份基于考后回忆的近似题干为了避免记错原卷措辞下面这份题干是根据考后回忆整理的近似版设问结构和原题对齐参数做了一定简化。对照真题册时你会发现考查的完全是同一套知识。某磁盘存储器有4个记录面每面2048个磁道每磁道分为200个扇区每扇区512字节磁盘转速为7200转/分平均寻道时间为4ms。该磁盘以DMA方式与主机交换数据。试回答该磁盘的存储容量是多少磁盘的数据传输率是多少若从该磁盘读取一个连续存放的100KB文件忽略DMA预处理与后处理的时间平均旋转延迟和总访问时间各是多少若某文件的起始逻辑扇区号为4095逻辑扇区号、柱面号、磁头号、扇区号都从0开始编号它对应的柱面号、磁头号、扇区号分别是多少DMA方式下CPU在预处理阶段需要向DMA控制器设置哪些参数DMA控制器如何判断一批数据传送完毕这五个问题基本覆盖了本板块的全部考点容量公式、传输率、三类时间、CHS地址换算、DMA控制流程。后面几节逐个拆。2. DMA方式CPU为什么要当“甩手掌柜”2.1 中断方式为什么扛不住高速设备先理解DMA被引入的背景。I/O设备与主机传送信息有程序查询、程序中断、DMA、通道四种控制方式。前面两种都有同一个问题数据传送需要CPU亲自参与。以程序中断方式为例外设每准备好一个字节就要向CPU发一次中断请求CPU必须响应中断、保护现场、执行中断服务程序把数据从设备寄存器搬到内存、再恢复现场。一次中断服务往往要执行几十条指令而磁盘这类设备的数据传输率动辄每秒数MB甚至更高如果每传一个字节都打断CPU一次CPU几乎什么事都干不了全在伺候硬盘。这里可以做一个生活化类比中断方式像是办公室来了急件每收到一页纸都要亲自跑一趟打印机取回文件DMA方式则是雇一个专职调度员攒好一整箱文件一次性搬回搬完一整箱才来汇报一次。这个“一整箱”在DMA里就是“一个数据块”。为了把区别说清楚可以把中断方式和DMA方式放在同一张表里对比对比维度程序中断方式DMA方式传送单位字节或字数据块数据通路外设到CPU寄存器再到内存外设直接到内存不经过CPU寄存器CPU介入程度每传送一个数据都要CPU处理预处理和后处理才需CPU介入传送过程CPU不参与请求时机每传送一个数据请求一次一个数据块传送完毕请求一次适用设备低速字符设备高速块设备如磁盘这也是为什么磁盘这类高速外设几乎都采用DMA方式与主机交换数据CPU只在开始和结束时出场中间的数据搬运全部交给DMA硬件完成。2.2 DMA三阶段预处理、数据传送、后处理DMA的完整工作流程必须按三个阶段记缺一个环节答案就不完整。预处理CPU执行I/O指令向DMA控制器写入参数包括内存首地址、设备地址I/O端口或设备编号、传送数据个数字数或字节数、传送方向内存到设备还是设备到内存。参数写完后CPU就可以继续执行其他程序不再介入数据搬运。数据传送DMA控制器获得总线控制权取代CPU掌管地址线、数据线、控制线。由DMA硬件控制外设与内存之间直接进行数据传送每传送一个字或字节内存地址寄存器加1、字计数器减1直到计数归零。这段过程完全不需要CPU执行程序。后处理字计数器减到0说明一批数据传送完毕DMA控制器向CPU发出中断请求CPU响应后执行中断服务程序检查传送结果、处理可能出现的错误。注意一个极易踩的坑DMA方式下数据传送不经过CPU内部的寄存器而是外设与内存之间直接通过总线交换。有些同学答“由CPU把数据从外设寄存器搬到内存”就把DMA和中断方式混为一谈了。CPU在数据传送阶段唯一需要让出的是总线控制权它自己可以继续运行与本次传送无关的计算任务只要不访存或者避开DMA占用的周期。2.3 三种DMA传送方式与一道常考选择题DMA控制器接管总线后和CPU怎么分时使用总线教材归纳为三种方式停止CPU访问内存DMA独占总线传送完一个数据块才把总线还给CPU。实现简单但传送期间CPU完全无法访存适合高速外设大批量且CPU暂时不需要访存的场景。周期挪用DMA在需要时向CPU申请借用几个存储周期用完立刻释放总线CPU和DMA交替访存。效率高电路更复杂这是408里最常考的方案。交替访存也叫透明DMA把每个存储周期划分为两个时间片一个分给CPU一个分给DMA。DMA的传送对CPU完全透明CPU完全感觉不到DMA活动。周期挪用还有个衍生考点如果CPU和DMA同时请求访存时谁优先结论是CPU优先因为DMA只是周期性挪用可以等下一个周期CPU正在执行的指令对访存是刚需拖久了会破坏时序。这三种方式常以一道选择题形式出现问你“哪种DMA传送方式对CPU的工作完全透明”——答案是交替访存。44题大题考不到这么细但算同一个知识板块顺手拿分也行。3. 磁道与扇区计算题容量、速率、地址、时间3.1 磁盘容量和传输率磁盘的物理结构分三个层次盘面上的记录面一个盘片两面都有记录面各对应一个磁头每个记录面上从外到内一圈一圈的同心圆磁道每条磁道上按角度划分的扇区。磁盘读写的最小单位是扇区所以格式化容量的核心公式是磁盘容量 记录面数 × 每面磁道数 × 每磁道扇区数 × 每扇区字节数代入44题参数4 × 2048 × 200 × 512 838860800 字节换算成MB是 838860800 / 1024 / 1024 800MB。注意这个公式默认所有磁道扇区数一致。现实中磁盘越靠外圈的磁道周长越长现代磁盘采用等密度记录外圈会放更多扇区但408计算题几乎都按传统模型简化处理题目给“每磁道200个扇区”就直接当作所有磁道统一。数据传输率分为内部和外部两个概念。内部传输率即介质传输率取决于磁盘转速和每磁道容量数据传输率 每磁道字节数 × 每秒转速每磁道字节数 200 × 512 102400B转速7200rpm要先换算成120rps所以传输率 102400 × 120 12288000B/s。再按1024进制换算12288000 / 1024 12000KB/s约等于11.72MB/s。考场建议保留KB/s单位避免MB换算时1MB1024KB还是1000KB的纠缠。3.2 逻辑扇区号到柱面-磁头-扇区的换算这是外存计算题里最值钱的转换技能。磁盘寻址分为CHS三维地址柱面号C、磁头号H、扇区号S和逻辑扇区号LBA两种方式。做题时要掌握由逻辑扇区号反推物理地址的步骤先计算每个柱面包含多少扇区记录面数 × 每磁道扇区数。然后用逻辑扇区号除以每柱面扇区数商就是柱面号余数继续除以每磁道扇区数商是磁头号记录面号再余下的就是扇区号。用44题参数每面2048磁道、200扇区/道、4个记录面实际算一遍每柱面扇区数 4 × 200 800逻辑扇区号4095 ÷ 800 5 余 9595 ÷ 200 0 余 95。所以柱面号为5磁头号为0扇区号为95。做题时务必先看题目对扇区号从0还是从1编号的约定。上面结果按0基编号得到扇区号95如果题目说扇区号从1开始物理地址应写为柱面5、磁头0、扇区96。历年真题答案的争议很多都出在这个1上。再看一个简化例子加深印象4个记录面、每道20扇区逻辑扇区号129每柱面80扇区。129 ÷ 80 1余4949 ÷ 20 2余9答案就是柱面1、磁头2、扇区9同样按0基约定。3.3 平均存取时间的三段拆解磁盘访问一道题的通用时间公式是总访问时间 ≈ 寻道时间 平均旋转延迟 传输时间寻道时间指磁头径向移动到目标磁道的时间题目通常直接给“平均寻道时间为4ms”。平均旋转延迟是指目标扇区转到磁头正下方所需的时间由于磁头位置相对于目标扇区是随机的平均需要转半圈所以平均旋转延迟 (60 / 转速rpm) / 2。7200rpm对应一圈时间是60/7200秒约8.33ms平均旋转延迟约4.17ms。传输时间是从磁道上读出数据的耗时。如果读取的文件占用整个磁道传输时间正好是一圈即8.33ms如果只读其中一部分扇区可按扇区数比例折算传输时间 (读取扇区数 / 每磁道扇区数) × 一圈时间。也可以用文件字节数除以数据传输率折算。把44题第3问数字放进去100KB文件每磁道容量恰好是102400B也就是100KB所以它正好占满一个磁道。总时间 4 4.17 8.33 ≈ 16.5ms。这里补充一个高频易错场景如果文件超过单磁道容量数据跨越到另一磁道那么每进入一个新磁道通常都要重新计算一次平均旋转延迟。同柱面内换磁头不需要重新寻道只是电子切换磁头换柱面才需要再一次寻道。这个细节在处理综合题时经常决定你是拿满分还是丢几分。4. 手把手推演44题的完整解法4.1 容量与数据传输率先把物理参数吃透做题的第一步永远是列参数而不是急着套公式。把题干给的信息结构化记录面数4每面磁道数2048每磁道扇区数200每扇区字节数512B转速7200rpm 120rps平均寻道时间4ms容量直接乘4 × 2048 × 200 × 512 838860800B即800MB。传输率每磁道字节数102400B × 120rps 12288000B/s写12000KB/s或约11.72MB/s都可以。考场建议保留原始单位KB/s减少换算出错概率。这类题六成的丢分发生在单位换算转速忘记除以60、容量换算纠结用1024还是1000、时间在秒和毫秒之间来回晃。我的习惯是全流程统一用“字节/秒”和“秒”计算最后一步再转毫秒因为毫秒是题目和答案里最常见的展示单位。4.2 DMA参数设置与结束判定按流程写不丢分第5问的答案一定要按DMA的三个阶段组织不能漏点。预处理阶段CPU需要向DMA控制器写入四类关键参数内存首地址指明数据在内存侧的起始位置设备地址指明与哪个I/O设备交换数据传送数据个数字数或字节数装入字计数器控制命令说明传送方向以及启动方式。数据传送阶段DMA控制器每传送一个数据内存地址寄存器自动加1字计数器自动减1直到字计数器变为0。所谓“判断传送完毕”正是计数器减到0的信号而不是由CPU一条条数出来的。计数器归零后DMA控制器向CPU发出中断请求转入后处理由CPU运行中断服务程序收尾。很多同学答这题时只写“CPU设置首地址”和“计数器减到0”丢掉了设备地址和控制命令也丢掉了“完成后发中断请求”。这三个环节拼接在一起才是完整答案。答题时先把“预处理-传送-后处理”三个词写出来再逐段填充结构分数也稳。4.3 访问时间与逻辑地址换算这里最容易算错第3问的100KB文件正好占满一个磁道所以它只需要一次寻道、一次平均旋转延迟、一个磁道的传输时间寻道时间4ms平均旋转延迟60 / 7200 / 2秒 ≈ 4.17ms传输时间1圈 ≈ 8.33ms总时间约16.5ms注意这里“平均旋转延迟 传输时间”的逻辑平均旋转延迟解决的是“文件起始扇区还没转到磁头下”的等待时间等起始扇区到达磁头后读完整条磁道又需要转一整圈。两者是先后两次等待不是包含关系不能合并成“1.5圈”之类的算法。第4问的逻辑地址换算是重灾区。完整的计算顺序是每柱面扇区数 4 × 200 800 柱面号 4095 / 800 5余数95 磁头号 95 / 200 0余数95 扇区号 950基约定如果题目约定扇区号从1开始物理地址写成柱面5、磁头0、扇区96。考试时看到“扇区号从0开始”或“逻辑扇区号从0开始”的字样一定先把这个约定圈出来。我的建议是读题时顺手在草稿纸上写“0-based / 1-based”两个词做完再核对一遍。5. 这一类综合题的答题套路与复习建议5.1 综合题的通用解题框架把44题这类“磁盘 DMA”综合题总结成一个可复用的解题框架按顺序执行第一步抄参数。把所有物理量列成一张小表尤其是记录面数、每磁道扇区数、每扇区字节数、转速、寻道时间。任何一个漏用后面所有计算都会对不上。第二步判断问什么。问容量就套乘法公式问传输率就找每磁道字节数和转速问访问时间就拆三段问逻辑地址就做CHS换算问DMA流程就按三阶段写参数和结束判定。44题五种都问相当于把整个小节连成一张网考。第三步时间题先判断文件跨不跨磁道、跨不跨柱面。不跨磁道一次寻道 一次平均旋转延迟 按比例算传输时间。跨磁道但不跨柱面没有额外寻道但每个磁道都算一次平均旋转延迟。跨柱面每个柱面都要算新的寻道时间。第四步DMA相关题按三阶段展开。问“设置哪些参数”就写寄存器级答案问“数据传送时CPU在干什么”就写CPU让出总线控制权、不参与数据搬运问“怎么知道传送完”就写字计数器归零并发出中断请求。5.2 历年真题里的同款考点与出题频率磁盘容量、数据传输率、CHS地址换算这三个点历年408选择题反复出现偶尔进入大题。I/O控制方式也是常客有些年份考中断方式的流程有些年份考DMA的参数与特点考法上互相渗透。44题的高明之处在于把两者放到同一条题干里逼你不能再靠“概念题 计算题”的割裂方式复习。同类练习可以做王道《计算机组成原理考研复习指导》对应章节的综合题以及历年真题中所有带“磁盘”“DMA”“扇区”关键字的大题。做的时候不要只看答案把每道题重写成“参数表 公式 计算过程”三段式这个习惯对考场时间控制非常有用。5.3 复习时怎么把DMA和磁盘计算真正焊在一起给一个具体建议把DMA当成磁盘工作的“幕后调度员”来学。预处理阶段CPU把“文件要在内存的哪个位置、数据多大、从哪个设备来或去”告诉调度员然后转身忙自己的。数据传送阶段调度员拿到总线控制权指挥磁盘控制器与内存直接交换数据每搬一个数据就记一笔账。直到一批数据全部搬完调度员才向CPU发出中断信号报告“这一批货物齐了”。这样理解之后44题第5问就不再是背四个寄存器而是顺着流程自然推出的结论。磁盘的时间计算则可以当作“调度员的日程表”先找路寻道再等门开旋转延迟最后搬货传输。这三个动作是严格先后顺序单位、换算、是否重复出现都有了直观意义。把两张图——DMA流程图、磁盘访问时间线——画在笔记本同一页上再去做题比单纯刷题牢固得多。最后说点个人体会。我当年第一次做这道题也翻过车容量和传输率全对结果栽在扇区号加1上。考完复盘时我才意识到这种综合题丢分从来不是因为哪个公式不会而是两个模块之间的接口比如逻辑地址换完要不要加1、DMA的CPU介入点在哪没有在平时练习时较真。如果你现在也卡在这一块别慌把文章里的题干参数换成历年真题数据重做一遍做完再用“这里为什么这么算”给自己讲一遍讲得通就真的通了。祝各位408顺利上岸。
返回列表