尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

408真题拆解:DMA与磁盘计算的核心考点与实战

发布时间:2026/9/28 1:35:40

资讯中心
01
ARTICLE

408真题拆解:DMA与磁盘计算的核心考点与实战

408真题拆解:DMA与磁盘计算的核心考点与实战
1. 从一道408真题说起DMA到底在考什么2022年计算机408统考第44题考的是I/O设备与主机之间信息传送的控制方式核心落在DMA方式上。同一道题的背景里还牵扯到外存的磁道、扇区计算。很多同学做这道题的时候卡的不是DMA的概念本身而是题目把DMA传送和磁盘的物理结构揉在一起一层套一层读完题干就懵了。我当年第一次做这类题也是同样的感受。DMA这三个字母谁都认识直接存储器访问嘛但真到题目里问你“一个扇区传送需要多少个总线周期”“DMA控制器在什么时机发出中断”就开始含糊了。原因很简单大多数人背的是DMA的定义而没有真正理解DMA在整个I/O控制方式演进链条里的位置也没有把磁盘的物理结构和数据传输过程串起来。这篇文章就是要把这道题背后的两条知识线彻底拆开讲透。一条线是I/O控制方式的演进逻辑——程序查询、中断、DMA、通道它们各自解决什么问题DMA为什么必须存在另一条线是磁盘的磁道、扇区、容量计算以及这些物理参数怎么和DMA传送挂上钩。两条线交汇的地方就是408真题最爱出题的地方。不管你是正在备考408的考研党还是本科学计算机组成原理被这道题折磨过的同学又或者你是跨考需要补基础的这篇文章都会从最底层的逻辑开始一步步把DMA和磁盘计算讲清楚。我不堆公式不甩术语尽量用你能想象出来的场景去解释每一个参数为什么存在、每一步计算为什么这么列。2. I/O控制方式的演进DMA不是凭空冒出来的2.1 程序查询方式CPU当“保姆”的时代要理解DMA为什么重要得先看看没有DMA的时候CPU是怎么和I/O设备打交道的。最早的方式叫程序查询方式也叫轮询。工作流程特别朴素CPU想从磁盘读数据就发一条命令给磁盘控制器然后进入一个循环不停地读状态寄存器问“你准备好了吗你准备好了吗”直到设备把数据准备好CPU再把数据从设备寄存器搬到内存里。整个过程中CPU什么正事都干不了就在那儿死等。你可以把这种方式想象成你去奶茶店点单点完之后你站在柜台前面一直盯着店员看直到奶茶做好你拿走。你盯着看的这段时间你没法刷手机、没法回消息、没法做任何其他事情。CPU就是这个你I/O设备就是那个做奶茶的店员。这种方式的问题显而易见CPU和I/O设备的速度差距太大了。CPU一条指令几纳秒磁盘一次寻道几毫秒差了六个数量级。CPU把99.99%的时间浪费在等待上效率极低。2.2 中断方式CPU学会“先干别的”中断方式的出现本质上是把CPU从“死等”中解放出来。CPU发出I/O命令后不再轮询而是继续执行其他程序。当设备完成了数据准备它通过中断信号通知CPU“我好了你来处理吧。”CPU收到中断后暂停当前程序跳转到中断服务程序完成数据传送然后返回。这就像你点了奶茶之后去旁边逛街奶茶做好了店员打电话叫你回来取。你的时间利用率大大提高了。但中断方式也有它的瓶颈。每次传送一个数据单位比如一个字或一个字节就需要一次中断。CPU需要保存现场、跳转中断服务程序、传送数据、恢复现场这一套流程下来开销不小。如果磁盘要传送4KB的数据按字节中断的话就是4096次中断CPU基本上就在中断处理里打转了。而且中断方式的数据传送仍然需要CPU参与——数据是从设备寄存器读到CPU寄存器再从CPU寄存器写到内存。数据走了弯路CPU当了搬运工。2.3 DMA方式让数据自己“走直线”DMA方式的核心思想特别干脆既然CPU只是搬运工那能不能不要这个搬运工让数据直接从I/O设备传到内存DMA的全称是Direct Memory Access直接存储器访问。它在主机和I/O设备之间加了一个DMA控制器DMAC这个控制器接管了数据传送的工作。CPU只需要在传送开始前告诉DMAC从哪个设备读、读到内存的什么位置、传多少数据。然后CPU就可以去干别的事了。DMAC负责实际的搬运工作数据从设备直接进内存不经过CPU。传送完成后DMAC向CPU发一个中断告诉它“活干完了”。注意这里是一批数据传完之后才中断一次而不是每个字节中断一次。这就是DMA和中断方式最本质的区别之一。用奶茶店的类比你点单的时候告诉店员“做好之后送到我办公室桌上”然后你就回去工作了。店员做好奶茶直接送到你桌上然后给你发条消息说“送到了”。你全程不需要去柜台也不需要接电话指挥。2.4 四种方式的对比一张表看清本质差异对比维度程序查询中断方式DMA方式通道方式CPU参与程度全程参与等待每个数据单位参与仅开始和结束参与几乎不参与数据传送路径设备→CPU→内存设备→CPU→内存设备→内存直接设备→内存中断频率无中断每个数据单位一次一批数据一次一组数据块一次CPU利用率极低中等高最高适用场景简单低速设备键盘、鼠标等磁盘、网卡等高速设备大型机多设备管理硬件复杂度低中等较高高这张表建议你反复看几遍408选择题特别喜欢考这几种方式的对比。尤其是“中断方式每个数据单位中断一次”和“DMA方式一批数据中断一次”这个区别几乎年年都考。3. DMA控制器的内部构造与工作流程3.1 DMAC里到底有什么DMA控制器不是一个大黑盒它内部有几个关键的寄存器理解了这几个寄存器DMA的工作流程就一目了然了。内存地址寄存器MAR存放数据要写到内存的哪个地址或者从内存哪个地址读。每传送一个数据单位这个寄存器的值会自动加一或减一指向下一个存储单元。传送长度计数器DC记录还剩多少数据单位没有传送。每传送一个计数器减一。减到零的时候说明传送完成DMAC发出中断信号。设备地址寄存器DAR存放I/O设备的地址告诉DMAC去哪个设备读写数据。控制与状态寄存器存放控制信息传送方向、传送模式等和状态信息是否完成、是否出错等。除了这些寄存器DMAC还需要数据缓冲寄存器来暂存每次传送的数据以及中断控制逻辑来在传送结束时向CPU发中断。3.2 DMA传送的完整流程我按时间顺序把DMA传送的流程捋一遍你跟着走一遍就清楚了。第一步CPU初始化DMAC。CPU通过程序设置DMAC的各个寄存器——内存起始地址写入MAR传送数据量写入DC设备地址写入DAR传送方向和其他控制信息写入控制寄存器。这一步是CPU唯一需要深度参与的部分。第二步CPU启动I/O设备。CPU向I/O设备发出启动命令设备开始准备数据。第三步DMAC等待设备就绪。设备准备好一个数据单位后向DMAC发出DMA请求信号DREQ。第四步DMAC向CPU请求总线。DMAC收到DREQ后向CPU发出总线请求信号HRQ请求接管系统总线的控制权。第五步CPU让出总线。CPU在当前总线周期结束后发出总线响应信号HLDA将总线控制权交给DMAC。此时CPU暂时挂起不能访问内存。第六步DMAC执行数据传送。DMAC接管总线后在设备通过DAR寻址和内存通过MAR寻址之间直接传送一个数据单位。传送完成后MAR加一DC减一。第七步判断是否传完。如果DC不为零回到第三步继续等待下一个数据单位。如果DC为零说明全部数据传送完毕。第八步DMAC发中断通知CPU。传送完成后DMAC释放总线并向CPU发出中断请求。CPU响应中断执行中断服务程序做传送后的收尾工作比如检查是否有错误、通知上层软件等。这个流程里有一个关键点DMAC和CPU是交替使用总线的。DMAC每次传送一个数据单位就要占用一个总线周期传完之后CPU可能拿回总线用一下然后DMAC再请求。这种交替方式叫做周期挪用Cycle Stealing也叫周期窃取。3.3 三种DMA传送方式停止CPU访存、周期挪用、交替访存DMA传送数据的时候总线被DMAC占用CPU没法访问内存。那CPU和DMAC怎么协调总线的使用有三种典型的方案。停止CPU访存方式DMAC一请求CPU就完全交出总线直到整批数据传完才还给CPU。这种方式控制简单但CPU在传送期间完全无法访存效率低。适合数据量很大的高速传送场景。周期挪用方式DMAC每次只“偷”一个或几个总线周期来传送数据传完立刻还给CPU。CPU和DMAC交替使用总线CPU的访存基本不受影响。这是最常用的方式408考试里默认的DMA传送方式通常就是这种。交替访存方式把CPU的工作周期分成两半一半给CPU访存一半给DMAC访存两者交替进行不需要总线请求和响应。这种方式效率最高但硬件实现最复杂对时序要求很严格。考试里如果题目没有特别说明DMA传送方式默认按周期挪用理解。周期挪用方式下每传送一个数据单位需要一个总线周期这个“一个总线周期”是计算题的关键参数。4. 磁盘的物理结构磁道、扇区与容量计算4.1 磁盘盘面长什么样磁盘的盘片是一个圆形的金属或玻璃基板表面涂了磁性材料。数据就记录在这些磁性材料上。盘片被逻辑上划分成一个个同心圆每一个同心圆叫做一个磁道Track。最外面的磁道编号为0往里依次递增。每个磁道又被等分成若干段弧每一段叫做一个扇区Sector。扇区是磁盘读写的最小物理单位。传统磁盘一个扇区通常存储512字节现在也有4KB扇区的高级格式磁盘。多个盘片叠在一起每个盘片有两个盘面上下面每个盘面对应一个磁头Head。所有盘面上相同编号的磁道构成一个柱面Cylinder。磁盘的寻址通常用“柱面号-磁头号-扇区号”CHS来表示。4.2 磁盘容量的计算公式磁盘的非格式化容量计算公式是总容量 盘面数 × 每面磁道数 × 每道扇区数 × 每扇区字节数这个公式看着简单但题目里经常不会把所有参数直接给你而是给你一些间接条件让你推导。比如告诉你磁盘转速和数据传输率让你反推每道扇区数或者告诉你平均寻道时间和磁道数让你算平均等待时间。我拿一个典型题目场景来演示。假设一个磁盘有4个盘面每面有1024个磁道每个磁道有64个扇区每个扇区512字节。那么总容量 4 × 1024 × 64 × 512 字节 134,217,728 字节 128 MB这个计算本身不难但考试里往往会在此基础上加一层——比如问你“格式化后容量会减少多少”或者“如果采用某文件系统实际可用容量是多少”。格式化会占用一部分空间来存储文件系统元数据如FAT表、inode表等所以格式化容量小于非格式化容量。4.3 平均存取时间的三个组成部分磁盘存取时间由三部分组成寻道时间Seek Time磁头从当前位置移动到目标磁道所需的时间。这是三者中最长的通常几毫秒到十几毫秒。题目里常给“平均寻道时间”。旋转延迟Rotational Latency磁头到达目标磁道后等待目标扇区旋转到磁头下方所需的时间。平均旋转延迟 旋转半圈的时间 60 / (2 × 转速)。传输时间Transfer Time读写一个扇区所需的时间。传输时间 每道扇区数 / 转速或者用 扇区大小 / 数据传输率 来计算。总平均存取时间 平均寻道时间 平均旋转延迟 传输时间这里有一个特别容易出错的地方平均旋转延迟是旋转半圈的时间不是一圈。因为目标扇区可能在磁头下方的任何位置平均来说需要等半圈。很多同学第一次做题的时候直接用一圈的时间结果就错了。4.4 数据传输率怎么算数据传输率指的是磁盘每秒能传输多少字节的数据。有两种常见的计算方式方式一按磁道计算。如果磁盘转速是 r 转/秒每道有 s 个扇区每扇区 b 字节那么数据传输率 r × s × b 字节/秒。因为磁头转一圈就扫过一整条磁道的数据。方式二按位密度和线速度计算。数据传输率 位密度 × 线速度。这种方式在408里出现得少一些但也要知道。我举个例子一个磁盘转速为7200 RPM即120转/秒每道有128个扇区每扇区512字节。数据传输率 120 × 128 × 512 7,864,320 字节/秒 ≈ 7.5 MB/s。这个数字在今天的固态硬盘面前显得很慢但机械硬盘的物理极限就在这个量级。这也是为什么DMA对磁盘I/O如此重要——如果不用DMACPU根本跟不上磁盘的数据传输节奏。5. DMA与磁盘计算的交汇点真题拆解5.1 22年44题的典型考法2022年第44题把DMA和磁盘计算揉在一起典型的考法是给一个磁盘的参数转速、每道扇区数、扇区大小再给一个DMA传送的场景问你CPU在传送过程中需要参与多少次、占用多少总线周期、传送一批数据需要多长时间。这类题的核心逻辑链条是这样的先算出磁盘的数据传输率每秒传多少字节。再算出传送一批数据需要多少个扇区、多少个数据单位。每个数据单位需要一次DMA传送每次DMA传送占用一个总线周期。算出总的总线周期数再结合总线周期的时间算出DMA占用总线的时间。如果题目问CPU的参与次数那就是1次初始化 1次中断处理 2次假设没有错误。我拿一个具体场景来演示。假设磁盘转速为6000 RPM每道100个扇区每扇区512字节。要传送10KB的数据。DMA每次传送4字节一个32位字。第一步算数据传输率。6000 RPM 100转/秒。数据传输率 100 × 100 × 512 5,120,000 字节/秒 ≈ 5 MB/s。第二步算需要传送的数据单位数。10KB 10240字节。每次传4字节需要 10240 / 4 2560 次DMA传送。第三步算DMA占用总线的时间。如果每个总线周期是0.1微秒假设总线频率10MHz那么2560次传送占用 2560 × 0.1 256 微秒。第四步算磁盘实际传输这批数据需要的时间。10240字节 / 5,120,000 字节/秒 ≈ 2毫秒。可以看到DMA占用总线的时间256微秒远小于磁盘传输数据的时间2毫秒。这意味着CPU在大部分时间里仍然可以使用总线周期挪用方式下CPU的性能损失很小。5.2 磁道和扇区的计算陷阱在真题里磁道和扇区的计算有几个经典的陷阱我一个个说。陷阱一扇区编号从0还是从1开始。有些题目扇区从0开始编号有些从1开始。这会影响你计算某个扇区的偏移量。一般来说如果题目说“第0个扇区”那就是从0开始如果说“第1个扇区”要看上下文。408真题里通常会在题干里明确说明。陷阱二磁道数和柱面数的关系。柱面数等于单个盘面的磁道数。因为柱面是所有盘面上相同编号磁道的集合。如果题目给你“每个盘面有N个磁道”那柱面数就是N。如果给你“磁盘有M个柱面”那每个盘面的磁道数就是M。陷阱三格式化容量的损耗。题目如果问“格式化后的容量”需要减去文件系统元数据占用的空间。但408里通常不会考太复杂的文件系统细节一般就是简单提一下格式化会占用一部分空间或者直接告诉你格式化后的可用扇区数。陷阱四平均旋转延迟的计算。再强调一遍平均旋转延迟 60 / (2 × 转速RPM) 秒。如果转速是7200 RPM平均旋转延迟 60 / (2 × 7200) 60 / 14400 ≈ 4.17 毫秒。不是8.33毫秒那是一圈的时间。5.3 一个完整的计算示例我把DMA和磁盘计算串起来走一个完整的例子。题目设定某磁盘转速为10000 RPM平均寻道时间6ms每道200个扇区每扇区512字节。采用DMA方式传送数据DMA每次传送4字节总线周期为50ns。现在要读取一个包含8个扇区的数据块假设这8个扇区在同一个磁道上连续排列。求读取这个数据块的总时间。第一步算平均旋转延迟。10000 RPM 166.67转/秒。平均旋转延迟 60 / (2 × 10000) 3ms。第二步算传输时间。8个扇区 8 × 512 4096字节。数据传输率 166.67 × 200 × 512 ≈ 17,067,000 字节/秒 ≈ 16.3 MB/s。传输时间 4096 / 17,067,000 ≈ 0.24ms。第三步算总存取时间。总时间 寻道时间 旋转延迟 传输时间 6 3 0.24 9.24ms。第四步算DMA传送次数和总线占用时间。4096字节 / 4字节 1024次DMA传送。总线占用时间 1024 × 50ns 51.2微秒 0.0512ms。第五步对比。DMA占用总线的时间0.0512ms只占总存取时间9.24ms的0.55%。这说明在磁盘I/O中机械运动寻道和旋转是绝对的瓶颈DMA的总线占用几乎可以忽略不计。这个结论在考试里经常被用来出选择题DMA方式下CPU用于I/O的时间占整个I/O时间的比例极小。6. 那些年我踩过的坑与考场实战建议6.1 最容易混淆的三个概念DMA vs 中断的优先级。DMA请求的优先级通常高于中断请求。因为DMA传送的是高速设备的数据如果被中断打断数据可能丢失。而中断处理可以稍后执行。在总线仲裁中DMAC的总线请求优先级也高于CPU的访存请求。DMA传送 vs DMA方式。“DMA传送”指的是具体的一次数据搬运操作“DMA方式”指的是一种I/O控制方式。题目里说“采用DMA方式”意思是整个I/O控制采用DMA机制说“一次DMA传送”指的是DMAC完成一个数据单位的搬运。周期挪用 vs 停止CPU访存。周期挪用是“偷”一个总线周期就还停止CPU访存是整批数据传完才还。考试里如果题目说“CPU在DMA传送期间无法访存”那可能是停止CPU访存方式如果说“CPU和DMA交替使用总线”那就是周期挪用。6.2 计算题的时间单位陷阱磁盘计算里时间单位特别容易出错。寻道时间通常给毫秒ms旋转延迟算出来也是毫秒但传输时间可能是微秒μs级别。DMA总线周期可能是纳秒ns级别。如果你不统一单位最后算出来的结果可能差好几个数量级。我的习惯是全部换算成秒或者全部换算成毫秒在草稿纸上标注清楚。比如总线周期50ns 0.00005ms这样和毫秒级的寻道时间放在一起算就不会错。6.3 考场上的答题节奏408的I/O和磁盘部分选择题通常考概念辨析大题考计算。我的建议是选择题遇到DMA和中断的对比先看“中断频率”这个关键词。每个数据单位中断一次的是中断方式一批数据中断一次的是DMA方式。大题遇到磁盘计算先把所有参数列出来统一单位然后按“寻道→旋转→传输”的顺序一步步算。不要跳步跳步容易漏掉某个环节。如果题目同时考DMA和磁盘先算磁盘的物理参数传输率、传输时间再算DMA的总线占用最后把两者结合起来回答题目问的具体问题。6.4 一个反直觉的结论很多人直觉上认为DMA方式下CPU完全不参与I/O其实不是。CPU至少需要参与两次一次是初始化DMAC设置寄存器一次是响应DMA传送完成的中断做收尾处理。如果传送过程中出现错误CPU还需要参与错误处理。所以严格来说DMA方式下CPU的参与次数是“两次加上可能的错误处理次数”。这个点在选择题里经常出现问“DMA方式下CPU需要参与几次”正确答案通常是“至少两次”或者“初始化和结束时各一次”。6.5 磁盘扇区计算的实战技巧最后分享一个我做磁盘计算题的小技巧画图。在草稿纸上画一个简单的磁盘示意图标出磁道、扇区、磁头的位置关系。特别是当题目涉及“磁头从磁道A移动到磁道B然后读取扇区C”这种多步骤操作时画图能帮你理清顺序避免把寻道时间和旋转延迟搞混。另外如果题目给出“扇区交叉因子”或者“磁盘调度算法”如SSTF、SCAN那说明这道题考的是磁盘调度不是单纯的DMA和容量计算。这时候要先按调度算法确定磁头的移动顺序再计算每个请求的存取时间。408里磁盘调度算法也是常考点和DMA结合出题的可能性不小。把DMA的工作流程和磁盘的物理结构这两条线都吃透再遇到22年44题这种综合题你就能一眼看穿它到底在考什么而不是被题干里一堆参数吓住。核心永远是那几个DMA什么时候请求总线、什么时候释放总线、中断在什么时候发生磁盘的寻道、旋转、传输各占多少时间。抓住这两条主线题目怎么变都不怕。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。