zoukankan      html  css  js  c++  java
  • DMA的基本概念

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    设计模式1 设计模式概述
    关于jdk的配置
    搭建webpack项目框架
    移动乐淘day1
    前后端开发(2):浏览器与PHP程序的交互
    Ajax中post与get的区别
    Web前端:2、盒模型的组成
    Web前端:1、HTML&CSS概述及结构
    VMware11虚拟机安装Redhat6.5视频演示
    VMware虚拟机中安装Linux系统步骤(Redhat6.5)
  • 原文地址:https://www.cnblogs.com/dylancao/p/10119037.html
Copyright © 2011-2022 走看看