精华内容
下载资源
问答
  • DMA方式与中断的区别

    2015-07-22 10:25:27
    这篇文章讲解了DMA方式和中断方式的区别,对于初学操作系统的学生来说是很好的学习和复习资料,有很大益处
  • 单片机I/O设备控制方式主要有三种:程序循环检测、中断驱动直接内存访问。

    目录

    1、程序循环检测方式

    2、中断驱动方式

    3、直接内存访问方式


    单片机I/O设备的控制方式主要有三种:程序循环检测、中断驱动和直接内存访问。

    1、程序循环检测方式

    程序循环检测方式的基本思路是:在程序(一般是设备驱动程序)当中,通过不断地检测I/O设备的当前状态,来控制一个I/O操作的完成。具体来说,在进行I/O操作之前,要循环地去检测该设备是否已经就绪。如果是,就向控制器发出一条命令,启动这一次的I/O操作。然后,在这个操作的进行过程中,也要循环地去检测设备的当前状态,看它是否已经完成。总之,在I/O操作的整个过程中,控制I/O设备的所有工作都是由CPU来完成的。这种方式也称为是繁忙等待方式或轮询方式。它的缺点主要是:在进行一个I/O操作的时候,要一直占用着CPU,这样就会浪费CPU的时间。

    下图所示是循环检测方式的一个例子。假设I/O地址采用的是内存映像编址方式,现在需要在打印机上打印一个字符串“ABCDEFGH”。对于操作系统来说,要完成这个任务,其实很简单,只要把这八个字符一个接一个地送到打印机设备的I/O端口地址就可以了。如图(a)所示,这八个字符被保存在系统内核的一个缓冲区当中,并用指针p来指向它们。status_ reg 这个内存单元对应于打印机控制器里面的状态寄存器, data register这个内存单元对应于它的数据寄存器,现在要做的事情,就是把这八个字符一个接一个地放到数据寄存器当中。

    图(b) 所示是相应的程序。它的基本思路是:逐个去打印每一个字符。在打印一个字符之前,首先用一个while语句来检测打印机的当前状态,看它是否已经就绪,如果还没有就绪,就在这里循环等待;如果已经就绪,就把当前的字符送入到打印机的数据寄存器当中。在本例中,由于采用了内存映像的编址方式,因此,在程序员眼中,状态寄存器和数据寄存器都被看成是普通的内存单元,对它们的访问也是普通的赋值操作,不需要专门的I/O指令。但是这个赋值操作的功能与普通的赋值操作不同,它相当于是给打印机发出了一个命令,让它去打印一个字符。另外,每次打印完-一个字符后,都要重新判断设备是否就绪,因为相对于CPU来说,打印机是一个慢速设备,它在执行打印命令时,不可能像CPU那么快,而是需要一定的时间来完成。因此,当CPU把一个字符交给它之后,必须循环等待一段时间, 才能去处理下一一个字符。

    2、中断驱动方式

    循环检测的控制方式,需要占用大量的CPU时间。假设打印机的打印速度为100字符/秒,在循环检测方式下,当一个字符被写入到打印机的数据寄存器后,CPU要等待10ms才能把下一个字符写进去,而这10ms的时间,就在循环等待中被白白浪费掉了。为了解决这个问题,一种办法就是让CPU在这10ms的时间内,先去运行其他的任务,然后等打印机处理完上一个字符后,CPU再接着处理下一个字符。这种方法被称为是中断驱动的控制方式。它的基本思路是:当一个用户任务需要进行I/O操作时,会去调用相应的系统函数,由这个函数来发起I/O操作,并将当前任务阻塞起来,然后调度其他的任务去使用CPU。当所需的I/O操作完成时,相应的设备就会向CPU发出一个中断,系统在中断处理程序当中,如果发现还有数据需要处理,就再次启动I/O 操作。在中断驱动的控制方式下,数据的每一次读写还是通过CPU来完成,只不过当I/O设备在进行数据处理时,CPU不必在那里等待,而是可以去执行其他任务。

    仍以打印字符的问题为例。如下图所示,在中断驱动方式下,对于用户程序来说,它所做的事情可能是:把需要打印的字符串放到一个缓冲区buffer中,然后调用一个系统调用函数print。在print 系统调用中,首先把用户缓冲区中的字符串复制到系统内核的字符数组p当中,然后打开中断。接下来是一个循环检测语句,判断打印机的当前状态是否就绪,当打印机就绪后,就把第一个字符放到数据寄存器里面去打印。接下来,未等该字符打印完,就去调用系统的调度器,选择另一个就绪任务去运行,而当前的这个任务,就会被阻塞起来。

    当打印机完成一个字符后,将向CPU发出一个中断。在中断处理程序当中,首先判断一下,如果所有的字符都已打印完,那么就去阻塞队列中,把用户任务唤醒,使它处于就绪状态;如果还有字符需要打印,就直接把下一个字符复制到打印机的数据寄存器当中,启动打印操作,而不需要再去循环地判断打印机是否就绪。接下来是一些后继处理,先向中断控制器发出一个确认信号,然后结束中断处理程序,返回到被中断的那个任务。

    3、直接内存访问方式

    在中断驱动的控制方式下,每一次数据读写还是通过CPU来完成,而且每一次处理的数据量很少,如1个字节,所以中断出现的频率就很高。而中断处理需要额外的系统开销,所以也会浪费一些CPU时间。因此人们又提出了一种新的解决办法,也就是直接内存访问(Direct Memory Access, DMA)的控制方式。它的基本思路是:让DMA控制器来代替CPU,完成I/O设备与内存之间的数据传送,从而空出更多的CPU时间,去运行其他的任务。

    仍以打印字符的问题为例。如下图所示,在DMA控制方式下,用户程序所做的事情是完全相同的,即把字符串复制到一个缓冲区buffer 当中,然后调用系统函数print。在print函数当中,首先也是把buffer 当中的字符串复制到系统内核的缓冲区p当中,然后对DMA控制器进行编程,设置它的各个寄存器的内容,包括内存起始地址、需要打印的字符个数、数据传输的方向等。之后,print 函数就完成了任务,所以就调用系统的调度程序,

    选择另一个就绪任务去运行,而当前的这个任务就会被阻塞起来。接下来,当CPU正在执行这个新任务的同时,DMA控制器会与设备控制器进行交互,把需要打印的字符,一个接一个地送到打印机控制器当中。在所有的字符都打印完之后,就向CPU发出一个中断,表明这一次的I/O操作已经全部完成了。因此,在中断处理程序里面,已经没有什么实质性的工作,先是向中断控制器发出一个确认信号,然后唤醒刚才被阻塞的任务。

    采用DMA控制方式,最大的优点是减少了中断的次数。原本每打印一个字符,都要产生一次中断,而现在当所有的字符都打印完后,才会产生一个中断,这样就减少了中断处理的开销。

    展开全文
  • 简述中断和 DMA 的区别

    千次阅读 2020-04-17 21:07:53
    2、DMA方式则是以数据块为单位传输,在所要求传送数据块全部传送结束时要求CPU进行中断处理,这样大大减少CPU进行中断处理次数。DMA方式不需CPU干预传送操作,不占用CPU任何资源, 整个数据传输操作在一个称为...

    1、中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理。
    2、DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,这样大大减少CPU进行中断处理的次数。DMA方式不需CPU干预传送操作,不占用CPU任何资源, 整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
    中断方式是程序切换,每次操作需要保护和恢复现场,中断次数多,CPU需要花较多的时间处理中断,中断次数多也会导致数据丢失。但是DMA是必须利用中断的,否则CPU无法得到数据已经传输结束,当数据传输开始结束的时候,需要给CPU一个中断信号,CPU进行处理.这个就大大的节约了CPU的资源。
    3、中断方式的数据传送方向是由设备到CPU再到内存,或者相反。
    DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。

    原文链接:https://blog.csdn.net/guomutian911/article/details/46291635

    展开全文
  • 中断DMA的区别

    千次阅读 2019-03-02 13:41:49
    DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的... 所以中断和DMA的区别就是DMA不需CPU参与而中断...

    DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率.

    中断:是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。

         所以中断和DMA的区别就是DMA不需CPU参与而中断是需要CPU参与的。

    展开全文
  • DMA 中断和查询三者的区别

    千次阅读 2017-03-14 10:21:45
    要把外设数据读入内存或把内存数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU利用率。  2: 中断传送 是由CPU通过中断服务程序来传送,...
    1:
    DMA(DIRECT MEMORY ACCESS)
    即直接存储器存取,是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。 


    要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。 


    2:
    中断传送
    是由CPU通过中断服务程序来传送,每次要保护断点,保护现场需要多条指令,每条指令要有取指和执行时间。为了充分利用CPU的高速性能和实时操作的要求,一般中断服务程序要求是尽量的简短,所以当要实现大量数据交换的情况,如从磁盘调入程序或图形数据,如果采用中断传送方式,必然会引起频繁中断的情况,需要执行很多与数据传送无关的中断指令,所以会大大降低系统的执行效率,无法提高数据传送速率。对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。


    3:查询方式:主要用于CPU不太忙且传送速度不高的情况下。无条件传送方式作为查询方式的一个特例,主要用于对简单I/O设备的控制或CPU明确知道外设所处状态的情况下。 
    (2) 中断方式:主要用于CPU的任务比较忙的情况下,尤其适合实时控制和紧急事件的处理 
    (3) DMA方式(直接存储器存取方式):主要用于高速外设进行大批量数据传送的场合。




    ◆中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理
    ◆DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数
    ◆中断方式的数据传送是由设备到CPU再到内存,或者相反。
    ◆DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。
    展开全文
  • STM32 DMA方式和中断方式查询的区别

    千次阅读 2018-10-24 16:38:59
    要把外设数据读入内存或把内存数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU利用率。  2: 中断传送 是由CPU通过中断服务程序来传送,每次要...
  • DMA与普通中断方式的区别

    万次阅读 2016-06-30 22:46:04
    DMA方式则是以数据块为单位传输,在所要求传送数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理次数 总结:DMA方式不需CPU干预传送操作,仅仅是开始结尾借用CPU一点时间,其余不占用CPU...
  • 单片机 中断、查询和DMA的区别

    千次阅读 2014-04-21 18:41:38
    中断就是cpu做其他事,当发生情况时,cpu被拉去处理发生情况,之后就继续它原先工作。 查询是cpu时时刻刻关注着某一状态,当一有变化时,就做出相应反应。所以在这种情况中cpu是很累DMA就是利用另外...
  • DMA方式与中断控制方式以及通道方式的区别1、DMA方式和中断控制方式的主要区别2、DMA方式与通道方式的主要区别 1、DMA方式和中断控制方式的主要区别 ①、中断控制方式在每个数据传送完成之后中断CPU,而DMA控制方式...
  • 中断DMA区别

    千次阅读 多人点赞 2015-05-31 23:17:49
    2、DMA方式则是以数据块为单位传输,在所要求传送数据块全部传送结束时要求CPU进行中断处理,这样大大减少CPU进行中断处理次数。DMA方式不需CPU干预传送操作,不占用CPU任何资源, 整个数据传输操作在一个...
  • 【建议收藏】 计算机组成原理—DMA中断控制、I/O之间联系与区别 本篇文章主要是记录我对于计算机组成原理中所遇到一些疑问疑惑记录-----主要用于考研记录 本章一共有几个知识点比较懵: ​ 1.为什么要...
  • stm32F1串口DMA和stm32F4大同小异,使用时要区分通道和数据流区别。 直接上代码 usart.c #include "usart.h" uint8_t Uart1_Rx_Buff[DMA_UART1_RX_SIZE]; uint8_t Uart1_Tx_Buff[DMA_UART1_TX_SIZE]; ...
  • SG DMA与普通DMA(block DMA的区别

    千次阅读 2018-01-10 14:10:34
    DMA传输数据过程中,要求源物理地址目标物理地址必须是连续。但是在某些计算机体系中,如IA架构,连续存储器地址在物理上不一定是连续,所以DMA传输要分成多次完成。如果在传输完一块物理上连续数据后...
  • 外部中断和事件的区别

    千次阅读 2018-01-08 15:27:04
    下图为外部中断和事件示意图,图中蓝色红色虚线分别为外部中断和事件控制流程图。 由该图可知,中断和事件并没有区别,只是在芯片内部呈现区别中断到达步骤5后向CPU产生中断请求,需要软件的中断服务函数...
  • 中断和 事件的区别

    千次阅读 2014-09-01 17:49:49
    简单点就是中断一定要有中断服务函数,但是事件却没有对应函数. 但是事件可以触发其他关联操作,比如触发DMA,触发ADC采样等. 可以在不需要CPU干预情况下,执行这些操作. 中断则必须要CPU介入.  看看下面这个...
  • DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高...所以中断和DMA的区别就是DMA不需CPU参与而中断是需要CPU
  • DMA传送方式的优先级高于程序中断,两者的区别主要表现在对CPU的干扰程度不同。 程序中断请求不但使CPU停下来,而且要CPU执行中断服务程序为中断请求服务,这个请求包括了对断点现场的处理以及CPU与外设的传送,...
  • STM32 外部中断和事件 的区别和理解

    千次阅读 2016-08-24 17:22:45
    事件是中断的触发源,时间可以触发中断,并且事件也是其他一些操作的触发源,比如DMA,还有TIM,而中断是无法触发这些操作的,所以事件和中断区分开。 你要好好地看看相应的模块框图,参考下图:当你只要产生...
  • 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。 事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;而中断是不能触发这些操作的,所以要把事件与中断区分开。
  • DMA就是直 接内存访问意思,也就是说,拥有DMA功能硬件在内存进行数据交换时候可以不消耗CPU资源。 只要CPU在发起数据传输时发送一个指令,硬件就开 始自己内存交换数据,在传输完成之后硬件会触发一个...
  • 目录 IO结构功能: 查询、中断DMA方式。...对于裸机中断和OS中断区别: 在裸机中中断,在某一时刻中断发生,执行中断服务程序,中断服务程序执行完成后,返回中断发生处继续执行其它程序。(保护现场)。
  • 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。 事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;而中断是不能触发这些操作的,所以要把事件与中断区分开。...
  • STM32中断与事件的区别

    千次阅读 2015-06-27 17:39:55
    事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。  事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新; 简单点就是中断一定要有中断服务函数,但是事件却没有...
  • DMA copyCPU copy

    2020-05-14 23:02:15
    DMA(Direct Memory Access) 直接内存访问,是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际...与CPU copy的区别 当程序或者操作者对CPU发出指令,这些指令..
  • 它们之间的区别在于USART包含高级功能,例如可选的同步通信,而UART中不提供。 如果不使用这些功能,则可以认为USARTUART外设是相同的。 就本应用笔记而言,我们将仅使用术语UART ,而USART外设也完全相同。 STM
  • 由于项目开发原因要用到STM32H7系列微控制器,为了缩短项目开发周期提高效率,采用了ST官方STM32CubeIDE进行开发,这个集成开发环境特点主要有:1.从硬件电路设计开始为硬件工程师提供各个管脚IO功能...
  • 1、Cache和寄存器、虚拟存储器的区别 2、计算机组成有哪些 3、CISC和RISC 4、数据寻址方式 5、指令流水线 6、中断处理流程 7、DMA和中断的区别

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

dma和中断的区别