精华内容
下载资源
问答
  • 中断处理的基本过程

    千次阅读 2020-03-24 15:07:49
    中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段。 1.中断请求阶段 1)发生在CPU内部的中断(内部中断),不需要中断请求,CPU内部的中断控制逻辑直接接收处理。 2)外部中断...

    中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段

    1.中断请求阶段

    1)发生在CPU内部的中断(内部中断),不需要中断请求,CPU内部的中断控制逻辑直接接收处理。
    2)外部中断请求由中断源提出。外部中断源利用CPU的中断输入引脚 输入中断请求信号。一般CPU设有两个中断请求输入引脚:可屏蔽中断请求输入引脚和不可屏蔽中断请求输入引脚。

    1.1中断请求触发器

    每个中断源发中断请求信号的时间是不确定的,而CPU在何时响应中断也 是不确定的。所以,每个中断源都有一个中断请求触发器,锁存自己的中断请求信号,并保持到CPU响应这个中断请求之后才将其清除。

    1.2中断允许触发器

    在CPU内部有一个中断允许触发器,当其为“1”时,允许CPU响应中断, 称为开中断。若其为“0”,不允许CPU响应中断,中断被屏蔽,称为关中断

    %%通常,当CPU复位时,中断允许触发器也复位为“0”,即关中断。当 CPU中断响应时,CPU自动关闭中断,禁止接受另一个新的中断。
    %%中断允许触发器的状态可以用开中断或关中断指令来设置。

    2.中断判优阶段

    CPU一次只能接受一个中断源的请求,当多个中断源同时向CPU提出中断请求时,CPU必须找出中断优先级最高的中断源,这一过程称为中断判优。
    中断判优可以采用硬件方法,也可采用软件方法。

    2.1软件判优

    CPU检测到中断请求后,首先读取中断请求寄存器的内容,逐位检测它们的状态,检测到某一位为1,就确定对应的中断源有中断请求,转去执行它的中断服务程序。
    先检测哪一个,哪一个的优先级就高,后检测哪一个,哪一个优先级就低,检测的顺序就是各中断源的优先级顺序。
    在这里插入图片描述
    假设上图中输入端口地址为87FFH。有如下查询程序:
    MOV DX, 87FFH
    IN AL, DX ;读中断请求寄存器内容
    SHR AL, 1
    JC IR0 ;IRQ0有请求,转IR0
    SHR AL,1
    JC IR1 ;IRQ1有请求,转IR1
    SHR AL,1
    JC IR2 ;IRQ2有请求,转IR2
    … …
    软件判优耗时较长。如果中断源很多,中断的实时性就很差,但是软件判优优先权安排灵活。

    2.2硬件判优

    利用专门的硬件电路确定中断源的优先级,有两种常见的方式:菊花链判优电路和中断控制器判优

    2.2.1菊花链判优电路

    设计思想:每个中断源都有一个中断逻辑电路,所有的中断逻辑电路形成一个链,犹如菊花链。排在链前端的中断源优先级最高,越靠后的设备优先级越低。
    在这里插入图片描述
    实现过程: CPU收到中断请求,如果允许中断,CPU发出中断响应信号。中断响应信号首先到达菊花链的前端,如果中断源1提出了中断请求,它就会截获中断响应信号,封锁它,使它不能向下一个中断源传送。不论下面的中断源有没有提出中断请求,都不可能接收到中断响应信号,因此它们的中断请求也不能被响应。

    2.2.2中断控制器判优

    中断控制器,如Intel8259A,可以以多种方式设置中断源的中断优先级。 中断控制器中有一个中断优先级判别器,它自动判别出目前提出中断请求的优先级最高的中断源,并将它的中断向量码送到数据总线,CPU接收中断向量码并据此找到它的中断服务程序。

    在这里插入图片描述

    3.中断响应阶段

    经过中断判优,中断处理就进入中断响应阶段。中断响应时,CPU向中断源发出中断响应信号,同时:
    ① 保护硬件现场;
    ② 关中断;
    ③ 保护断点;
    ④ 获得中断服务程序的入口地址。

    4.中断服务阶段

    中断服务程序的一般结构为:
    1)保护现场。 在中断服务程序的起始部分安排若干条入栈指令,将各寄存器的内容压入堆栈保存。
    2)开中断。 在中断服务程序执行期间允许级别更高的中断请求中断现 行的中断服务程序,实现中断嵌套。
    3)中断服务。 完成中断源的具体要求。
    4)恢复现场。 中断服务程序结束前,必须恢复主程序的中断现场。通常是将保存在堆栈中的现场信息弹出到原来的寄存器中。
    5)中断返回。 返回到原程序的断点处,继续执行原程序。

    5.中断返回阶段

    返回到原程序的断点处,恢复硬件现场,继续执行原程序。
    中断返回操作是中断响应操作的逆过程。

    展开全文
  • Linux中断处理过程

    2010-07-08 19:32:00
    硬件处理的一般过程: 1.硬件电路产生IRQ信号。 2.可编程中断控制控制器(PIC)收集IRQn值,转换成相应的向量。 3.PIC将中断向量由INT发送到CPU,进入软件中断处理。 软件处理的一般过程: 1.初始化阶段向linux内核...

    0dfc0d37fc32fe3f91ef39da

    如图所示,完整的中断系统由两部分组成:硬件电路和软件处理。

     

    硬件处理的一般过程

    1.硬件电路产生IRQ信号。
    2.可编程中断控制控制器(PIC)收集IRQn值,转换成相应的向量。
    3.PIC将中断向量由INT发送到CPU,进入软件中断处理。

     

    软件处理的一般过程


    1.初始化阶段向linux内核注册中断处理程序。
    2.中断发生时,通过中断描述符表IDT获取中断服务例程(ISR)链表入口。
    3.调用do_irq()程序,获取action的指针,并查询对应dev_id设备状态,找到处于中断的设备,然后调用注册的中断处理程序。

    整个中断处理的流程,可简单表示为:

    4c70781d12ce35dbe1fe0bd2

    展开全文
  • LINUX中断处理过程

    千次阅读 2015-11-15 15:32:40
    一般申请中断的时候都...这是普通的中断请求过程。对于这种一般情况,只要发生中断,就可以抢占内核,即使内核正在执行其他中断函数。这里有两点说明:一是因为linux不支持中断优先级,因此任何中断都可以抢占其他中断
    一般申请中断的时候都允许开中断,即不使用SA_INTERRUPT标志。如果允许共享则加上SA_SHIRQ,如果可以为内核熵池提供熵值(譬如你写的驱动是ide之类的驱动),则再加上SA_SAMPLE_RANDOM标志。这是普通的中断请求过程。对于这种一般情况,只要发生中断,就可以抢占内核,即使内核正在执行其他中断函数。这里有两点说明:一是因为linux不支持中断优先级,因此任何中断都可以抢占其他中断,但是同种类型的中断(即定义使用同一个中断线的中断)不会发生抢占,他们会在执行本类型中断的时候依次被调用执行。二是所谓“只要发生中断,就可以抢占内核”这句是有一定限制的,因为当中断发生的时候系统由中断门进入时自动关中断(对于x86平台就是将eflags寄存器的if位置为0只有当中断函数被执行(handle_IRQ_event)的过程中开中断之后才能有抢占。对于同种类型的中断,由于其使用同样的idt_table表项,通过其状态标志(IRQ_PENDING和IRQ_INPROGRESS)可以防止同种类型的中断函数执行(注意:是防止handle_IRQ_event被重入,而不是防止do_IRQ函数被重入),对于不同的中断,则可以自由的嵌套。因此,所谓中断嵌套,对于不同的中断是可以自由嵌套的,而对于同种类型的中断,是不可以嵌套执行的。 

    以下简单解释一下如何利用状态标志来防止同种类型中断的重入。当某种类型的中断第一次发生时,首先其idt表项的状态位上被赋予IRQ_PENDING标志,表示有待处理。然后将中断处理函数action置为null,然后由于其状态没有IRQ_INPROGRESS标志(第一次),故将其状态置上IRQ_INPROGRESS并去处IRQ_PENDING标志,同时将action赋予相应的中断处理函数指针(这里是一个重点,linux很巧妙的用法,随后说明)。这样,后面就可以顺利执行handle_IRQ_event进行中断处理,当在handle_IRQ_event中开中断后,如果有同种类型的中断发生,则再次进入do_IRQ函数,然后其状态位上加上IRQ_PENDING标志,但是由于前一次中断处理中加上的IRQ_INPROGRESS没有被清除,因此这里无法清除IRQ_PENDING标志,因此action还是为null,这样就无法再次执行handle_IRQ_event函数。从而退出本次中断处理,返回上一次的中断处理函数中,即继续执行handle_IRQ_event函数。当handle_IRQ_event返回时检查IRQ_PENDING标志,发现存在这个标志,说明handle_IRQ_event执行过程中被中断过,存在未处理的同类中断,因此再次循环执行handle_IRQ_event函数。直到不存在IRQ_PENDING标志为止。 

    2.4和2.6的差别,就我来看,主要是在2.6中一进入do_IRQ,多了一个关闭内核抢占的动作,同时在处理中多了一种对IRQ_PER_CPU类型的中断的处理,其他没有什么太大的改变。这类IRQ_PER_CPU的中断主要用在smp环境下将中断绑定在某一个指定的cpu上。例如arch/ppc/syslib/open_pic.c中的openpic_init中初始化ipi中断的时候。
    展开全文
  • 缺页中断是指令执行过程中产生中断,而非(一般的中断)在一条指令执行完成后产生。 3. 缺页中断断点压入 当CPU执行指令希望访问一个不在内存页面时,将产生缺页中断,系统开始运行中断处理程序。 此时指令...

    1. 缺页中断

    在这里插入图片描述

    2. 缺页中断的断点

    在这里插入图片描述
    缺页中断是指令执行过程中产生的中断,而非(一般的中断)在一条指令执行完成后产生的。

    3. 缺页中断的断点压入

    • 当CPU执行指令希望访问一个不在内存的页面时,将产生缺页中断,系统开始运行中断处理程序。
    • 此时指令计数器(PC) 的值尚未来得及增加就被压入堆栈,因此压入的断点必然是本次被中断的指令地址,而非下一条指令的地址。

    4. 缺页中断处理过程

    (1) 保留进程上下文
    (2)判断内存是否有空闲可用帧?若有,则获取一个帧号No,转(4) 启动I/O过程。若无,继续(3)
    (3)腾出一个空闲帧,即:
    (3)-1调用置换算法,选择一个淘汰页PTj。
    (3)-2 PTj(S)=0 ; //驻留位置0
    (3)-3 No= PTj (F); //取该页帧号
    (3)-4 若该页曾修改过,则
    (3)-4-1 请求外存交换区上一个空闲块B ;
    (3)-4-2 PTj(D)=B ;//记录外存地址
    (3)-4-3启动I/O管理程序,将该页写到外存上。
    (4)按页表中提供的缺页外存位置,启动I/O,将缺页装入空闲帧No中。
    (5)修改页表中该页的驻留位和内存地址。PTi(S)=1 ; PTi(F) =No。
    (6)结束。

    5.包含缺页中断的地址重定位

    在这里插入图片描述

    展开全文
  • ARM希望把中断处理函数也做成C函数形式,一般C函数处理过程类似了。 进入中断前,首先要把(R0-R3,R12,LR,PSR)保存起来,然后在中断结束后恢复它们。 这一切都是通过硬件完成。 但是,中断返回地址并没有像...
  • ARM的中断处理过程

    2009-08-10 17:59:00
    就是说程序一般运行在系统和用户模式下,使用是系统和用户模式下通用寄存器,当有异常发生时,比如FIQ,那么系统将切换到FIQ模式下,相应就会采用FIQ模式下寄存器,其中绿颜色就是只在FIQ模式下才会用到...
  • 【单选题】发生短路后产生危害效应有: 、 。【判断题】587 ....以下台式机内存种类与其引脚数对应关系正确有【单选题】葡萄酒为酒度一般为 _____________ 。【单选题】164 . 将路由项目添加...
  • 1.中断源 引起CPU中断的事件——中断源 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。...2.中断处理的一般过程 中断请求 中断源识别(中断判优) 中断响应 中断处理 中断返回 2.1中断响应 CPU中断响应
  • 启动代码和中断处理过程

    千次阅读 2011-11-08 15:58:01
    阿南ARM训练班课堂总结(3)2009年03月19日 10:31第三课主要是分析启动代码和中断处理过程 之前有分析过44b0下这个启动代码,差别不是非常大,今天再重新看了一遍。启动代码与Bootloader不同,主要是指进入C语言...
  • 教学方法、实施步骤时间分配教学手段回顾5”×2板书计算机投影仪多媒体课件等讲授40”×2提问3”×2小结2”×2讲授内容:6.1输入/输出数据的传输控制方式一、输入/输出的一般概念1.引言输入/输出是微机系统与外部...
  • 中断

    2016-08-21 00:18:20
    习题五 1. 什么是中断? 是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU...2. 可屏蔽中断处理的一般过程是什么? 可屏蔽中断的处理过程一般可分为4个阶段: (1) 中断申请:外设
  • 中断的含义

    2008-11-03 19:22:36
    1. 什么是中断? 是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU暂时停止正在运行的程序,...2. 可屏蔽中断处理的一般过程是什么? 可屏蔽中断的处理过程一般可分为4个阶段: (1)...
  • 一、以fork和execve系统调用为例分析中断上下文切换中断是在?个进程当中从进程?户态到进程内核态,或从...处理过程。其中调?了schedule函数发?进程上下?切换,当系统调?返回到?户态时会恢复现场,?此完成了保...
  • 中断的处理过程为了更容易理解中断的处理过程,先来分析前面例子。正在看书时,电话铃响了,这里电话就是中断源,它发出铃声就是中断请求信号。怎么来处理这个中断呢?一般的做法是记住书中刚看完页码,然后...
  • Linux中断处理程序设计 中断概念   中断指当出现需要时,CPU暂时停止当前程序执行转而执行处理新情况程序和执行过程。  为什么需要中断? 1、 外设处理速度一般慢于CPU 2、 CPU不能一直等待外部事件 ...
  • 要想正确地执行2440外部中断,一般需要完成两个部分内容:中断初始化和中断处理函数。 在具体执行中断之前,要初始化好要用中断。2440外部中断引脚EINT与通用IO引脚F和G复用,要想使用中断功能,就要把相应...
  • BY《计算机是怎样跑起来》 ...由于外部原因使正常流程中断,中断后再返回到之前流程的过程中断处理流程。 过程:(以Z80 CPU为例) INTˉ\bar{INT}INTˉ引脚——处理一般中断请求。 NMIˉ\bar{NMI}NMI...
  • ARM中断处理分析

    千次阅读 2008-12-08 16:17:00
    中断的基本含义应该是允许CPU在执行某个代码序列的过程中停下来执行另外一个代码序列,这里有两层意思,一个是要切换到另一个场景,另一个是当执行完毕之后必须能够恢复原来场景。首先讨论如何才能切换到一个新...
  • 1、两过程定义与作用 子程序是微机基本程序结构中1种,基本...在执行主程序的过程中往往被多次调用,甚至被不同程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子 程序执行完后,返回...
  • 一、设备IRQsuspend和resume ...一般而言,在系统suspend过程的后期,各个设备IRQ (interrupt request line)会被disable掉。具体时间点是在各个设备late suspend阶段之后。代码如下(删除了部分无关代...
  • 中断处理包含两个方面,与CE系统相关部分及与硬件相关部分. CE系统特定处理流程(与其它系统有所区别,或者说这部分代码在其它系统上是无法运行)一般为: 1.用CreateEvent创建一个自动事件(即不需要使用...
  • 中断处理包含两个方面,与CE系统相关部分及与硬件相关部分. CE系统特定处理流程(与其它系统有所区别,或者说这部分代码在其它系统上是无法运行)一般为: 1.用CreateEvent创建一个自动事件(即不需要使用...
  • 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程
  • 中断中断

    2018-07-28 17:57:00
    硬件中断一般是由中断控制器提供中断码类型,处理机自动转向中断处理程序;软件中断完全有处理机内部形成中断处理程序入口地址并转向中断处理程序入口地址,并转向中断处理程序,不需要外部提供信息。 详细...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 681
精华内容 272
关键字:

中断处理的一般过程