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

2022年408真题44题精讲:DMA与磁盘地址计算全链路拆解

发布时间:2026/9/28 3:12:51

资讯中心
01
ARTICLE

2022年408真题44题精讲:DMA与磁盘地址计算全链路拆解

2022年408真题44题精讲:DMA与磁盘地址计算全链路拆解
1. 这道44题到底在考什么从DMA到磁盘地址的完整链路2022年408计算机组成原理第44题是一道把I/O控制方式和外存地址计算缝在一起的综合题。很多同学做这道题时第一问DMA答得挺顺第二问磁道扇区就开始犯迷糊第三问又把两者串起来算时间直接崩盘。我当年第一次做这道题也栽过后来把唐朔飞教材对应章节翻了三遍才把这条链路彻底打通。这道题的核心考点有两个一是DMA方式的工作机制包括DMA控制器与CPU的关系、数据传送过程、中断与DMA的配合二是磁盘的磁道、扇区、柱面这些物理结构以及基于这些结构做地址映射和读写时间计算。这两个知识点在408里经常单独出题但像22年44题这样把它们揉在一起就要求你不仅知道各自是什么还要理解它们在实际系统中是怎么协同工作的。适合谁来参考这篇内容如果你正在准备408或者本科学计算机组成原理正在被磁盘计算折磨又或者你是已经工作但想回头补一补底层存储知识的开发者这篇都能给你一条清晰的路径。我会从题目本身的拆解开始把DMA的每个细节、磁盘地址的每个参数、以及两者结合时的计算逻辑全部摊开讲清楚。不堆公式不背结论而是让你理解每一步为什么这么算。先给一个整体框架这道题的知识链路是这样的主机要把一批数据写到磁盘上CPU先通过程序查询或中断方式启动DMADMA控制器接管总线把内存中的数据一块一块搬到磁盘控制器的缓冲区磁盘控制器再根据磁道和扇区地址把数据写到对应的物理位置。整个过程中DMA负责的是内存和外设之间的数据搬运而磁盘的磁道扇区决定了数据最终落在盘片的哪个位置。理解了这个链路题目怎么变你都能拆。2. DMA方式的核心机制与常见误区2.1 DMA控制器到底干了什么DMA全称Direct Memory Access直接存储器访问。它的核心思想是让外设和内存之间直接传数据不需要CPU一条一条指令地搬。你可以把它想象成一个专门的搬运工CPU只需要告诉它“从内存地址A搬N个字节到磁盘”然后CPU就可以去干别的事了搬运工自己会把活干完干完了再通知CPU一声。DMA控制器内部有几个关键寄存器这是理解DMA工作的基础内存地址寄存器MAR存放要传送的数据在内存中的起始地址每传一个字节或一个字这个地址会自动递增。传送长度计数器DC记录还剩多少数据没传每传一次减一减到零表示传送完成。数据缓冲寄存器暂存每次传送的数据起到缓冲作用。控制与状态寄存器存放控制信息如传送方向、传送单位和状态信息如是否完成、是否出错。DMA的传送过程分三个阶段预处理、数据传送、后处理。预处理阶段CPU设置DMA控制器的寄存器启动DMA数据传送阶段DMA控制器接管总线在内存和磁盘之间搬数据后处理阶段DMA控制器发出中断CPU处理善后工作。这里有个高频误区很多同学以为DMA传送完全不需要CPU参与。实际上预处理和后处理都需要CPU只是数据传送阶段CPU不介入。而且DMA控制器和CPU会争用总线通常DMA的优先级更高因为磁盘的数据传输不能等等久了数据就丢了。2.2 DMA与中断的区别别搞混了中断方式是外设每传一个数据就打断CPU一次CPU需要保存现场、执行中断服务程序、恢复现场开销很大。DMA是外设和内存直接传传完一整块才中断一次开销小得多。用生活类比中断方式就像你每搬一块砖都要跟工头汇报一次DMA方式就像你搬完一整车砖再跟工头说一声。在408的题目里经常让你比较这两种方式的效率。关键计算点是中断方式下CPU用于I/O的时间 每次中断的开销 × 中断次数DMA方式下CPU用于I/O的时间 预处理时间 后处理时间。中断次数等于传送的数据块数而DMA的中断次数通常只有一次或者每传完一个缓冲区中断一次。还有一个容易忽略的点DMA传送过程中DMA控制器占用总线CPU如果也要访问内存就需要等待。这个等待时间在计算题里经常出现比如“DMA传送占用总线的时间占总时间的比例”或者“CPU因DMA而暂停的时间”。2.3 DMA的三种传送方式及选择逻辑DMA控制器和CPU争用总线时有三种处理方式停止CPU访存DMA传送时CPU完全停止访问内存。这种方式最简单但CPU效率最低。适合高速外设如磁盘的大批量数据传送。周期挪用DMA控制器趁CPU不访问内存的间隙偷一个总线周期来传数据。这种方式CPU效率高但控制复杂。适合中低速外设。交替访存把CPU周期分成两半一半给CPU一半给DMA。这种方式不需要总线仲裁但要求CPU和DMA的访存周期匹配。在408题目里如果题目说“DMA控制器每传送一个数据就占用一个总线周期”那通常指的是周期挪用方式。如果题目说“DMA传送期间CPU不能访存”那就是停止CPU访存方式。选择哪种方式取决于外设的速度和数据的紧急程度。磁盘这种高速外设通常用停止CPU访存或周期挪用。3. 磁盘的磁道、扇区与地址计算3.1 磁盘物理结构从盘面到扇区磁盘的物理结构是分层的盘面Platter→ 磁道Track→ 扇区Sector。一个磁盘可能有多张盘片每张盘片有两个盘面每个盘面有很多同心圆磁道每个磁道又被分成若干个扇区。关键参数磁道数每个盘面的磁道数量通常从外到内编号最外圈是0道。扇区数每个磁道上的扇区数量早期是固定值如每道17个扇区现代磁盘采用等密度记录外圈磁道扇区多内圈少。扇区大小通常是512字节或4KB408题目里默认512字节。柱面Cylinder所有盘面上相同编号的磁道组成一个柱面。柱面号 磁道号。磁盘地址通常用柱面号、磁头号盘面号、扇区号三个参数表示。比如“C100H2S5”表示第100柱面、第2盘面、第5扇区。这里有个计算题高频考点磁盘容量 盘面数 × 每面磁道数 × 每道扇区数 × 扇区大小。如果题目给的是柱面数那盘面数就是磁头数因为每个盘面有一个磁头。3.2 磁道和扇区的地址映射计算题目经常给一个逻辑地址如第N个扇区让你算出对应的柱面号、磁头号、扇区号。计算逻辑是先算每个柱面的扇区总数 盘面数 × 每道扇区数。用逻辑扇区号除以每个柱面的扇区总数商是柱面号余数是柱面内的扇区偏移。用余数除以每道扇区数商是磁头号盘面号余数是扇区号。举个例子假设磁盘有4个盘面每道16个扇区逻辑扇区号从0开始。逻辑扇区号100对应的地址每个柱面扇区数 4 × 16 64100 ÷ 64 1 余 36所以柱面号 136 ÷ 16 2 余 4所以磁头号 2扇区号 4这个计算看起来简单但考试时容易在“从0开始还是从1开始”上翻车。408题目里逻辑扇区号通常从0开始柱面号、磁头号、扇区号也通常从0开始但有些题目会明确说“从1开始编号”一定要看清。3.3 磁盘读写时间计算寻道、旋转、传输磁盘读写一个扇区的时间由三部分组成寻道时间Seek Time磁头从当前磁道移动到目标磁道的时间。题目通常给“每移动一个磁道需要多少时间”或者给平均寻道时间。旋转延迟Rotational Latency等待目标扇区旋转到磁头下方的时间。平均旋转延迟 旋转一圈时间的一半。旋转一圈时间 60 / 转速转/分。传输时间Transfer Time读写一个扇区的时间 旋转一圈时间 / 每道扇区数。总时间 寻道时间 旋转延迟 传输时间。这里有个细节如果题目说“磁头当前在0道要读写100道的扇区”寻道时间 100 × 每道移动时间。如果题目说“磁头随机移动”那寻道时间通常用平均寻道时间。旋转延迟的计算也容易错。比如转速7200转/分旋转一圈时间 60 / 7200 1/120秒 ≈ 8.33毫秒平均旋转延迟 4.17毫秒。如果题目说“目标扇区刚好在磁头下方”那旋转延迟为0如果说“目标扇区刚转过磁头”那旋转延迟接近一圈时间。4. 22年44题完整拆解与计算过程4.1 题目还原与第一问解析22年44题的题干大致是这样的某磁盘有4个盘面每面有1000个磁道每道有100个扇区扇区大小512字节。磁盘转速为7200转/分。主机通过DMA方式将内存中的一批数据写入磁盘。第一问DMA方式下CPU和DMA控制器如何配合完成数据传送第一问的答题要点CPU先执行初始化程序设置DMA控制器的内存地址寄存器、传送长度计数器、控制寄存器然后启动DMA。DMA控制器向CPU发出总线请求CPU响应后让出总线控制权。DMA控制器接管总线在内存和磁盘控制器之间传送数据每传一个数据内存地址递增计数器递减。传送完成后DMA控制器向CPU发出中断请求CPU执行中断服务程序做后处理。这里要强调DMA传送的是内存和磁盘控制器缓冲区之间的数据磁盘控制器再负责把数据写到盘片上。有些同学会误以为DMA直接控制磁头读写这是不对的。4.2 第二问磁道扇区地址计算第二问通常给一个逻辑扇区号让你算柱面号、磁头号、扇区号。假设题目给逻辑扇区号 12345计算过程每个柱面扇区数 4 × 100 40012345 ÷ 400 30 余 345柱面号 30345 ÷ 100 3 余 45磁头号 3扇区号 45如果题目问“第12345个扇区在哪个磁道”那就是柱面号30、磁头号3对应的磁道。注意柱面号和磁道号是同一个概念只是柱面强调跨盘面的同一磁道。这里有个坑有些题目说“扇区号从1开始”那计算时要先减1再算最后再加1。比如逻辑扇区号12345从1开始实际计算用12344算完再加1。408题目里通常从0开始但一定要看清题干。4.3 第三问DMA传送时间与磁盘读写时间第三问通常把DMA和磁盘时间结合起来。比如要写入1000个扇区的数据DMA传送一个扇区需要多少时间磁盘写入一个扇区需要多少时间总时间是多少。计算逻辑磁盘写入一个扇区的时间 旋转一圈时间 / 每道扇区数 (60/7200) / 100 8.33ms / 100 0.0833ms。写入1000个扇区如果连续写入需要1000 × 0.0833ms 83.3ms。但要注意如果跨磁道还要加寻道时间。DMA传送时间取决于DMA控制器的传输速率。如果题目说“DMA每传送一个字节需要一个总线周期总线周期为0.1微秒”那传送512字节需要512 × 0.1 51.2微秒。这里的关键是DMA传送时间和磁盘写入时间是重叠的。DMA把数据传到磁盘控制器的缓冲区磁盘控制器同时把缓冲区的数据写到盘片。所以总时间不是两者相加而是取较大值再加上寻道和旋转延迟。如果题目问“CPU用于该操作的时间”那只有预处理和后处理时间数据传送阶段CPU不参与。预处理时间通常是几条指令的时间后处理是中断服务程序的时间。5. 常见问题与排查技巧实录5.1 磁道扇区计算常见错误错误一柱面数和磁道数搞混。柱面数是所有盘面同一磁道的集合磁道数是单个盘面的磁道数。如果题目给“每面1000个磁道4个盘面”那柱面数也是1000不是4000。错误二扇区号从0还是从1开始。408题目里默认从0开始但有些教材题目从1开始。看到“第N个扇区”时先判断N是从0还是从1。如果是“第1个扇区”从0开始时编号为0从1开始时编号为1。错误三旋转延迟算错。平均旋转延迟是半圈时间不是一圈。如果题目说“磁头到达目标磁道时目标扇区刚好在磁头下方”旋转延迟为0如果说“目标扇区刚经过磁头”旋转延迟接近一圈。错误四传输时间用错公式。传输时间 旋转一圈时间 / 每道扇区数。如果题目给的是数据传输率如10MB/s那传输时间 扇区大小 / 数据传输率。两种公式不要混用。5.2 DMA计算常见错误错误一DMA传送时间算成CPU时间。DMA传送时CPU不参与CPU时间只有预处理和后处理。如果题目问“CPU用于I/O的时间”不要加上DMA传送时间。错误二忽略总线争用。DMA传送时占用总线CPU如果也要访存需要等待。如果题目问“CPU因DMA暂停的时间”那就是DMA占用总线的时间。错误三中断次数算错。DMA传送完成后中断一次不是每传一个数据中断一次。如果题目说“每传完一个缓冲区中断一次”那中断次数 数据总量 / 缓冲区大小。错误四传送方向搞反。DMA可以内存到外设也可以外设到内存。题目说“写入磁盘”那是内存到外设说“从磁盘读入”那是外设到内存。方向不同控制寄存器的设置不同但计算逻辑一样。5.3 综合题的时间叠加问题综合题最容易错的是时间叠加。正确的逻辑是如果DMA传送和磁盘写入是流水线式的DMA传一块磁盘写一块同时进行总时间 max(DMA总时间, 磁盘总时间) 寻道时间 旋转延迟。如果是串行的DMA传完再写总时间 DMA总时间 磁盘总时间。408题目里通常默认流水线式因为磁盘控制器有缓冲区DMA和磁盘可以同时工作。但要注意如果DMA传送速度比磁盘写入速度快那磁盘写入是瓶颈总时间由磁盘决定反之DMA是瓶颈。题目通常会给出两者的速度让你判断。6. 从这道题延伸出的复习策略6.1 唐朔飞教材对应章节怎么读唐朔飞《计算机组成原理》第三版里DMA在第七章“输入输出系统”磁盘在第六章“计算机的运算方法”之后的“存储系统”章节。这两章要结合起来读因为408综合题经常跨章节。读DMA时重点看DMA控制器的结构图、传送流程图、三种传送方式的对比。读磁盘时重点看磁盘的物理结构图、地址格式、读写时间计算公式。课后题一定要做特别是涉及地址计算和时间计算的题。王道计算机组成原理的对应章节也要刷王道的题更贴近408风格。唐朔飞的课后题偏理论王道的题偏计算两者结合效果最好。6.2 二十套试题库怎么用网上流传的“二十套计算机组成原理试题库及答案”里磁盘和DMA的题不少。建议按知识点分类刷先刷DMA的题再刷磁盘的题最后刷综合题。每道题做完后把计算过程写下来对照答案看哪一步错了。错题要整理成表格记录错误类型、正确思路、易错点。比如错误类型正确思路易错点柱面数算成盘面数×磁道数柱面数单面磁道数柱面和磁道的定义旋转延迟算成一圈平均旋转延迟半圈平均值的概念DMA时间算进CPU时间CPU只算预处理和后处理DMA与CPU的分工6.3 实验环节怎么补如果有条件做一下计算机组成原理实验里的DMA实验和磁盘实验。DMA实验通常是用FPGA或模拟器实现DMA控制器磁盘实验通常是模拟磁盘调度算法。实验能帮你直观理解DMA的总线请求、响应、传送过程以及磁盘的寻道、旋转、传输时间。没有实验条件的话可以用Logisim或Verilog模拟一个简单的DMA控制器或者用Python写一个磁盘地址计算和时间计算的模拟程序。自己写一遍比看十遍书都管用。7. 我踩过的坑和给你的实操建议我第一次做22年44题时第二问的柱面号算错了因为我把“4个盘面每面1000个磁道”理解成“总共4000个磁道”然后柱面数算成4000。实际上柱面数等于单面磁道数就是1000。这个错误很典型因为柱面和磁道的定义容易混淆。第二次做的时候第三问的时间计算又错了。我把DMA传送时间和磁盘写入时间相加了但实际上它们是重叠的。后来我画了一个时间轴图把DMA传送和磁盘写入分别画成两条平行线才理解总时间是取较大值。还有一个坑是扇区号从0还是从1开始。我做题时习惯从0开始但有一次题目明确说“从1开始编号”我没注意结果全错。后来我养成了一个习惯每道题先看编号规则在草稿纸上写“从0开始”或“从1开始”再开始算。给你的建议做地址计算题时先画一个磁盘结构示意图标出盘面、磁道、扇区然后一步步算。做时间计算题时画时间轴把寻道、旋转、传输、DMA传送分别标出来看清楚哪些是重叠的。每道题做完后用另一种方法验算。比如地址计算可以用“柱面号×每柱面扇区数磁头号×每道扇区数扇区号”反推逻辑扇区号看是否一致。整理一个“磁盘与DMA计算速查表”把常用公式和易错点列出来考前翻一遍。这个内容后续还可以这样扩展把磁盘调度算法FCFS、SSTF、SCAN、C-SCAN也加进来因为408也考这些。或者把DMA和中断、通道方式的对比做成表格方便记忆。如果你在复习过程中遇到其他综合题也可以用同样的拆解方法先理清知识链路再逐个击破。
02
RELATED NEWS

相关资讯

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

03
WHY YAOTU

想打造同款高转化官网?

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

◈

场景化定制

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

◐

营销型架构

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

▲

全周期服务

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

免费获取你的建站方案

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