精华内容
下载资源
问答
  • 中断使得计算机系统具备应对对处理突发事件能力,提高了CPU工作效率,如果没有中断系统,CPU就只能按照原来程序编写先后顺序,对各个外设进行查询和处理,即轮询工作方式,轮询方法貌似公平,但实际工作效率...

    中断即打断,实至CPU再执行当前程序时,由于系统出现了某种需要处理的紧急情况,CPU暂停正在执行的程序,转而去执行另一段特殊程序来处理的出现的紧急事务,处理结束后CPU自动返回到原先暂停的程序中去继续执行,这种执行过程由于外界的的原因被中间打断的情况成为中断。
    中断的作用:
    中断使得计算机系统具备应对对处理突发事件的能力,提高了CPU的工作效率,如果没有中断系统,CPU就只能按照原来的程序编写的先后顺序,对各个外设进行查询和处理,即轮询工作方式,轮询方法貌似公平,但实际工作效率却很低,却不能及时响应紧急事件。

    展开全文
  • 中断控制,最初为克服对I/O接口控制采用程序查询所带来处理器效率低而产生中断控制主要优点只有在I/O需要服务时才能得到处理器响应,不需要处理器不断地进行查询。由此,最初的中断全部对外部设备而...

    中断控制,最初是为克服对I/O接口控制采用程序查询所带来的处理器效率低而产生的。中断控制的主要优点是只有在I/O需要服务时才能得到处理器的响应,不需要处理器不断地进行查询。由此,最初的中断全部是对外部设备而言的,称为外部中断(或硬件中断)

    内部中断(或异常),是为解决机器运行时出现的某些随机事件以及编程方便出现的。形成一个完整的中断系统。

    主要讨论在80x86保护模式下中断机制在Linux中的实现。

    一、中断是什么

    16位实地址模式32位保护模式,这两种模式之间最本质的差别是在保护模式引入中断描述符表。

    1、中断向量

    x86系列微机支持256种向量中断,为使处理器识别每种中断源,从0到255编号,赋予一个中断类型码n,Intel把这个8位的无符号整数叫做一个向量,也叫中断向量。256种中断分两大类:异常和中断。异常分为故障和陷阱,其共同特点是既不使用中断控制器,也不能被屏蔽(异常是CPU发出的中断信号)。中断分为外部可屏蔽中断外部非屏蔽中断,所有I/O设备产生的中断请求引起屏蔽中断,紧急的事件(如硬件故障)引起的故障产生非屏蔽中断。

    非屏蔽中断的向量和异常的向量是固定的,而屏蔽中断的向量可通过对中断控制器的编程来改变。Linux对256个向量的分配如下:

    从0~31的向量对应异常和非屏蔽中断。

    从32~47的向量(由I/O设备引起的中断)分配给屏蔽中断。

    从48~255的向量用来标识软中断。Linux只用了其中的一个(128或0x80)用来实现系统调用。

    备注:

    可以在proc文件系统下的interrupts文件中,查看当前系统中各种外设的IRQ命令:

    cat /proc/interrupts

    2、外设可屏蔽中断

    Intel x86通过两片中断控制器8259A来响应15个外中断源,第一级(主片)的第二个中断请求输入端与第二级(从片)的中断输出端INT相连,如图所示。

    与中断控制器相连的每条线叫做中断线,要使用中断线,要进行中断线的申请,即IRQ,也把申请一条中断线称为申请一个IRQ或者是申请一个中断号。IRQ线从0开始顺序编号,第一条中断线表示成IRQ0。IRQn的缺省向量是n+32,IRQ和向量之间的映射可通过中断控制器端口来修改。

    并不是每个设备都可以向中断线上发中断信号的,只有对某一条确定的中断线拥有控制权,才可以向这条中断线上发送信号。中断线资源非常宝贵,只有当设备需要中断时才申请占用一个IRQ,或者是在申请IRQ时采用共享中断的方式,这可以让更多的设备使用中断。

    对于外部I/O请求的屏蔽可分两种情况。

    一种是从CPU的角度,清除EFLAG(标志寄存器)的中断标志位(IF),决定CPU是否响应外部可屏蔽中断请求。当IF为0时,禁止任何外部I/O的中断请求,即关中断;当IF为1时,CPU允许响应外部的可屏蔽中断请求。

    另一种是从中断控制器角度,因为中断控制器中有一个8位的中断屏蔽寄存器,每位对应中断控制器8259A中的一条中断线,如果要禁用某条中断线,则把中断屏蔽寄存器相应的位置1,要启用,则置0。

    3、异常及非屏蔽中断

    异常是CPU内部出现的中断,在CPU执行特定指令时出现的非法情况。非屏蔽中断是计算机内部硬件出错时引起的异常情况。二者与外部I/O接口没有任何关系。Intel把非屏蔽中断作为异常的一种来处理,异常也包括非屏蔽中断。在CPU执行一个异常处理程序时,不再为其他异常或可屏蔽中断请求服务,当某个异常响应后,CPU清除EFLAG(标志寄存器)中的IF(中断标志位),IF为0,禁止任何可屏蔽中断。但如果又产生异常,则由CPU锁存CPU具有缓冲异常的能力),待这个异常处理完毕后,才响应被锁存的异常。

    备注:这里讨论的异常中断向0~31之间(异常和非屏蔽中断),不包括系统调用(中断向量为0x80)。

    x86处理器发布大约20种异常(具体数字与处理器模式有关)。Linux内核必须为每种异常提供一个专门的异常处理程序。

    4、中断描述符表

    在实地址模式中,CPU把内存中从0开始的1KB存储中断向量表。表中的每个表项占4B,由2B的段地址和2B的偏移量组成,构成的地址是相应的中断处理程序的入口地址。但在保护模式下,由4B的表项构成的中断向量表不能满足要求。这是因为:

    (1)除2B的段描述符,偏移量必须用4B来表示;

    (2)要有反映模式切换的信息。

    因此,在保护模式下,中断向量表中的表项由8B组成,如下图所示,中断向量表也叫做中断描述符表。其中每个表项叫做一个门描述符,门的含义是当中断发生时必须先通过这个门,才能进入相应的处理程序。

    类型占3位,表示门描述符的类型,主要门描述符有以下几种。

    1)中断门(Interrupt Gate):类型码为110,中断门包含一个中断或异常处理程序所在段的选择符和段内偏移量。当控制权通过中断门进入中断处理程序时,处理器清除EFLAG(标志寄存器)中的IF(中断标志位)标志,IF=0,即关中断,避免嵌套中断的发生。中断门中的请求特权级(DPL)为0,用户态的进程不能访问Intel的中断门。所有的中断处理程序都由中断门激活,并全部限制在内核态。

    2)陷阱门(Trap Gate):类型码为111,与中断门类似,唯一的区别是控制权通过陷阱门进入处理程序时维持IF标志位不变,不关中断。

    3)系统门(System Gate):是Linux内核特别设置的,用来让用户态的进程访问Intel的陷阱门,因此,门描述符的DPL为3。系统调用通过系统门进入内核

    在保护模式下,中断描述符表在内存的位置不再局限于从地址0开始的地方,而是可以放在内存的任何地方。CPU中增设了一个中断描述符表寄存器IDTR,用来存放中断描述符表在内存的起始地址。中断描述符表寄存器是一个48位的寄存器,其低16位保存中断描述符表的大小,高32位保存中断描述符表的基地址。

    5、相关汇编指令

    1)调用过程指令 CALL

    指令格式:CALL 过程名

    说明:LIDT将指令中给定的48位伪描述符载入中断描述符表寄存器IDTR。

    说明:在取出CALL指令之后及执行CALL指令之前,使指令指针寄存器EIP指向紧接CALL指令的下一条指令。CALL指令先将EIP值压入栈内,再进行控制转移。当遇到返回指令IRET时,栈内信息可使控制权直接回到CALL的下一条指令。

    2)调用中断过程的指令INT

    指令格式:INT 中断向量

    说明:EFLAG、CS及EIP寄存器被压入栈内。控制权被转移到由中断向量指定的中断处理程序。在中断处理程序结束时,IRET指令又把控制权送回到刚才执行被中断的地方。

    3)中断返回指令 IRET

    指令格式:IRET

    说明:IRET将EIP、CS及EFLAG寄存器内容从栈中弹出,并将控制权返回到发生中断的地方。IRET用在中断处理程序的结束处。

    4)加载中断描述符表的指令 LIDT指令格式:LIDT 48位的伪描述符

    展开全文
  • Linux 内核需要对连接到计算机上所有硬件设备进行管理,毫无疑问这份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能: 1.轮询(polling) 让内核定期对... 什么是中断?

    Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:

    1.轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;
    2.中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。

    第一种方案会让内核做不少的无用功,因为轮询总会周期性的重复执行,大量地耗用 CPU 时间,因此效率及其低下,所以一般都是采用第二种方案。

    什么是中断?


    从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如 8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经产生中断。这样,OS 就可以对这个中断进行适当的处理。
    不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线(IRQ)。

    中断可分为同步(synchronous)中断和异步(asynchronous)中断:

    1. 同步中断是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间,比如系统调用。
    2. 异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生,例如键盘中断。

    什么是异常?

    同步中断又称为异常(exception),异步中断则被称为中断(interrupt)。我们通常讲的中断指的都是异步中断。

    1.中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。
    2.异常可分为故障(fault)、陷阱(trap)、终止(abort)三类。

    这些类别之间的异同点请参看 表 1。

    表 1:中断类别及其行为

    类别 原因 异步/同步 返回行为
    中断 来自I/O设备的信号 异步 总是返回到下一条指令
    陷阱 有意的异常 同步 总是返回到下一条指令
    故障 潜在可恢复的错误 同步 返回到当前指令
    终止 不可恢复的错误 同步 不会返回

     

    什么是中断处理程序?

    在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。产生中断的每个设备都有一个相应的中断处理程序,如果一个设备可以产生多种不同的中断,那么该设备就可以对应多个中断处理程序。一个设备的中断处理程序是它设备驱动程序的一部分。

    什么是中断上半部和下半部?

    中断处理一般分为两个部分,中断处理程序是上半部:接收到一个中断就立即执行,但只做有严格时限的工作,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作被推迟到下半部去。通常情况下,下半部会在中断处理程序返回时立即执行。

    展开全文
  • 1.轮询(polling) 让内核定期对设备状态进行查询,然后做出相应处理; 2.中断(interrupt) 让硬件在需要时候向内核发出信号(变内核主动为硬件主动)。  第一种方案会让内核做不少无用功,因为轮询总
        Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:
    1.轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;
    2.中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。
           第一种方案会让内核做不少的无用功,因为轮询总会周期性的重复执行,大量地耗用 CPU 时间,因此效率及其低下,所以一般都是采用第二种方案。

    什么是中断?

            从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如 8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经产生中断。这样,OS 就可以对这个中断进行适当的处理。
            不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线(IRQ)。

    中断可分为同步(synchronous)中断和异步(asynchronous)中断:
    1. 同步中断是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间,比如系统调用。[ 特别说明: 一条指令可能要几个C PU周期, 指令周期和CPU周期不一样, 指令周期由一到几个CPU周期组成]
    2. 异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生,例如键盘中断。

    什么是异常?

    同步中断又称为异常(exception),异步中断则被称为中断(interrupt)。我们通常讲的中断指的都是异步中断。
    1.中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。
    2.异常可分为故障(fault)、陷阱(trap)、终止(abort)三类。

    这些类别之间的异同点请参看 表 1。

    表 1:中断类别及其行为

    类别      原因                          异步/同步         返回行为
    中断      来自I/O设备的信号 异步                 总是返回到下一条指令
    陷阱      有意的异常               同步                 总是返回到下一条指令
    故障      潜在可恢复的错误   同步                 返回到当前指令
    终止      不可恢复的错误       同步                 不会返回

    什么是中断处理程序?

    在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。产生中断的每个设备都有一个相应的中断处理程序,如果一个设备可以产生多种不同的中断,那么该设备就可以对应多个中断处理程序。一个设备的中断处理程序是它设备驱动程序的一部分。

    什么是中断上半部和下半部?

    中断处理一般分为两个部分,中断处理程序是上半部:接收到一个中断就立即执行,但只做有严格时限的工作,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作被推迟到下半部去。通常情况下,下半部会在中断处理程序返回时立即执行。


    展开全文
  • 中断方式和查询方式,也叫轮询方式,有什么区别,就要知道 什么是中断方式,什么是轮询 方式. 中断的汉语解释半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为 什么需要“阻隔、停顿和断开”呢? 举个...
  • OSIntEnter(); OSSemPost(MyEventSem); OSSemQuery(MyEventSem,&mySemData); printf("任务A完成提交信号量,当前信号...所以使用中断进行操作但不知道什么地方出现问题了 求指导 (信号量释放后打印出来未+1)
  • void main(void) { int ch; Uart_Init(); ch=getchar(); Uart_SentByte(ch); //dm9000IrqInit();...//设置波特率为115200,ARMclk为532M、...外部中断和UART还有冲突吗,为什么外部中断的初始化会导致UART不能用呢?
  • 在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面阐述就容易明白了。实际上很多人都混淆了优先级含义,所以才觉得糊里糊涂。中断的优先级有两个:查询优先级和执行优先级。什么是查询优级呢?...
  • 下面小编将带大家从多方面进行分析是什么导致MySQL数据库变慢~一、 外部硬件因素能够直接影响MySQL服务器性能系统指标有:CPU、内存、磁盘等使用情况。使用 vmstart 查看服务器资源使用情况:根据上面反馈...
  • x86的中断

    千次阅读 2016-08-06 19:25:28
    什么引入中断?   当CPU与外设交换信息时,若用查询方式,则CPU就要浪费很多时间去等外设。这快速CPU与慢速外设之间矛盾,也计算机发展过程中遇到一个严重问题之一,为了解决这个问题,一方面要...
  • 向量中断和非向量中断的区别

    千次阅读 2018-04-22 21:01:55
    ARM系列内核对于IRQ中断的处理就是通过查询中断标志寄存器来确定中断源,并执行对应的中断服务程序,这也就是非向量中断处理方法了。44B0X厂家三星为了加快IRQ中断的响应速度,在此基础上添加了另外一种方法,其实...
  • 因为在项目中使用的中断是gpio中断,该中断在项目中实现方式为多个gpio中断共享一个真实物理中断,因此当这个真实物理中断发生后由系统(就是另一个哥们写irq驱动)查询到底连接到这个物理中断哪一个...
  • 在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面阐述就容易明白了。实际上很多人都混淆了优先级含义,所以才觉得糊里糊涂。中断的优先级有两个:查询优先级和执行优先级。什么是查询优级呢?...
  • 我们一般用的是投射电容式触摸屏里面的交互电容 原理 自我电容: 在玻璃表面有用 ITO 制成的横向与纵向的扫描电极,这些电极和地之间就构成一个电 容的两极。当用手或触摸笔触摸的时候就会并联一个电容到电路中去,...
  • 系统结构中的中断

    2017-03-14 17:16:20
    什么是中断中断(Interrupt)硬件和软件驱动事件,它使得CPU暂停当前主程序,并转而去执行一个中断服务程序。 当CPU与外设交换信息时,若用查询方式,则CPU就要浪费很多时间去等外设。这快速CPU与慢速...
  • 考虑用户态内存和vmalloc,都用到了虚拟内存,即需要通过页表查询的方式查询都物理内存。 例如 用户态通过brk申请了一块内存,后续访问这块内存的0x00007F88F16A4690这块地址会发生什么? 首先,X64内核4级页表,...
  • 51中断优先级及中断嵌套

    千次阅读 多人点赞 2017-12-28 16:47:26
    中断的优先级在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面阐述就容易明白了。中断的优先级有:查询优先级和执行优先级。查询优先级datasheet上默认的查询优先级(IP寄存器不做设置,上电复位...
  • Sublime Text 中断程序快捷键

    千次阅读 2019-01-29 11:51:15
    跑起来程序要中断的话, 在菜单栏 Tool > Cancel Build 可以停止. 但是使用快捷键 Ctrl + break 是什么鬼? 有谁可以告诉我 win10 笔记本上哪个键是 break 么?! o(゚Д゚)っ! 不管了, 通过查询谷歌得知, ...
  • 中断处理

    2017-11-09 12:02:00
    概述 ...什么时候采用中断中断服务处理量有多大。通常中断中处理尽可能短。 事件要如何通知到主程序,这些代码要如何架构才能最好适应异步处理。  FreeRTOS提供一系列特性使开发者策略得...
  • 2、串行口工作方式有2种,1为查询法,2为中断法。这里用中断法。3、串口初始化:void init(void) //串口初始化 { EA=0; //暂时关闭总中断 TMOD=0x20; //定时器1工作在模式2--常数自动重装8位定时器工作...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 281
精华内容 112
关键字:

中断查询查询的是什么