DMA的基本概念

DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。

数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。

在第一种情况下,调用的步骤可以概括如下(以read为例):

(1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据。进程进入睡眠。

(2)硬件将数据写入 DMA 缓冲区并在完成时产生一个中断。

(3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程现在可以读取数据了。

第二种情形是在 DMA 被异步使用时发生的。以数据采集设备为例:

(1)硬件发出中断来通知新的数据已经到达。

(2)中断处理程序分配一个DMA缓冲区。

(3)外围设备将数据写入缓冲区,然后在完成时发出另一个中断。

(4)处理程序利用DMA分发新的数据,唤醒任何相关进程。

网卡传输也是如此,网卡有一个循环缓冲区(通常叫做 DMA 环形缓冲区)建立在与处理器共享的内存中。每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,并且发出中断。然后驱动程序将网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。

驱动程序在初始化时分配DMA缓冲区,并使用它们直到停止运行。

原文地址:https://www.cnblogs.com/dylancao/p/10119037.html

时间: 2024-10-06 09:07:27

DMA的基本概念的相关文章

PCI总线 DMA burst 基本概念

转载地址:http://blog.csdn.net/sunjiajiang/article/details/7945057 DMA和burst不是一个概念. DMA传送不经过CPU的控制,假如硬盘的数据不能经过DMA控制器读到内存,那么每完成一次将硬盘的数据读出来,再存放到内存的操作,都要通过CPU运行几条读写指令来完成,这时CPU就做不了别的事了,如果有DMA控制器,则这个过程不需要CPU的参与,只需要占用总线就可以了.CPU还可以去完成别的运算. Burst操作还是要通过CPU的参与的,与单

基本的DMA控制器

DMA的基本概念 直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式.在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行 .DMA方式一般用于高速传送成组数据.DMA控制器将向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU报告传送操作的结束. DMA方式的主要优点是速度快.由于CPU根本不参加传送操作,因此就省去了CPU取指令.取数.送数等操作.在数据传送过程中,没有保存现场.恢复现场之类的

WDF DMA 一些概念(一)

cache一致性 On machines or bus configurations inwhich the hardware does not ensure cache coherence for DMA operations-such ascertain Intel Itanium systems-the standard Windows DMA implementation does theprocess-specific work that is necessary to ensure

计算机基本概念

计算机基本概念 一.计算机系统 计算机系统的基本组成: 在计算机内部,数值.文字.声音.图形图像等各种信息都必须经过数字化编码后才能被传送.储存和处理:数值.文字和英文字母等都被认为是字符,任何字符进入计算机时,都必须转换成二进制表示形式,称为字符编码. 总线是连接多个设备的信息传送通道,实际上是一组信号线.广义地讲,任何连接两个以上电子元器件都可以称为总线,总线主要分为系统总线(内总线)和通信总线(外总线). 内总线:用于计算机各组成部分,CPU.内存和接口等的连接:PCI总线是目前微型机上广

多线程和进程的概念

1.耗时的操作使用线程,提高应用程序响应 2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求. 3.多CPU系统中,使用线程提高CPU利用率 4.改善程序结构.一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改. 使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更"节俭"的多任务操作方式.在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段.堆栈段和数据段,这是

Java NIO 之一 I/O基本概念

缓冲区操作 缓冲区,以及缓冲区如何工作,是所有 I/O 的基础.所谓"输入/输出"讲的无非就是把数据移进或移出缓冲区.进程执行 I/O 操作,归结起来,也就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么用数据把缓冲区填满(读). 进程使用 read( )系统调用,要求其缓冲区被填满.内核随即向磁盘控制硬件发出命令,要求其从磁盘读取数据.磁盘控制器把数据直接写入内核内存缓冲区,这一步通过 DMA 完成,无需主 CPU 协助.一旦磁盘控制器把缓冲区装满,内核即把数据从内核空

JavaNIO(一)(IO基本概念扫盲篇)

一.基本IO概念 1.什么是流IO? 1.1 基本概念 流是一种抽象概念,它代表了数据的无 结构化传递. 按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而 向流中添加数据的操作称为插入操作.用来进行输入输出操作的流就称为IO流.换句话说,IO流就是以流的方式进行输入输出.输入输出(IO)是指计算机同 任何外部设备之间的数据传递.常见的输入输出设备有文件.键盘.打印机.屏幕等.数据可以按记录(或称数据块)的方式传递,也可以流的方式传递. 1.2 形

[linux驱动][Linux内存]DMA学习笔记一

http://www.cnblogs.com/hanyan225/archive/2010/10/28/1863854.html 1,概念DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制.使用DMA可以是系统CPU从实际的IO数据传输过程中摆脱出来,从而大大提供系统吞吐率.DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发地执行其他任务,当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,然后由CPU执行相应的中断服务程序进行后

Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)

1磁盘分区相关的概念 1.1什么是磁盘 磁盘就是计算机的外部存储器设备,即将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失.简单地讲,就是一种计算机信息载体,也可以反复地被改写.磁盘有软盘和硬盘之分: 1.1.1软盘(Floppy Disk) 软盘是个人计算机(PC)中最早使用的可移介质.软盘的读写是通过软盘驱动器完成的.软盘驱动器设计能接收可移动式软盘,目前常用的就是容量为1.44MB的3.5英寸软盘.软盘存取速度慢,容量也小,但可装可卸.携带方便.作为