MST

星途 面试题库

面试题:设备管理之DMA工作原理

请详细阐述操作系统中设备DMA(直接内存访问)的工作原理,包括DMA控制器如何与设备、内存以及CPU协同工作,在数据传输过程中各部分的角色是什么?
36.9万 热度难度
操作系统设备管理

知识考点

AI 面试

面试题答案

一键面试

DMA工作原理概述

直接内存访问(DMA)是一种允许外部设备(如硬盘、网卡等)直接与计算机内存进行数据传输的技术,无需CPU持续干预。这样可以大大减轻CPU的负担,使其能够同时处理其他任务,提高系统整体性能。

DMA控制器与设备、内存及CPU的协同工作

  1. 初始化阶段
    • CPU参与:当需要进行数据传输时,CPU首先对DMA控制器进行编程。这包括设置传输数据的源地址(设备相关寄存器地址)、目标地址(内存地址)、传输字节数等参数。
    • 设备准备:设备(如磁盘驱动器)也需要做好传输准备,例如将数据从存储介质读取到设备内部的缓冲区。
  2. 传输请求阶段
    • 设备发起:设备准备好传输数据后,向DMA控制器发送DMA请求信号(DRQ)。
    • DMA响应:DMA控制器收到请求后,如果自身未处于忙碌状态,且系统总线可用,就向设备发出DMA响应信号(DACK),同时向CPU发送总线请求信号(HRQ)。
  3. 总线控制权交接阶段
    • CPU响应:CPU收到总线请求信号(HRQ)后,在当前总线周期结束时,向DMA控制器发出总线响应信号(HLDA),并释放系统总线的控制权。
    • DMA接管:DMA控制器接收到HLDA信号后,接管系统总线,开始控制数据传输。
  4. 数据传输阶段
    • DMA控制:DMA控制器根据预先设置的源地址、目标地址和传输字节数,在设备与内存之间直接传输数据。每次传输一个数据块(通常由多个字节组成),无需CPU参与。
    • 设备角色:设备从自身缓冲区中按顺序输出数据到系统总线,DMA控制器将数据写入内存的指定位置;或者从内存指定位置读取数据,DMA控制器将数据传输到设备缓冲区。
    • 内存角色:内存作为数据的源或目的地,接收或提供数据给DMA控制器进行传输。
  5. 传输结束阶段
    • 传输完成:当DMA控制器完成预定的数据传输量后,它向设备发出传输结束信号,同时撤销对CPU的总线请求信号(HRQ)。
    • CPU恢复控制:CPU收到撤销的HRQ信号后,重新获得系统总线的控制权。此时,DMA控制器可能会向CPU发送中断请求信号(IRQ),通知CPU数据传输已完成。
    • CPU后续处理:CPU响应中断,执行中断服务程序,对传输的数据进行后续处理,例如检查数据的完整性、更新相关的状态信息等。

各部分在数据传输过程中的角色

  1. CPU
    • 初始化DMA:设置DMA控制器的参数,确定数据传输的源地址、目标地址和字节数等。
    • 让出总线:在DMA传输期间,暂时放弃系统总线控制权,以便DMA控制器进行数据传输。
    • 处理中断:传输完成后,CPU通过中断服务程序对传输结果进行处理。
  2. DMA控制器
    • 协调传输:作为数据传输的核心协调者,负责在设备和内存之间建立直接的数据传输路径。
    • 控制传输:根据初始化设置的参数,控制数据传输的起始、过程和结束,确保数据准确无误地从源传输到目标。
  3. 设备
    • 发起请求:准备好数据后,向DMA控制器发出传输请求。
    • 提供或接收数据:在DMA控制器的控制下,将自身缓冲区的数据发送到内存,或从内存接收数据存入自身缓冲区。
  4. 内存
    • 存储数据:作为数据的存储场所,为设备提供数据或接收设备传来的数据。