成就梦想

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 22 文章 :: 6 评论 :: 0 Trackbacks
DMA(Direct Memory Access,直接内存存取)

 在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过下面的4个步骤:
1,DMA请求
2,DMA响应
3,DMA传输
4,DMA结束
DMA与cpu 使用内存的三种方式:
1.停止CPU访问内存
2.周期挪用
3.DMA与CPU交替访内

设备控制器不能通过 DMA 直接存储到用户空间,但通过利用上面提到的第一
项,则可以达到相同效果。把内核空间地址与用户空间的虚拟地址映射到同一个物理地址,这样,
DMA 硬件(只能访问物理内存地址)就可以填充对内核与用户空间进程同时可见的缓冲区(见图)


这样真是太好了,省去了内核与用户空间的往来拷贝,但前提条件是,内核与用户缓冲区必须
使用相同的页对齐,缓冲区的大小还必须是磁盘控制器块大小(通常为 512 字节磁盘扇区)的倍
数。操作系统把内存地址空间划分为页,即固定大小的字节组。内存页的大小总是磁盘块大小的倍
数,通常为 2 次幂(这样可简化寻址操作)。典型的内存页为 1,024、2,048 和 4,096 字节。虚拟和
物理内存页的大小总是相同的。
posted on 2012-06-14 11:49 iamct 阅读(324) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: