美团笔试题:DMA的基本概念

有这样一道美团笔试题:


关于DMA 的说法,哪些是错误的?

A.DMA,Direct Memory Access 直接存储器访问,使得不同速度的硬件设备可以直接通信,不通过 CPU 干预

B.DMA 访问的时候需要从 CPU 那里夺得总线控制权

C.DMA 速度快

D.DMA 不需要中断控制


答  案:A、D


  析: DMA Direct Memory Access 的缩写,翻译为直接存储器访问。 DMA 是一种 I/O 方式,主要用于像磁盘一类的快速设备与主机交换数据。这类设备采用成批数据传送方式,一旦启动设备进行数据传输,设备便以较高的数据传输率读出或写入数据。


DMA方式下,为了控制外设和主存直接交换数据,需要有专门的数据传送控制电路,通常把这样的控制逻辑称为DMA控制器。整个过程分以下三个阶段:


(1)DMA控制器初始化。首先,对DMA控制器和设备接口中的参数寄存器进行初始化,以设定主存首地址、传送数据个数、传送方向(读出/写入)、设备地址(如磁头号、磁道号、起始扇区号)等,这些初始化工作由CPU执行指令完成。初始化工作的最后是向外设接口发送启动读或写的命令。


(2)DMA传送。外设接口接受到CPU送来的启动命令后,就开始控制设备进行读或写操作,当外设准备好数据以后,外设接口就会向DMA控制器发送相应的“DMA请求”信号,DMA控制器接受到该信号后,就会向CPU发送“总线请求”信号,要求CPU释放总线,请求由DMA控制器控制总线以进行外设和主存之间的数据交换。CPU总是在一个总线事务结束后让出总线。DMA控制器每传送一个数据,就使数据个数计数器减1。当该计数器为0时,表示传送过程结束。此结束信号被送到外设接口,引起外设接口向CPU发送一个“DMA传送结束”中断请求。


(3)DMA结束处理。当CPU接收到“DAM传送结束”中断请求后,就调出相应的中断服务程序进行DMA结束处理。


选项A中前半部分的描述是正确的,但是,显然,“DMA使得不同速度的硬件设备可以直接通信,不通过 CPU 干预”这句话存在问题。首先,DMA传送方式用于快速设备和主存之间直接交换数据,而不是用于不同速度的设备之间直接通信;其次,DMA传送之前和DMA传送之后,还是需要CPU参与,并不是完全不需要CPU干预。


选项B是正确的。如果在DMA需要访问主存时,正好CPU也正好需要访问主存或正在访问主存,那么,DMA控制器的优先级比CPU的优先级更高,CPU会让出总线。如果DMA需要访问主存时,总线正好是空闲的,那么,DMA控制器可直接使用总线。


选项C是正确的。无论把“DMA速度快”理解成“采用DMA方式进行输入输出时外设和主机之间的数据传输速度快”,还是理解成“采用DMA方式进行输入输出时CPU利用率高,从而使得整个系统的处理速度加快”,把“DMA”和“速度快”关联起来总是正确的。


选项D是错误的。DMA控制输入输出方式下,在DMA传送结束时,外设会向CPU发出“DMA传送结束”中断请求,由CPU执行中断服务程序来进行DMA结束处理。


本文已收录于《横扫Offer--程序员招聘真题详解700题》一书,开点工作室著,清华大学出版社,该书目前已编写修改完成,7月即将上市。更多程序员笔试面试真题的精彩详解请参见该书。

全部评论
答案那栏写错了哦,应该写AC
点赞 回复 分享
发布于 2016-07-13 08:21

相关推荐

刷牛客的我很豁达:你是不是对算法有什么误解,你没手握两篇顶刊顶会,还想搞算法岗,有顶刊顶会在算法岗算才入门
点赞 评论 收藏
分享
用微笑面对困难:加急通知你不合适,也很吗有礼貌了你。
点赞 评论 收藏
分享
评论
5
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务