精华内容
下载资源
问答
  •  在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。中断处理程序通常不是和特定设备关联,而是和特定中断关联的,也就是说,如果一个设备可以产生多种不同的中断,那么...

        在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。中断处理程序通常不是和特定设备关联,而是和特定中断关联的,也就是说,如果一个设备可以产生多种不同的中断,那么该设备就可以对应多个中断处理程序,相应的,该设备的驱动程序也就需要准备多个这样的函数。一个设备的中断处理程序是它设备驱动程序的一部分--设备驱动程序是用于对设备进行管理的内核代码。

        中断处理程序与其他内核函数的真正区别在于:中断处理程序是被内核调用来响应中断的,而它们运行于我们称之为中断上下文的特殊上下文中。

     

    上半部和下半部的对比

        又想程序运行得快,又想程序完成的工作量多,这两个目的显然有所抵触。鉴于两个母的之间存在不可调和的矛盾,所以我们一般把中断处理切为两个部分或两半。中断处理程序是上半部--接收到一个中断,它就立即开始执行,但只做有严格时限的工作,例如对接收的中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作会推迟到下半部去。

    展开全文
  •  中断处理过程:一次完整的中断过程由中断请求、中断响应和中断处理三个阶段组成。  中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->...
    
    在程序员面试和笔试中中断是一个经常被问及的很基础的问题,本文对这次问题做一点简单说明。

         中断处理过程:一次完整的中断过程由中断请求、中断响应和中断处理三个阶段组成。

         中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复现场恢复断点->开中断->返回断点

        中断服务程序的限制

    (1)ISR 没有参数并且返回类型为 void
    2ISR 不可以重复进入,不要在 ISR内允许中断。

    3)当中断发生时系统会自己响应。用户不要调用它。

    4ISR 中不要调用任何 C 自定义函数,但是内置的函数没有关系。ISR 中可调用汇编函数。
    5)如果 ISR 内包含嵌入汇编指令,那么由于执行这些指令而影响到的寄存器就需要在执行这些指令之前预先保留,待执行完毕恢复寄存器。 因为Holtek C编译器只保存由于C语句造成影响的寄存器。

    6ISR内不能有可能导致阻塞的语句如:malloc

    7)避免在ISR中做浮点运算,在许多处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额外的寄存器入栈,有些处理器/编译器就不允许在ISR中做浮点运算。此外,ISR应该是段而有效率的,在ISR中做浮点运算是不明智的。

    有了以上知识,下面的题目应该是小Case了

    1. 下面的ISR有何问题(华硕公司2005年软件工程师面试)  
    2. _interrupt double compute_area(double radius)  
    3. {  
    4.     double area = PI*radius*radius;  
    5.     printf("/nArea=%f",area);  
    6.     return area;  
    7. };  

    展开全文
  • 中断处理过程

    万次阅读 2019-08-13 16:05:45
    概念 中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断...大体上可以把中断全过程分为5个阶段:中断请求、中断判优、中断响应、中断处理和中断返回。 ...

    中断
    在CPU执行程序的过程中,出现了某种紧急情况或异常的事件时,暂停正在执行的程序,转去处理该事件,并在处理完该事件之后返回断点处(指返回主程序时执行的第一条指令的地址)继续执行刚刚被暂停的程序。
    中断源
    任何引发中断的事件。
    中断分类
    1)硬件中断(即外中断)
    (1)非屏蔽中断(NMI):整个系统只有一个。
    (2)可屏蔽中断(INTR)
    2)软件中断(内中断)
    (1)除法错误中断
    (2)溢出中断
    (3)单步中断
    (4)断点中断
    (5)中断指令INT n中断
    单步中断和断点中断用来调试程序
    中断优先级:8086的中断优先级排序:内中断(除单步中断),NMI,INTR,单步中断。
    中断向量表:是存放中断向量(中断服务程序的入口地址)的一个特定的内存区域。这里有必要注意一下,8086可以处理256种中断。
    中断处理步骤
    (1)中断请求:中断源向CPU发出中断请求
    (2)中断响应
    (3)保护断点和现场:以便在中断服务程序执行后正确的返回主程序。
    (4)中断处理
    (5)中断返回
    8086中断处理步骤
    (1)内部中断以及NMI中断不需要从数据总线上读取中断类型码,而INTR需要,而且该中断类型码由发出中断请求的接口电路提供。
    (2)CPU得到中断类型码后将标志寄存器内容压入栈中(PUSHF),保护中断时标志位的状态。
    (3)令单步标志TF =0(禁止CPU以单步方式执行中断服务程序)。
    (4)令中断允许标志IF=0(即:在响应该中断后不再响应别的中断。由于CPU在中断响应时,自动将IF置为0,如果要允许中断嵌套,必须在后面的中断服务程序中用开中断指令STI重新将IF置为1)
    (6)将当前CS:IP入栈,即保护断点和现场。
    (7)根据中断类型码在中断向量表中找到相应中断服务程序的入口地址,将其装入CS:IP,转向中断服务程序。
    (8)为了保证NMI中弄断有着实质性的优先级,所以在执行中断服务之前需要再次检查是否有NMI中断。
    (9)执行中断服务程序。
    (10)IRET指令实现原CS:IP,标志寄存器的出栈,即恢复断点并返回到主程序。

    展开全文
  • 完整的中断处理过程分为 1)中断响应的事前准备: 系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都...

    完整的中断处理过程分为

    1)中断响应的事前准备:

    系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都知道得很清楚,才能正确地响应各种中断信号和异常。

    2) CPU检查是否有中断/异常信号

    CPU在执行完当前程序的每一条指令后,都会去确认在执行刚才的指令过程中中断控制器(如:8259A)是否发送中断请求过来,如果有那么CPU就会在相应的时钟脉冲到来时从总线上读取中断请求对应的中断向量。

    对于异常和系统调用那样的软中断,因为中断向量是直接给出的,所以和通过IRQ(中断请求)线发送的硬件中断请求不同,不会再专门去取其对应的中断向量。

    3) 根据中断向量到IDT表中取得处理这个向量的中断程序的段选择符

    CPU根据得到的中断向量到IDT表里找到该向量对应的中断描述符,中断描述符里保存着中断服务程序的段选择符。

    4) 根据取得的段选择符到GDT中找相应的段描述符

    CPU使用IDT查到的中断服务程序的段选择符从GDT中取得相应的段描述符,段描述符里保存了中断服务程序的段基址和属性信息,此时CPU就得到了中断服务程序的起始地址。

    5) CPU根据特权级的判断设定即将运行的中断服务程序要使用的栈的地址

    CPU会根据CPL和中断服务程序段描述符的DPL信息确认是否发生了特权级的转换,比如当前程序正运行在用户态,而中断程序是运行在内核态的,则意味着发生了特权级的转换,这时CPU会从当前程序的TSS信息(该信息在内存中的首地址存在TR寄存器中)里取得该程序的内核栈地址。

    6) 保护当前程序的现场

    CPU开始利用栈保护被暂停执行的程序的现场:依次压入当前程序使用的eflags,cs,eip,errorCode(如果是有错误码的异常)信息。

    7) 跳转到中断服务程序的第一条指令开始执行

    CPU利用中断服务程序的段描述符将其第一条指令的地址加载到cs和eip寄存器中,开始执行中断服务程序。这意味着先前的程序被暂停执行,中断服务程序正式开始工作。

    8) 中断服务程序处理完毕,恢复执行先前中断的程序

    在每个中断服务程序的最后,必须有中断完成返回先前程序的指令,这就是iret(或iretd)。程序执行这条返回指令时,会从栈里弹出先前保存的被暂停程序的现场信息,即eflags,cs,eip重新开始执行。

    中断服务程序流程

    保护现场

    保护现场有两个含义,其一是保存程序的断点;其二是保存通用寄存器和状态寄存器的内
    容。前者由中断隐指令完成(详见8.4.4节),后者由中断服务程序完成。具体而言,可在中断
    服务程序的起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令
    (PUSH)将各寄存器的内容推入堆栈保存,即将程序中断时的“现场”保存起来。

    2.中断服务(设备服务)

    这是中断服务程序的主体部分,对于不同的中断请求源,其中断服务操作内容是不同的,例
    如,打印机要求CPU将需打印的一行字符代码,通过接口送人打印机的缓冲存储器中(参见图
    573)以仕打印机打印又如,显示设各要求CPU将需显示的一屏字符代码通过接口送人显示
    5.23)以供打印机打印。又如,显示设备要求CPU将需显示的一屏字符代码通过接口送入显示
    器的显示存储器中(参见图5.18)。

    3.恢复现场

    这是中断服务程序的结尾部分,要求在退出服务程序前,将原程序中断时的“现场”恢复至
    原来的寄存器中。通常可用取数指令或出栈指令(POP),将保存在存储器(或堆栈)中的信息这
    回到原来的寄存器中。

    4.中断返回

    中断服务程序的最后一条指令通常是–条中断返回指令,使其返回到原程序的断点处,以信
    继续执行原程序。
    计算机在处理中断的过程中,有可能出现新的中断请求,此时如果CPU暂停现行的中断月
    务程序,转去处理新的中断请求,这种现象称为中断嵌套,或多重中断。倘若CPU在执行中断月
    务程序时,对新的中断请求不予理睬,这种中断称为单重中断。这两种处理方式的中断服务程戶
    略有区别。图5.43(a)和图5.43(b)分别为单重中断和多重中断服务程序流程。比较图5.4
    ()和图5.43(h)可以发现.其区别在千“开中断”的设置时间不同。

    展开全文
  • 中断和中断处理程序

    千次阅读 2012-02-04 23:02:25
    在学习网络接口驱动的时候,已经接触过中断和中断处理程序了,这里在具体的说一说有关中断和中断处理程序的相关知识点. 一,中断 中断使得硬件可以与处理器进行通讯.比如说,当敲打键盘时,键盘控制器会发送一个...
  • 中断及中断处理过程

    2018-10-09 17:32:02
    中断及中断处理过程 1. 中断和异常的概念区别  Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于:  中断(interrupt)是异步的事件,典型的比如由I/O...
  •  以下是一个典型的中断处理程序声明:static irqreturn_t intr_handler(intirq, void *dev_id, struct pt_regs *regs)  第一个参数irq就是这个处理程序要响应的中断的中断线号。  第二个参数dev_...
  • Linux中断处理程序设计 中断概念   中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。  为什么需要中断? 1、 外设的处理速度一般慢于CPU 2、 CPU不能一直等待外部事件 ...
  • 中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,同时也是设备管理的基础,中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。 1.中断简介  1. 中断和陷入  1) 中断 2) 陷入 2. ...
  • 中断处理程序

    2014-08-20 16:47:17
    1、安装中断处理程序 系统中中断信号线很有限,有时只有15或16根。内核维护了一个类似于I/O端口注册表的中断信号线的注册表。一个模块可以申请一个中断请求IRQ,处理完以后也可以释放掉它。相关函数: 头文件  ...
  • ARM中断处理过程

    万次阅读 2018-05-08 15:18:57
    一、前言本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:1、第二章描述了中断处理的准备过程2、第三章描述了当发生中的时候,ARM硬件的...
  • 8086中断处理程序分析

    千次阅读 2017-09-02 14:50:41
    中断处理程序的入口地址,即中断向量必须存储在对应的中断向量表表项中,通俗的讲就是中断处理程序的地址放在一块内存中,这块存储中断处理程序的入口的地址空间叫中断向量表,而实际地址就叫中断向量
  • 中断处理程序

    万次阅读 2011-11-19 11:20:55
    本章将深入到DOS系统内部探讨中断处理程序的内容。与其他计算机编程不一样,中断处理程序这个名词听起来就很难懂。用最简单的话来说,中断处理程序就是对应于中断激活的程序。  读者可能已发现,中断处理实际上并...
  • 中断的概念和中断处理过程

    万次阅读 2011-11-02 10:35:12
    中断的概念和中断处理过程 (1)中断: 在运行一个程序过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段,这种处理方式称为中断。 (2)中断的作用: ◎并行操作 ◎硬件故障报警与处理 ◎...
  •  中断处理过程:一次完整的中断过程由中断请求、中断响应和中断处理三个阶段组成。 中断处理流程:关中断->保存断电保护现场->判断中断源转到相应的中断服务->开中断->执行相应的中断服务程序(ISR)->关中断->恢复...
  • linux中断处理过程

    2017-11-20 09:24:38
    参考:http://www.uml.org.cn/embeded/201304021.asp Linux中的中断处理 ...与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(), request_irq
  • 一种方式是使用轮训(polling)的方式,这种方式周期性地查看所有硬件设备的状态并做相应处理,这会造成很多不必要的系统开销。Linux内核使用中断的方式来管理硬件设备,中断本质上是一种电信号,设备通过和中断控制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 321,132
精华内容 128,452
关键字:

中断处理程序主要工作包含