精华内容
下载资源
问答
  • 中断和轮询
    千次阅读
    2021-09-07 17:39:30

    外部设备与中央处理器交互一般有两种手段:轮询和中断。 


    轮询(Polling) 


    很多I/O设备都有一个状态寄存器,用于描述设备当前的工作状态,每当设备状态发生改变时,设备将修改相应状态寄存器位。通过不断查询设备的状态寄存器,CPU就可以了解设备的状态,从而进行必要的I/O操作。为了节约CPU资源,查询工作往往不是连续的,而是定时进行。 
    轮询方式具有简单、易实现、易控制等优势,在很多小型系统中有大量应用。对那些实时敏感性不高、具有大量CPU资源的系统来说,轮询方式有很广泛的应用。最典型的用途就是在那些任务比较单一的单片机上,嵌入式系统中也有应用。 
     


    轮询方式主要存在以下不足: 

    1. 增加系统开销。无论是任务轮询还是定时器轮询都需要消耗对应的系统资源。 
    2. 无法及时感知设备状态变化。在轮询间隔内的设备状态变化只有在下次轮询时才能被发现,这将无法满足对实时性敏感的应用场合。 
    3. 浪费CPU资源。无论设备是否发生状态改变,轮询总在进行。在实际情况中,大多数设备的状态改变通常不会那么频繁,轮询空转将白白浪费CPU时间片。 


    中断(Interrupt) 

    中断就是由硬件或者软件发出的一种IRQ(中断请求)信号,一旦CPU接收到中断信号,CPU就会暂停当前执行的任务,并且保留现场,去响应外设的中断请求。但是注意,这个中断可以说是被动的,因为你不知道它什么时候会发生中断。

    中断通知机制通过硬件信号异步唤起处理器的注意,解决了外部设备与处理器之间速度不匹配导致的资源浪费问题。 


    中断与轮询的区别

    • 轮询方式存在空转损耗,它是可控并且实时的。消耗大量cpu的处理时间,周期连续检测外部事件的发生。
    • 中断的高优先级和快速响应要求在极端条件下将造成“活锁”效应。

      各种各样的输入输出设备通过中断处理方式进行并行操作,使中断次数增加,会造成CPU无法响应中断;

      如果在缓冲区装满数据之后发生中断。那么在数据传送过程中,发生中断的机会较多,将耗去大量的CPU处理时间。

    • 中断不是协议,而是一种硬件机制;轮询反之。
    • 处理器在每个指令周期都会去查看中断寄存器,如果中断寄存器有效,也就是发生了中断,那么cpu会执行一系列与中断相关的操作。也就是说中断也是需要CPU check。中断和轮询并不是完全相反。
    更多相关内容
  • 在本文中,英锐恩单片机开发工程师将对单片机中断和CPU轮询做个简单的介绍。中断中断是一种硬件机制,在这种机制中,设备会通知CPU它需要引起注意。中断可以随时发生。因此,当CPU通过指示中断请求线收到中断信号...

    在单片机编程过程中,经常会使用到中断。那么,什么是单片机中断,它与CPU的轮询有什么区别?在本文中,英锐恩单片机开发工程师将对单片机中断和CPU轮询做个简单的介绍。

    60c49b2c5cc57a0f467dd8992e1c73d5.png

    中断:

    中断是一种硬件机制,在这种机制中,设备会通知CPU它需要引起注意。中断可以随时发生。因此,当CPU通过指示中断请求线收到中断信号时,CPU停止当前进程并通过将控制权传递给服务设备的中断处理程序来响应该中断。

    轮询:

    轮询不是一种硬件机制,它是一种协议,CPU会稳定地检查该设备是否需要注意。无论设备告诉处理单元它希望进行硬件处理的位置如何,在轮询过程中,处理单元都会不断询问I/O设备是否希望进行CPU处理。CPU不断检查连接到其上的每个设备,以侦查是否有任何设备需要硬件注意。

    每个设备都有一个指示命令就绪的位,指示该设备的状态,即该命令是否被硬件终止。如果命令位已准备就绪,则该命令已失效;否则,如果该位为零,则该命令无效。

    让我们看看中断和轮询之间的区别:

    1、在中断时,设备会通知CPU它需要引起注意。而在轮询中,CPU会稳定地检查设备是否需要注意。

    2、中断不是协议,而是一种硬件机制。轮询不是硬件机制,而是协议。

    3、在中断中,该设备由中断处理程序提供服务。轮询时,该设备由CPU维修。

    4、断可以随时发生。轮询时,CPU会以固定或适当的间隔稳定地对设备进行投票。

    5、在中断中,中断请求线用作指示设备需要维修的指示。在轮询时,命令就绪位用作指示,表明设备需要维修。

    6、在中断中,一旦任何设备将其中断,处理器就会受到干扰。相反,在轮询中,处理器通过重复检查每个设备的命令就绪位来浪费无数的处理器周期。

    以上就是英锐恩单片机开发工程师分享的单片机中断和轮询之间的区别。英锐恩专注单片机应用方案设计与开发,提供8位单片机、16位单片机、32位单片机、运放芯片和模拟开关。

    展开全文
  • 中断和轮询的差别

    2020-05-22 18:02:18
    二、80x86微处理器的中断 80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。 CPU要从主程序转入中断服务程序,必须知道该中断服务程序...

    中断的基本概念

    程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。

    二、80x86微处理器的中断 80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。 CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。

    中断的一般过程:

    主程序只是在设备A,B,C数据准备就绪时,才去处理A,B ,C,进行数据交换。在速度较慢的外围设备准备自己的数据时,CPU照常执行自己的主程序 。在这个意义上说,CPU和外围设备的一些操作是并行地进行的,因而同串行进行的程序查询方式相比,计算机系统的效率是大大提高了。如下图:在这里插入图片描述
    实际的中断过程还要复杂一些,下图示出了中断处理过程的详细流程图.当CPU执行完—条现行指令时,如果外设向CPU发出中断请求、那么CPU在满足响应条件的情况下,将发出中断响应信号,与此同时关闭中断(“中断屏蔽”触发器置“1”),表示CPU不再受理另外—个设备的中断。这时、CPU将寻找中断请求源是哪个设备。并保存CPU自己的程序计数器(Pc)的内容.然后,它将转移到处理该中断源的中断服务程序.CPU在保存现场信息,设备(如文换数据)以后.将恢复现场信息.在这些动作完成以后,开放中断(“中断屏蔽”触发器置‘o”),并返网到原来被中断的主程序的下一条指令。
    (1) 尽管外界中断请求是随机的,但CPU只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求,这样才不致于使当前指令的执行受到干扰。公操作是指一条指令执行结束后CPU所进行的操作,如中断处理、直接内存传送、取下条指令等 。外界中断请求信号通常存放在接口中的中断源锁存器里,并通过中断请求线连至CPU,每当一条指令执行到末尾,CPU便检查中断请求信号。若中断请求信号为“1”,则CPU转入“ 中断周期”,受理外界中断。
    (2) 为了在中断服务程序执行完毕以后正确地返回到原来主程序被中断的断点(PC内容)而继续执行主程序,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态(包括寄存器的内容和一些状态标志位)都保存到堆栈中去。这些操作叫做保存现场。
    (3) 当CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求。为了不致造成混乱,在CPU的中断管理部件中必须有一个中断屏蔽触发器,它可以在程序的控制下置“1”(设置屏蔽),或置“0”(取掉屏蔽)。只有在中断屏蔽标志为“0”时,CPU才可以受理中断。当一条指令执行完毕CPU接受中断请求并作出响应时,它一方面发出中断响应信号INTA,另一方面把中断屏蔽标志置“1”,即关闭中断。这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完毕以后,它才重新使中断屏蔽标志置“0”,即开放中断,并返回主程序。因此,中断服务程序的最后必须有两条指令,即开中断指令和返主指令,同时在硬件上要保证返主指令执行以后才受理新的中断请求。
    (4) 中断处理过程是由硬件和软件结合来完成的。如在前图中,中断周期由硬件实现,而中断服务程序由机器指令序列实现。后者除执行保存现场、恢复现场、开放中断并返回主程序任务外,对要求中断的设备进行服务,使其同CPU交换一个字的数据,或作其他服务。

    轮询方式的基本概念

    轮询(Polling)I/O方式或程序控制I/O方式,是让CPU以一定的周期按次序查询每一个外设,看它是否有数据输入或输出的要求,若有,则进行相应的输入/输出服务;若无,或I/O处理完毕柏,CPU就接着查询下一个外设。

    所需硬件:外设接口提供状态端口、数据端口

    软件机制:应用程序必须定时查询各个接口的状态端口,判断是否需要输入、输出数据,如果需要,则通过数据端口进行数据操作。

    特点:CPU通过执行指令主动对外部设备进行查询,外部设备处于被动地位。
    在这里插入图片描述

    轮询方式与中断方式的比较

    速度
    程序控制方式:

    由硬件的速度指标决定,由于“程序控制方式”完全采用软件的方式对外设接口进行控制,所以它的硬件操作只是普通的端口读写,并无特别之处,其速度指标由总线传输速度、端口的响应速度共同决定。

    对于这种外设控制方式,速度指标关键在于软件。

    中断处理方式:

    中断处理方式本身所作的原子操作解释和程序控制方式是一致的。

    只不过因为加入了中断请求和响应机制,对状态端口的读取变成了在中断响应过程中对中断号的读取,对状态端口的判断变成了对中断入口地址的确定。

    从本质上来说,中断处理方式和程序控制方式本身的速度指标一致,没有大的差别。

    可靠性
    程序控制方式:

    由于硬件不支持中断方式,因此操作系统把CPU控制权交给应用程序后,只要应用程序不交还CPU控制权,操作系统就始终不能恢复对CPU的控制(无定时中断)。应用程序与操作系统都是软件模块,操作系统属于核心模块,它们之间存在交接CPU控制权的关系。正是由于这样的关系,一旦使用对外设的“程序控制方式”时,应用程序出现死锁,则操作系统永远无法恢复对系统的控制。应用程序的故障通过外设控制方式波及到作为核心模块的操作系统,因此,根据关联可靠性指标的计算可知,“程序控制方式”的关联可靠性指标很低。

    中断处理方式:

    由于提供定时中断,操作系统可以在应用程序当前时间片结束后通过中断服务程序重新获得对CPU的控制权。应用程序的故障不会波及到操作系统,因此,中断处理方式的关联可靠性指标高。

    可扩展性
    程序控制方式:

    由于所有应用程序中都包含对端口的操作,一旦硬件接口的设计发生变化,则所有应用程序都必须进行修改,这会使修改费用升高很多倍。因此,程序控制方式会使相关硬件模块的局部修改指标相对较低。

    中断处理方式:

    应用程序不直接操作端口,对端口的操作是由中断服务程序来完成的。如果某个硬件接口的设计发生了变化,只需要修改它相关的中断服务程序即可。因此,中断处理方式使得相关硬件模块的局部修改指标较高。

    生命期
    “程序控制方式”(CPU查询方式)在早期的计算机系统中能够满足应用需求;但是随着外部设备种类的增多、速度差异的加大,这种方式逐渐成为系统性能提高的障碍。它的生命期只限于早期计算机阶段,因为当时外部设备少,且都是低速设备,到8位机出现以后,这种外设控制方式(体系结构)被淘汰。

    “中断处理方式”(外设请求方式)能够协调CPU与外设间的速度差异,能够协调各种外设间的速度差异,提高系统的工作效率(速度指标)。使应用程序与外设操作基本脱离开来,降低了程序的设备相关性(关联可靠性指标、局部修改指标)。虽然目前某些快速设备相互间的通信没有通过CPU,也没有使用中断处理方式,但是对于慢速设备、设备故障的处理来说,中断处理方式仍然是最有效的。无论将来计算机系统中的元件怎样变化,只要存在慢速设备与快速CPU之间的矛盾,使用中断处理方式都是适合的。即便不使用中断服务程序,中断的概念也会保持很久。在短时期内,计算机系统还无法在所有领域离开人工交互操作,人的操作速度一定比机器的处理速度慢,因此慢速设备将仍然保持存在(但这不是慢速设备存在的唯一原因)。正因为存在这样的需求,中断处理方式具有较长的生命期。

    (转载自:http://www.cnblogs.com/jhxk/articles/1893314.html)
    其他深度好文:https://blog.csdn.net/sum_TW/article/details/71419991?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

    展开全文
  • 在我学习51单片机的时候,一些资料说通信的方式有两种,分别是中断和轮询,并且中断会占用更少的CPU资源。当时我看的似懂非懂就开始写(抄)程序。但是这个一定是对的吗? 我们先谈谈单片机发送一个字节的数据。...

            在了解单片机和外设通信的时候,我们不仅要了解通信的协议,我们通信的方式。其中通信协议就像是我们说话的语法,如果语法错了,那么外设就一个字听不懂了;如果通信方式错了,外设就可能就理解不了我们说话的意思了。

          在我学习51单片机的时候,一些资料说通信的方式有两种,分别是中断和轮询,并且中断会占用更少的CPU资源。当时我看的似懂非懂就开始写(抄)程序。但是这个一定是对的吗?

          我们先谈谈单片机发送一个字节的数据。如果我们要连续每隔一段时间发送一个字节数据,我们首先就要向寄存器内写入我们想要发送的数据。然后单片机的硬件就会为我们完成数据的发送,并且在发送完成后产生中断!但是,我们已经发送完了我们想要发送的数据了,再次进入中断还有什么意义?所以我认为:在这种模式或者说是需求下,我们完全不必使用中断,只需要每间隔一段时间调用我们的发送函数(发送函数只需要完成写寄存器的指令就行了)便可以了。

            我们再来谈谈单片机接收一个字节的数据。在单片机接收完一个字节的数据后,会产生中断。如果对面传来的数据的时间间隔非常小,在我们单片机的处理能力跟不上的时候,我们也可以不必使用中断,只需要定时调用接收函数(接收函数只需要完成读取寄存器的值就行了)便可以了。当然这个时候,我们可能会造成一定的数据的丢失。当然我们也可以使用中断,这样就可以避免数据的丢失。但是,如果我们接收数据的速度大于我们处理数据的速度时,我们还是会产生丢失数据的情况。

            我们在来谈谈单片机发送一个数据包的情况。这就要求我们发送的数据的时间间隔非常小。(我没有遇到过这种情况,完全靠想象)。如果我们采用轮询的话,那么就需要完成判断是否发送完成发送这一个动作,我的理解是这样就会占用CPU的资源,这个动作也会消耗一定的时间,但是我认为这个时间应该是可以忽略的。所以我们如果采用中断的话,我们就可以完成一次发送一个数据包的需求了。

            最后,我们来谈谈单片机接收一个数据包的情况。如果一个数据包内的数据发送时间间隔是非常非常小的话,采用轮询的方式必然会产生一个判断的时间。如果判断的时间大于发送时间间隔的话,那么就很可能产生下一帧数据接收不成功的情况,这个是属于寄存器里没有写入数据,我们无法在后续的程序里来弥补这个错误。所以当然是中断方式比较好啊。当然还用一种叫做FIFO的结构,应该对这种情况有所帮助,但是我没有接触了解使用过,也就整不明白了。

            以上都是我自己个人的理解或者说是猜想吧,也没有得到过验证,也都是从我少的可怜的、失败的尝试中总结出来的。不够准确,不够专业,但也是我“智慧”的结晶啊,不写出来总觉得对不起每天脖子上面顶着的那个玩意。

            

    展开全文
  • 二、80x86微处理器的中断80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。CPU要从主程序转入中断服务程序,必须知道该中断服务程序的...
  • 中断和轮询的特点

    千次阅读 2019-10-23 11:04:13
    对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。尽管...
  • 中断和轮询方式比较

    万次阅读 2016-08-26 09:30:00
    中断的基本概念 ...二、80x86微处理器的中断 80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。 CPU要从主程序转入中断服务程序
  • 中断和轮询的方式

    千次阅读 2016-12-25 13:04:57
    中断方式与轮询方式 中断的基本概念 程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程...
  • 操作系统 --- 中断和轮询

    千次阅读 2017-08-08 15:19:40
    外部设备与中央处理器交互一般有两种手段:轮询和中断。  (1)轮询(Polling)  很多I/O设备都有一个状态寄存器,用于描述设备当前的工作状态,每当设备状态发生改变时,设备将修改相应状态寄存器位。通过不断...
  • 中断和轮询之间的区别 中断时,设备会通知CPU引起注意;而在轮询中,CPU会稳定地检查设备是否需要注意。 中断不是协议,而是一种硬件机制;轮询反之。 在中断中,该设备由中断处理程序提供服务;轮询时,该设备由...
  • 处理外部事件是 CPU 必须要做的事,因为 CPU 外设的不平等性导致外设的事件被 CPU 当作是外部事件,其实它们是平等的,只不过冯氏机器不这么认为罢了,既然要处理外部事件,那么就需要...
  • 轮询和中断的区别,中断上下文

    千次阅读 2021-01-28 10:23:24
    轮询和中断有什么区别 中断:咱们先说中断吧,中断大家都不陌生,什么是中断呢?中断就是由硬件或者软件发出的一种IRQ(中断请求)信号,一旦CPU接受的中断信号,CPU就会暂停执行的当前的工作,并且保留现场,去响应...
  • 轮询 中断 的比较

    千次阅读 2019-06-01 00:44:38
    我们首先区别一下中断和轮询 中断和轮询是 嵌入式 的两个基本的编程的思想 概念 轮询: while(1){ if(按键按下){ 执行程序; } } /* 周期连续 的检测外部事件的发生 消耗大量cpu...
  • CPU要和外设进行通信,可以采用轮询和中断两种方式。因为轮询方式需要CPU轮询外设,查询外设是否发生中断,效率不高显而易见。于是增加了如下图的中断系统来减轻CPU负担,但是这样做效率就高了吗?本质上,采用中断...
  • 1.从轮询中断很多同学都不喜欢用中断,而偏爱用轮询的操作方式。这是不是我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断。我们常常都有这样的经验:正在跟别人说一件事,然后...
  • 中断轮询

    千次阅读 2016-04-09 09:14:12
    外部设备与中央处理器交互一般有两种手段:轮询和中断。 (1)轮询(Polling) 很多I/O设备都有一个状态寄存器,用于描述设备当前的工作状态,每当设备状态发生改变时,设备将修改相应状态寄存器位。通过不断查询...
  • 二、80x86微处理器的中断 80x86微处理器的中断类型一般分为2类,即由于执行某些指令引起的软中断和由处理器以外其他控制电路发出中断请求信号引起的硬中断。 CPU要从主程序转入中断服务程序,必须知道该中断服务程序...
  • 有这样一道嵌入式的面试题,中断方式与轮询方式哪个效率高?  我们先谈谈中断轮询。 二.中断 1.中断的定义 中断是指CPU在执行过程中出现了某些突发事件时,CPU必须暂时当前的程序,转去处理突发事件,处理完毕后...
  • 在本文中,单片机开发工程师将对单片机中断和CPU轮询做个简单的介绍。 中断中断是一种硬件机制,在这种机制中,设备会通知CPU它需要引起注意。中断可以随时发生。因此,当CPU通过指示中断请求线收到中断信号...
  • CPU中断和轮询

    2017-01-05 22:47:00
    中断和轮询不同,是硬件上的,就像一个开关被按下了,没有什么东西在不停的询问开关有没有被按下,开关只是被按下了,就通电了,通电了就会发生一些事情。 可以看看 http://ruby-china.org/topics/4920 之中的讨论 ...
  • 16.轮询中断

    2021-07-26 08:31:09
    文章目录CPU与硬件的交互方式轮询方式实现按键实验代码GPIO中断相关寄存器详解编程 CPU与硬件的交互方式 DMA:直接存储器访问。 轮询方式实现按键实验 需求:按下按键就向SecureCRT发送一句话 在开发板上找到按键K2...
  • 中断和轮询之间的区别 中断时,设备会通知CPU引起注意;而在轮询中,CPU会稳定地检查设备是否需要注意。 中断不是协议,而是一种硬件机制;轮询反之。 在中断中,该设备由中断处理程序提供服务;轮询时,该设备由...
  • CPU轮询和中断机制

    千次阅读 2018-06-14 17:50:05
    主机控制器之间交互的完成协议可能会很复杂,我们可以用两个位来协调控制器主机之间的生产者消费者之间的关系,控制器工作忙的时候就把状态寄存器的忙位设置为1,而如果控制器可以接收下一条指令的时候就清除...
  • 轮询方式 任务 代码实现 二.中断方式 任务 代码实现 三. 简单的帧格式 任务 代码实现 一.轮询方式 轮询方式就是不断去访问一个信号的端口,看看有没有信号进入,有则进行处理。 任务 通过任务轮询方式,利用串口调试...
  • NAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的... 每秒 6667 个中断,对于系统是个很大的压力,此时其实可以转为使用轮询 (polling) 来处理,而不

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,897
精华内容 18,758
关键字:

中断和轮询

友情链接: Solo Achievements Lite.zip