第八章中断和异常

合集下载

单片机的中断与异常处理方法

单片机的中断与异常处理方法

单片机的中断与异常处理方法在单片机的工作过程中,中断和异常处理是非常重要的概念和方法。

它们能够有效地提高单片机的响应能力和灵活性,使其能够应对各种不同的工作需求和问题。

本文将介绍单片机中断的概念、中断的种类以及针对不同中断的处理方法,同时也会探讨单片机异常处理的原理和方法。

一、中断的概念和种类中断是指在一个程序执行的过程中,由于某种特殊的事件发生,导致程序的正常执行被打断,转而去执行一个与当前任务无关的子程序,完成该事件的相应处理。

中断可以分为外部中断和内部中断两种。

1. 外部中断外部中断是指当单片机外部引脚的电平或信号发生变化时,引发中断事件,使单片机停止当前任务的执行,去处理由该外部事件引发的中断服务程序(ISR)。

外部中断常用于与外部设备的交互,如按键输入、传感器检测等。

在编程中,我们可以通过设置中断触发条件和编写相应的中断服务程序来实现对外部中断的处理。

2. 内部中断内部中断是指当单片机内部某个特定的事件发生时,由硬件或软件触发中断请求,并且将控制权交给中断服务程序进行相应的处理。

内部中断的发生可以是由于某个特定条件的满足,如定时器溢出中断、串口接收中断等;也可以是由软件的运行结果触发,如除法溢出中断、地址错误中断等。

不同的内部中断需要通过编程实现相应的中断服务程序。

二、中断的处理方法中断处理是指在中断发生时,单片机通过中断向量表找到相应的中断服务程序,并对中断事件进行处理的过程。

下面将介绍两种常用的中断处理方法。

1. 优先级中断处理优先级中断处理是指对多个中断源按照优先级进行划分和处理的方法。

在单片机的中断系统中,每个中断源都被赋予了一个优先级,高优先级的中断可以打断当前正在执行的低优先级中断,从而增加了中断的响应速度和灵活性。

优先级中断处理需要在编程时设置中断的优先级,并根据不同的中断事件编写相应的中断服务程序。

2. 嵌套中断处理嵌套中断处理是指当一个中断正在执行的过程中,又发生了另一个中断时,将当前中断挂起,转而处理新发生的中断,并在处理完毕后返回原中断继续执行的方法。

中断异常处理流程

中断异常处理流程

计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。

异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。

而中断则带有向处理器主动申请的意味。

但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。

若无特别说明,对“异常”和“中断”都不作严格的区分。

本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。

1.异常中断响应和返回系统运行时,异常可能会随时发生。

当一个异常出现以后,ARM微处理器会执行以下几步操作:1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。

2)将CPSR复制到相应的SPSR中。

3)根据异常类型,强制设置CPSR的运行模式位。

4) 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

这些工作是由ARM内核完成的,不需要用户程序参与。

异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1)将连接寄存器LR的值减去相应的偏移量后送到PC中。

2)将SPSR复制回CPSR中。

3) 若在进入异常处理时设置了中断禁止位,要在此清除。

这些工作必须由用户在中断处理函数中实现。

为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。

采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。

当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。

当异常处理完成以后,返回到主程序继续执行。

可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

2.异常处理程序设计2.1 异常响应流程由于向量表的限制,只能有一条指令B完成32MB范围内的跳转,并不能保证所有的异常处理函数都位于32MB范围内。

操作系统中的中断与异常处理机制

操作系统中的中断与异常处理机制

操作系统中的中断与异常处理机制在计算机系统中,操作系统起着至关重要的作用,它负责管理和控制计算机的资源,并提供给用户一个友好和高效的界面。

而在操作系统中,中断与异常处理机制是其中的重要组成部分。

一、什么是中断与异常处理机制中断与异常处理机制是操作系统用来响应特定事件或异常情况的方式。

当计算机系统发生某些事件,例如硬件故障、外部设备的请求等,操作系统会立即停止正在执行的任务,转而处理该事件。

在这种情况下,中断与异常处理机制起到了极为重要的作用。

二、中断与异常的区别尽管中断和异常都能够引发操作系统的响应,但两者之间存在一些区别。

1. 中断:中断是由外部设备发起的,例如键盘输入、鼠标点击等。

当外部设备需要与操作系统进行交互时,它会发出中断信号,这时操作系统会中断当前任务的执行,转而响应中断事件。

中断是一种在程序执行时突然发生的外部事件,需要处理器立即中断正在执行的任务并执行相应的中断处理程序。

2. 异常:异常是由程序内部产生的事件,也称为软中断。

当程序运行过程中出现错误、非法操作或者某些特殊事件时,会触发异常。

操作系统会根据异常的类型和优先级来处理该异常,进而采取相应的行动,例如打印错误信息、终止程序执行,或者进行异常处理。

三、中断与异常的处理流程中断与异常处理机制的处理流程如下:1. 中断发生:当外部设备产生中断信号时,处理器会暂停当前任务的执行,并将控制权交给操作系统。

2. 中断处理程序:操作系统会根据中断类型调用对应的中断处理程序。

中断处理程序会执行与中断相关的操作,例如获取键盘输入、响应鼠标事件等。

3. 中断处理完成:中断处理程序执行完毕后,操作系统会将控制权重新交还给之前的任务,使其继续执行。

4. 异常发生:在程序执行过程中,如果出现错误、非法操作或其他特殊事件,会触发异常。

5. 异常处理程序:操作系统会根据异常类型和优先级调用相应的异常处理程序。

异常处理程序会处理异常情况,例如打印错误信息、修复错误、终止程序执行等。

第8章 中断和异常

第8章 中断和异常

4.中断矢量的设置
因为每个中断矢量长度为4个字节,且中断矢量表从物理 地址的0开始,所以中断类型码为n的中断,其中断矢量在中断 矢量表中的地址是4×n。
第7章 中 断 和 异 常
00000H 类型0中断入口地址 (除法出错) 00003H 00004H 类型1中断入口地址 (单步中断) 00007H 专用中断 (5个) 00008H 类型2中断入口地址 (NMI) 0000BH 0000CH 类型3中断入口地址 (断点中断) 0000FH 00010H 类型4中断入口地址 (溢出中断) 00013H 00014H 类型5中断入口地址 系统保留中断(27个) IP内容 CS内容
NMI(17号引脚) 中 断 逻 辑
INTR(18号引脚)
中断指令 溢出中断 INT n INTO N=32~255 INT 4
断点 中断 INT 3
单步中断 (TF=1) INT 1
除法 错误 INT 0
软件(内部)中断
8086/8088中断源
第7章 中 断 和 异 常 1.中断类型码 每个中断都有一个8位的中断类型码,它们是O~OFFH中的一个, 因而允许有256个中断源。CPU依赖于中断类型号来区分各中断 源。 2.中断矢量 中断矢量是中断服务程序的入口地址,即中断服务程序的 第一条指令所在的存储单元的逻辑地址,包括段地址和偏移地 址,所以中断矢量的长度是4字节。
第7章 中 断 和 异 常
多级中断技术:微处理器有几条优先级别不同的中断请求线,
若每一个中断源都有其对应的一条中断请求线,则发生中断时 , 微处理器就能识别中断源及其优先级别。
第7章 中 断 和 异 常
矢量(亦称向量)中断技术:由每个中断源(经接口)向CPU提供 中断源的设备标志码,将程序转向相应中断源设备的中断处理程 序, 或中断源提供中断处理程序的入口地址。由于矢量中断不需

操作系统学习(十三)、中断和异常

操作系统学习(十三)、中断和异常

操作系统学习(⼗三)、中断和异常⼀、中断和异常中断何和异常是指明系统、处理器或当前执⾏程序(或任务)的某处出现⼀个事件,该事件需要处理器进⾏处理。

通常,这种事情会导致执⾏控制器被强迫从当前运⾏程序转移到被称为终端处理程序或异常处理程序的特殊软件函数或任务中。

处理器响应中断或异常所采取的⾏动称为中断/异常服务(处理)。

通常中断发⽣在程序执⾏的随机时刻,以响应硬件发出的信号。

系统硬件使⽤中断来处理外部事件,例如要求为外部设备提供服务。

当然,软件也能通过执⾏ INT n 指令产⽣中断。

异常发⽣在处理器执⾏⼀条指令时,检测到⼀个出错条件时发⽣,例如被0除出错条件。

处理器可以检测到各种出错条件,包括违反保护机制。

页错误以及机器内部错误。

对应⽤程序来说,80x86的中断和异常处理机制可以透明地处理发⽣的异常和中断事件。

当收到⼀个中断或检测到⼀个异常时,处理器会⾃动把当前正在正在执⾏的程序或任务挂起,并开始运⾏中断或异常处理程序。

当处理程序执⾏完毕,处理器就会恢复并继续执⾏被中断的程序或任务。

被中断程序的恢复过程并不会失去程序执⾏的连贯性,除⾮从异常中恢复是不可能的或者中断异常导致当前运⾏程序被终⽌。

⼆、异常和中断向量为了有助于处理异常和中断,每个需要被处理器进⾏特殊处理的处理器定义的异常和中断条件都被赋予了⼀个标识号,称为向量。

处理器把赋予异常或中断的向量⽤作中断描述符表IDT中的⼀个索引号,来定位⼀个异常或中断的处理程序⼊⼝点位置。

允许的向量号范围是0到255.其中0到31保留⽤作80x86处理器定义的异常和中断,不过⽬前该范围内的向量号并⾮每个都已定义了功能,未定义功能的向量号将留在以后使⽤。

范围在32到255的向量号⽤于⽤户定义的中断。

这些中断通常⽤于外部I/O设备,使得这些设备可以通过外部硬件中断机制向处理器发送中断。

三、中断源和异常源(⼀)、中断源处理器从两种地⽅接收终端:外部(硬件产⽣)的中断。

中断、陷阱、异常

中断、陷阱、异常

中断处理程序1.中断的基本概念中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

引起中断发生的事件被称为中断源。

中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转到相应的事件处理程序称为中断响应。

在有些情况下,尽管产生了中断源和发出了中断请求,但CPU内部的处理器状态字PSW 的中断允许位已被清除,从而不允许CPU响应中断。

这种情况称为禁止中断。

CPU禁止中断后只有等到PSW的中断允许位被重新设置后才能接收中断。

禁止中断也称为关中断,PSW 的中断允许位的设置也被称为开中断。

开中断和关中断是为了保证某段程序执行的原子性。

还有一个比较常用的概念是中断屏蔽。

中断屏蔽是指在中断请求产生之后,系统有选择地封锁一部分中断而允许另一部分中断仍能得到响应。

不过,有些中断请求是不能屏蔽甚至不能禁止的,也就是说,这些中断具有最高优先级,只要这些中断请求一旦提出,CPU必须立即响应。

例如,电源掉电事件所引起的中断就是不可禁止和不可屏蔽的。

2.中断的分类与优先级根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处理。

根据中断源产生的条件,可把中断分为外中断和内中断。

外中断是指来自处理器和内存外部的中断,包括I/0设备发出的I/O中断、外部信号中断(例如用户键人ESC键)。

各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。

外中断在狭义上一般被称为中断。

内中断主要指在处理器和内存内部产生的中断。

内中断一般称为陷阱(trap)或异常。

它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。

操作系统笔记一:中断、异常和陷入机制

操作系统笔记一:中断、异常和陷入机制

操作系统笔记⼀:中断、异常和陷⼊机制
中断/异常/陷⼊机制是操作系统由⽤户态转为内核态的唯⼀途径,是操作系统的驱动⼒。

中断、异常机制有以下特征:
1. 随机发⽣
2. ⾃动处理(硬件完成)
3. 可恢复
中断、异常的区别:
中断属外部事件,是正在运⾏的程序所不期望的
异常由正在执⾏的指令引发
在中断、异常过程中,软件和硬件分别担任什么⾓⾊:
硬件--中断/异常响应
软件--中断/异常处理程序
中断/异常的引⼊⽬的:
中断的引⼊是为了CPU与设备之间的并⾏操作
异常的引⼊是为了表⽰CPU执⾏指令时本⾝出现的问题
⼀个故事:⼩明在看书,突然来了个电话,接完电话继续看书,这是中断;⼩明在看书,感觉⼝渴了,喝了⽔接着看书,这是异常。

类别原因同步/异

返回⾏为
中断中断
(interrupt)
来⾃I/O设备或其他硬件部

异步
总是返回到下⼀条指

异常陷⼊(trap)有意识安排的同步返回到下⼀条指令故障(fault)可恢复的错误同步返回到当前指令终⽌(abort)不可恢复的错误同步不会返回
故障与陷⼊:
缺页异常(page fault),由于是fault,所以当缺页异常处理完成之后,还会去尝试重新执⾏那条触发异常的指令(那时多半情况是不再缺页)
断点处理,⽤于调试中,遇到断点会停下来等待你的处理,等到你让其重新执⾏了,就直接执⾏下⼀条指令
完、。

中断处理函数与异常处理函数的关系

中断处理函数与异常处理函数的关系

中断处理函数与异常处理函数的关系一、引言在计算机系统中,中断和异常是两种常见的事件,它们在系统运行过程中起着重要的作用。

中断是指外部设备发送的信号,请求CPU进行处理;异常是指程序运行过程中发生的错误或意外情况。

在处理中断和异常时,计算机系统会调用相应的中断处理函数和异常处理函数来进行处理。

本文将探讨中断处理函数与异常处理函数的关系,并分析它们在系统运行中的作用和联系。

二、中断处理函数的概念和作用1.中断的概念中断是指由外部设备发送的信号,请求CPU进行处理的事件。

在计算机系统中,中断可以分为硬件中断和软件中断两种类型。

硬件中断由外部设备产生,软件中断由CPU指令产生。

2.中断处理函数的作用中断处理函数是系统预先定义的处理中断事件的函数,当系统接收到中断信号时,会调用相应的中断处理函数来处理中断。

中断处理函数的作用是保存当前运行环境的状态,处理中断事件,并在处理完毕后恢复之前的运行环境。

三、异常处理函数的概念和作用1.异常的概念异常是指程序运行过程中发生的错误或意外情况,例如除零操作、访问非法内存等。

异常的发生会导致程序无法继续执行,需要系统进行相应的处理。

2.异常处理函数的作用异常处理函数是系统预先定义的处理异常事件的函数,当程序发生异常时,系统会调用相应的异常处理函数来进行处理。

异常处理函数的作用是终止当前程序的执行,处理异常情况,并采取相应的措施来保护系统的稳定运行。

四、中断处理函数与异常处理函数的关系1.联系中断处理函数和异常处理函数都是系统预先定义的用于处理特定事件的函数,它们都起着保护系统稳定运行的作用。

在系统接收到中断信号或程序发生异常时,都会调用相应的处理函数来进行处理。

2.区别虽然中断处理函数和异常处理函数都是用于处理特定事件的函数,但它们的处理对象和触发条件有所不同。

中断处理函数处理的是外部设备发送的中断信号,而异常处理函数处理的是程序运行过程中发生的错误或意外情况。

五、中断处理函数与异常处理函数的设计原则1.灵活性中断处理函数和异常处理函数应该具有一定的灵活性,在设计时需要考虑到系统的实际情况和需求,确保它们能够适应不同的中断或异常情况。

微机原理第八章:中断技术讲解

微机原理第八章:中断技术讲解
二、中断(zhōngduàn)源识别及中断(zhōngduàn) 判优
1.中断源识别
★ 软件查询法:
★ 中断矢量法:中断源提供中断类型号,CPU根据类型确定中断源 2.中断判优
★ 对同时产生的中断,首先处理优先级别较高的中断;
若优先级别相同,则按先来先服务的原则。
★ 对非同时产生的中断:
低优先级的中断程序允许被高优先级的中断源所中断
1.中断服务子程序的特点: 为“远过程”,用 IRET 指令返回
2.中断服务程序完成的工作
1)保护现场(通用寄存器的内容)
2)开中断(STI)
3)中断处理
4)关中断(CLI)
5)恢复现场 6)IRET
中断服务程序结构
保护有关寄存器内容 开中断
执行中断服务程序 关中断
恢复有关寄存器内容 执行IRET
精品资料
④ 执行 IRET 指令
4.退出中断(zhōngduàn) ① 关中断(zhōngduàn)
退

② 恢复现场中
③ 恢复断点 ④ 开中断(zhōngduàn) 断
精品资料
关中断 保存断点,保存现场
判别中断源 转入中断服务程序 保护寄存器、开中断 执行中断服务程序
IRET
关中断 恢复现场,恢复断点
开中断
STOSW
;串存储(字)
;AX→ES∶[DI]、 [DI+1]
MOV AX,SEG_INTR
;中断服务程序段基址送AX
STOSW
;串存储(字)
STI
;开中断
精品资料
2.用 MOV将直接(zhíjiē)中断向量写入中断向量表中
;将中断向量直接(zhíjiē)写入中断向量表中的程序段为

中断和异常的区别

中断和异常的区别

4.异常和中断的区别:
1>异常:
是指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。

同时异常也称为同步中断,因此只有在一条指令执行后才会发出中断,不可能在指令执行期间发生异常。

a.产生的原因:
程序的错误产生的(eg:除数为0)
内核必须处理的异常条件产生的(eg:缺页)
b.异常又分为故障和陷阱,它们都不使用中断控制器,也不能被屏蔽
c.X86处理处理器中大约有20中异常。

Linux内核必须为每种异常提供一个专门的异常处理程序。

2>中断:也称为异步中断。

因此它是由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能在指令之间发生。

a.中断又分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI)
所用I0设备产生的中断请求均引起可屏蔽中断
硬件故障引起的故障则产生非屏蔽中断。

John说明:
在CPU执行一个异常处理程序时,就不再响应其他异常和中断请求服务.那么如果此时发生了一个异常,CPU不能去响应它,又不能把它的信息丢失该怎么办呢?
这是就用到了堆栈,把所有的信息压入栈。

等当前异常处理后,才从堆栈中取出信息再响应刚才的异常。

(当产生多个非屏蔽中断时,CPU的处理方法同上)。

中断和异常处理读书笔记

中断和异常处理读书笔记

中断和异常处理读书笔记中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。

这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。

中断通常分为同步(synchronous)中断和异步(asynchronous)中断:同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。

异步中断是由其他硬件设备依照CPU时钟信号随机产生的。

在Intel微处理器手册中,把同步和异步中断分别称为异常(exception)和中断(interrupt)。

中断是由间隔定时器和I/O设备产生的,而异常是由程序的错误产生的,或者是由内核必须处理的异常条件产生的。

中断信号的作用:中断信号提供了一种特殊的方式,使处理器转而去执行正常控制流之外的代码。

当一个中断信号达到时,CPU必须停止它当前正在做的事情,并且切换到一个新的活动。

为了做到这一点,就要在内核态堆栈保存程序计数器的当前值,并把与中断类型相关的一个地址放进程序计数器。

中断处理与进程切换有一个明显的差异:由中断或异常处理程序所执行的代码不是一个进程,更确切的说,它是一个内核控制路径,代表中断发生时正在运行的进程执行。

作为一个内核控制路径,中断处理程序比一个进程要轻,中断的上下文很少,建立蒙昧无知中止中断处理所需要的时间很少。

中断处理是由内核执行的最敏感的任务之一,因为它必须满足以下约束:当内核正打算去完成一些别的事情时,中断随时会到来。

因此,内核的目标就是让中断尽可能快的处理完,尽其所能把更多的处理向后推迟。

内核响应中断后需要进行的操作分为两部分:关键而紧急的部分,内核立即执行;其余推迟的部分,内核随后执行。

因为中断随时会到来,所以内核可能正在处理其中一个中断时,另一个中断又发生了。

因此,中断处理程序必须编写成使相应的内核控制路径能以嵌套的方式执行。

当最后一个内核控制路径终止时,内核必须能恢复被中断进程的执行,或者,如果中断信号已导致了重新调度,内核能切换到另外的进程。

了解计算机中断和异常处理机制

了解计算机中断和异常处理机制

了解计算机中断和异常处理机制计算机中断和异常处理机制是操作系统中非常重要的概念之一。

它们在计算机系统的正常运行中发挥着重要的作用,保证了计算机系统的稳定性和可靠性。

本文将详细介绍计算机中断和异常处理机制的相关知识。

一、计算机中断的概念和分类1.1计算机中断的概念计算机中断是指在计算机运行过程中,由于某些事件的发生而打断当前程序的执行,转而去执行相应的中断服务程序的一种机制。

1.2计算机中断的分类计算机中断可以分为硬件中断和软件中断两种类型:硬件中断:由硬件设备发起的中断,比如外部设备请求、时钟中断等。

软件中断:由正在执行的程序指令(软中断指令)或软件发起的中断,比如系统调用。

二、计算机中断的处理流程计算机中断的处理流程主要包括中断请求、中断响应、中断服务程序执行和中断返回这四个过程。

2.1中断请求当硬件设备发生某个事件需要处理时,会向CPU发送一个中断请求信号。

CPU收到中断请求信号后,暂停当前正在执行的程序,保存相关的寄存器信息,并响应中断请求。

2.2中断响应中断响应是指CPU收到中断请求信号后,根据中断请求信号的优先级,选择相应的中断服务程序进行处理。

中断响应的过程主要包括中断向量的选择和中断屏蔽。

2.3中断服务程序执行中断服务程序是用来处理中断事件的程序,它会根据中断请求的类型执行相应的处理操作。

中断服务程序会根据中断类型从中断向量表中查找相应的中断处理程序,并执行相应的操作。

2.4中断返回中断服务程序执行完毕后,会通过中断返回指令返回到原来被中断的程序继续执行。

中断返回的过程主要包括恢复相关的寄存器信息和清除中断屏蔽。

三、计算机异常的概念和分类3.1计算机异常的概念计算机异常是指在计算机运行过程中出现的一些非正常情况,比如非法指令、内存访问越界等。

当计算机发生异常时,会中断当前程序的执行,转而去执行相应的异常处理程序。

3.2计算机异常的分类计算机异常可以分为软件异常和硬件异常两种类型:软件异常:由正在执行的指令引起的异常,比如非法指令、除零错误等。

(最新整理)第八章中断与异常

(最新整理)第八章中断与异常

0
除法 错误
1
单步 TF=1
2021/7/26
8259A IR 0 08 系统定时器 IR 1 09 键盘
INTR INT
IR 2 IR 3
0A 彩色/图形接口 0B 保留(通信)
可编程 中断 控制器 (PIC)
IR 4 IR
5
IR 6
0C 串行通信接口 0D 保留(ALT打印机) 0E 软盘
IR 7 0F 保留(打印机)
24
2、外中断(硬中断) 指外部芯片通过 CPU的INTR引脚或NMI引脚 发出中断申请引起的中断。
当INTR上有高电平信号 当NMI上有上升沿信号
2021/7/26
最大组态(最小组态)
GND
VCC
A14
A15
A13
A16/S3
A12
A17/S4
A11
A18/S5
A10
A19/S6
8 A9
(HIGH)(SSO)
一原则,进一步又把异常分为故障(fault),陷阱(trap)和中止
(abort)3类。
故障是引起故障的程序可被恢复执行的异常,它也是在引起
故障的指令执行之前就报告给系统的一种异常。一旦故障
被检测出,便在保护断点地址后,将程序转入故障处理程
序,执行完该程序后,引起故障的指令便可正确执行。
陷阱是在指令执行期间被检测到的,并在引起异常的指令执
INT 21H
CMP AL, 0Dh
、、 、、 、、 、、
、、
PUSH AX 、、 、、
IRET
用指令调用中断程序
13
六、异 常
异常:是在指令执行期间检测到的不正 常的或非法的状态,使指令不能成功执 行。它与所执行指令有直接联系。

中断和异常

中断和异常

2019/10/15
Linux OS Analysis
17/102
对于处理器探测异常,根据异常时保存在内核堆 栈中的eip的值可以进一步分为:
故障(fault):eip=引起故障的指令的地址
通常可以纠正,处理完异常时,该指令被重新执行 例如缺页异常
陷阱(trap):eip=随后要执行的指令的地址。 异常中止(abort):eip=???
并把与中断信号相关的一个地址放入进程序计数器,从而进入 中断的处理
2019/10/15
Linux OS Analysis
7/102
中断信号的处理原则
快!
当内核正在做一些别的事情的时候,中断会随时到来。无 辜的正在运行的代码被打断
中断处理程序在run的时候可能禁止了同级中断 中断处理程序对硬件操作,一般硬件对时间也是非常敏感
比如一个外设采集到一些数据,发出一个中断信号,CPU必须 立刻响应这个信号,否则数据可能丢失
当一个中断信号到达时,CPU必须停止它当前正在做的 事,并且切换到一个新的活动
为了做到这这一点,
在进程的内核态堆栈保存程序计数器的当前值(即eip和cs寄存器) 以便处理完中断的时候能正确返回到中断点,
Linux OS Analysis
2/102
查看系统中断信息
cat /proc/interrupts
/proc/interrupts: to display every IRQ vector in use by the system
2019/10/15
Linux OS Analysis
3/102
的 内核的目标就是让中断尽可能快的处理完,尽其所能把更

中断和异常——精选推荐

中断和异常——精选推荐

中断和异常中断和异常中断通常被定义为改变处理器执⾏指令顺序的事件。

这样的事件对应于CPU芯⽚内部和外部的硬件电路的信号。

中断可分为1)外部中断(硬件中断2)内部中断(软件中断)/异常:处理器探测异常:由CPU执⾏指令时探测到⼀个反常条件时产⽣,如溢出、除0错等。

对于处理器探测异常,根据异常时保存在内核堆栈中的eip的值可以进⼀步分为故障(fault):eip=引起故障的指令的地址,通常可以纠正,⽐如缺页异常陷阱(trap):eip=随后要执⾏的指令的地址编程异常:由编程者发出的特定请求产⽣,通常由int类指令触发,⽐如系统调⽤1、为什么会有中断?内核的⼀个重要功能就是处理外设。

当外设在进⾏事件处理时,CPU可以执⾏别的任务,只有当外设真正完成了准备好了时CPU才转过来处理外设IO;对外设的处理⽅式⼀般是:轮询、DMA等,效率不⾼;中断机制提供了⼀个很好的解决⽅法。

2、中断信号的作⽤中断信号提供了⼀种特殊的⽅式,使得CPU转去运⾏正常程序之外的代码;当⼀个中断信号到达时,CPU必须停⽌它当前正在做的事,并且切换到⼀个新的活动;此时必须要如下动作:在进程的内核态堆栈保存程序计数器的当前值(即eip和cs寄存器)以便处理完中断的时候能正确返回到中断点(中断没有⾃⼰的上下⽂,它占⽤的是被中断进程的上下⽂,cs、eip保存在被中断进程的内核栈中);并把与中断信号相关的⼀个地址放⼊进程序计数器,从⽽进⼊中断的处理;3、中断信号的处理:中断信号的处理原则就是快!只有中断可以打断中断的执⾏,允许发⽣中断嵌套中断过程中不发⽣进程抢占:因为linux内核的所有中断程序中都不插⼊进程调度程序,就不会发⽣进程调度了进程调度的时机:1)进程被创建时;2)进程的时间⽚⽤完;3)系统调⽤;4)中断退出时4、中断的产⽣:每个能够发出中断请求的硬件设备控制器都有⼀条称为IRQ(Interrupt ReQuest)的输出线;所有的IRQ线都与⼀个中断控制器的输⼊引脚相连;中断控制器与CPU的INTR引脚相连。

关于中断和异常的一些理解

关于中断和异常的一些理解

关于中断和异常的⼀些理解中断中断(硬件中断)是cpu为了响应外部突发事件⽽引⼊的⼀种机制。

在没有中断机制之前cpu需要频繁查询外部设备的状态来与外部设备进⾏通信,⽽有了中断机制后,只有当外部设备要求cpu进⾏处理时cpu才会与其进⾏通信,这就⼤⼤提⾼了cpu的效率。

中断分类可屏蔽中断可屏蔽中断是为了使在执⾏某些任务时系统不希望被打断,所以需要把⼀些中断进⾏屏蔽。

可屏蔽中断请求信号通常是通过CPU的INTR引脚发给CPU的,可以通过CLI 指令把标志寄存器的IF位置零从⽽把可屏蔽信号屏蔽。

不可屏蔽中断不可屏蔽中断是为了处理某些特殊情况。

不可屏蔽中断请求信号是通过CPU的NMI引脚发给CPU的,这时即便使⽤了CLI指令把标志寄存器的IF位置零了也⽆法屏蔽这些中断请求信号,CPU依然需要暂停去执⾏相应的中断处理例程。

异常异常(有的书上也将其称为软中断,即内部中断)是指程序在执⾏过程中形成了某些预先设定的情景,即发⽣某些特定的异常然后cpu会去执⾏相应的异常处理程序。

因为异常有时被认为是软中断,⼜因为异常不基于硬件(也就是不依靠标志寄存器的IF位),所以所有的异常都属于不可屏蔽的中断。

异常分类错误类异常错误类异常⼀般是可以在异常处理后回到发⽣异常的地⽅继续执⾏的,也就是说eip指令指针还会指向引发异常的那条指令。

例如硬件执⾏断点引发的异常,在异常处理后依然会执⾏引发异常的那条指令,如果你不处理他就会⼀直循环引发异常⽆法往下继续运⾏。

陷阱类异常陷阱类异常⼀般是在执⾏完某条指令后引发的异常,因此当发⽣异常时eip指令指针寄存器已经指向引发异常的下⼀条指令。

但是也有⼀些特殊情况,如int3引发的断点异常就时陷阱类异常,但是系统为了⽀持调试会让异常处理程序令eip-1使其⼜指向引发异常的那条指令。

中⽌类异常中⽌类异常⼀般是发⽣了⼀些严重的错误,系统⽆法令程序恢复执⾏只能结束运⾏。

中断和异常的关系有时我们把中断和异常混为⼀谈,会把异常称之为软中断(内部中段)。

中断、陷阱、异常

中断、陷阱、异常

中断处理程序1.中断的基本概念中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

引起中断发生的事件被称为中断源。

中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转到相应的事件处理程序称为中断响应。

在有些情况下,尽管产生了中断源和发出了中断请求,但CPU内部的处理器状态字PSW 的中断允许位已被清除,从而不允许CPU响应中断。

这种情况称为禁止中断。

CPU禁止中断后只有等到PSW的中断允许位被重新设置后才能接收中断。

禁止中断也称为关中断,PSW 的中断允许位的设置也被称为开中断。

开中断和关中断是为了保证某段程序执行的原子性。

还有一个比较常用的概念是中断屏蔽。

中断屏蔽是指在中断请求产生之后,系统有选择地封锁一部分中断而允许另一部分中断仍能得到响应。

不过,有些中断请求是不能屏蔽甚至不能禁止的,也就是说,这些中断具有最高优先级,只要这些中断请求一旦提出,CPU必须立即响应。

例如,电源掉电事件所引起的中断就是不可禁止和不可屏蔽的。

2.中断的分类与优先级根据系统对中断处理的需要,操作系统一般对中断进行分类并对不同的中断赋予不同的处理优先级,以便在不同的中断同时发生时,按轻重缓急进行处理。

根据中断源产生的条件,可把中断分为外中断和内中断。

外中断是指来自处理器和内存外部的中断,包括I/0设备发出的I/O中断、外部信号中断(例如用户键人ESC键)。

各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。

外中断在狭义上一般被称为中断。

内中断主要指在处理器和内存内部产生的中断。

内中断一般称为陷阱(trap)或异常。

它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章 中断和异常
8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8
2012-12-21
概述 中断 异常 中断及异常的暂时屏蔽 中断及异常的优先级 实方式下的中断 保护方式下的中断和异常 中断优先级管理器8259A PIC
1
8.1 概
一、什么是中断

二、中断源和中断优先权
三、中断服务程序
异常10定义为无效TSS故障,属故障型异常
11、异常11 异常11定义为段不存在异常,属故障型异常
2012-12-21 16
12、异常12
异常12定义为栈段故障,属故障型异常 13、异常13 异常13定义为通用保护故障,属故障型异常 14、异常14 异常14定义为页故障,属故障型异常
31 未定义 3 2 U/S 1 R/W 0
2012-12-21
3
CPU执行流程
中断事件1
中断服务程序1
中断事件 2 中断服务程序 2
2012-12-21
4
二、中断源和中断优先权

引起中断的因素很多,
将发出中断申请的外设或内部的原因,称为中断源

给每个中断源指定一个优先权,称为中断优先权 当多个中断源同时发出中断请求时, CPU按照中断优先权的高低顺序,依次响应。

将硬件中断或外中断统称中断 ,将软件中断或内中断统称异常
2012-12-21 10

异常是指令执行期间检查到的不正常或非法 的状态,使指令不能正常执行而产生中断。 这与所执行的指令有直接的关系。它源于 CPU的内部,通常将软中断指令也归于异常
2012-12-21
11
8.2 中

80386,80486支持两种类型的外部中断:可屏蔽中断及不可屏蔽 中断(非屏蔽中断),并有相应的两个中断请求引脚信号---INTR及NMI. 1、 可屏蔽中断
IR 7
2012-12-21
23
二、实方式下的中断优先权

优先级 高




内中断 ( 除零,INT 指令,断点,INTO指令 ) 非屏蔽中断 可屏蔽中断

内中断( 单步 )
当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源, 再响应优先级较低的中断源。
2012-12-21 24
2012-12-21
25
当前指令执行完的含义
• CPU正在执行一条指令,执行完本条指令,响应中断; • 对于带重复前缀的串指令(如REP MOVSB),执行一次 重复和串指令即可响应中断; • 对MOV和POP指令,处理对象为段寄存器, 以及STI和IRET指令执行完本条指令后,
再执行一条指令才响应中断。
包括CPU内部各寄存器、断点地址等。
2012-12-21
8
断点概念:
、、 、、 、、 、、 、、
1000:150H
MOV AX, 0 ADD AX, DX MOV [ DI ], AX
、、 、、 、、 、、 、、
CPU在执行此指令时, 某中断源发申请中断; CPU在执行完该指令后, 转去执行中断子程
2012-12-21
18
8.5 中断及异常的优先级
中断/异常类型 排错故障 优先级 最高
非排错故障
陷阱指令INT n 、 INTO 排错陷阱 NMI中断 INTR中断 中断/异常的优先级
2012-12-21 19
最低
8.6 实方式下的中断
一、实方式下的中断分类
按中断源的不同,中断分为内部中断和外部中断。 1、内部中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断
① 被零除操作或OF=1时执行INTO指令引起 ② 使用DEBUG中的单步或断点设置操作引起 ③ 执行INT n 指令引起
2012-12-21
20
2、外部中断(硬中断)
指外部芯片通过
最大组态(最小组态) GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND
中断和排错异常在某些条件下可被忽略或屏蔽
引起中断和排错异常可被忽略或屏蔽的条件如下:
1、EFLAGS中的IF=0,屏蔽外部可屏蔽中断.
2、IF=0时,执行STI指令,则在STI指令及下面一条指令执行期间,屏蔽外部可屏蔽中断.
3、EFLAGS中的RF=1,屏蔽排错故障.(RF为调整恢复标志:RF=0,调试故障被接受, RF=1,调试故障被忽略) 4、系统正处理一个非屏蔽外部中断,则屏蔽任何新的非屏蔽中断。 5、执行以SS为目的寄存器的MOV及POP指令时,将在该指令及下面一条指令执行 期间屏蔽各种中断及排错异常. 6、在指令前缀LOCK及被锁定的指令之间不允许中断。
2012-12-21
13
2、 异常错误码
产生异常时CPU在异常处理程序的栈中压入一个异常错误码。异常错误 码格式如下,异常错误码位于特定的堆栈中,对于一些无错误信息的异常, 向栈中压入错误码0。 错误码的格式类似于选择器的格式,区别仅在于选择RPL域被两个1位 域(EXT、IDT)替代。
域 D0:EXT 值 0 1 D1:IDT
VCC A15 A16/S3 A17/S4 A18/S5 A19/S6 (HIGH)(SSO) MN/MX RD RQ/GT0(HOLD) RQ/GT1(HLDA) LOCK(WR) S2(IO/M) S1(DT/R) S0(DEN) QS0(ALE) QS1(INTA) TEST READY RESET
15 选择器索引 3 2 1 0
描述 中断的程序引起异常 外部事件引起异常 索引域的意义取决于 TI域
0
1 D2:TI 0 1
选择器属于门描述符 索引域指向GDT 索引域指向LDT
80286
保留 选择器索引
D3----D15
为索引域,与TI组成一
个14位的指针
80386/80486
2012-12-21
2012-12-21
26
0: 0000 0: N×4 0: N×4+2
、、、 、、、
0:0
0200h 3000h
中断向量表0:0 ~ 3FFH
1000:150h
3000:200h
、、、 0:3FFH 、、、 某中断源发申请中断, 、、、 申请执行类型号为N的中断子程 MOV AX, 0 ADD AX, DX 堆栈 MOV [DI], AX (IP)=0200h 执行 、、、 (CS)=3000h IRET后 、、、 、、、 响应中断后 (IP) 0150 SS:SP 、、、 (CS) 1000 MOV BX,CX 类型N (PSW) 、、、 (PSW) 响应中断前 中断子程 、、、 SS:SP IRET SS:SP 、、、
异常4定义为溢出异常陷阱,属陷阱型异常
5、异常5 异常5定义为边界检查故障,属故障型异常
2012-12-21
15
6、异常6
异常6定义为无效操作码故障,属故障型异常 7、异常7
异常7定义为协处理器无效故障,属故障型异常
8、异常8 异常8定义为双重故障,属中止型异常
9、异常9
异常9定义为协处理器段越界异常,属中止型异常 10、异常10
四、断点和中断现场
五、硬件中断和软件中断
2012-12-21
2
一、什么是中断
在CPU正常运行程序时,由于内部或外部某个非 预料事件或指定的事件的发生(如:外部事件,电
源掉电,硬件故障,传输错,存贮错,运算错及操作
面板要求服务等),使CPU暂停正在运行的程序,而 转去执行处理引起中断事件的程序,处理完毕然后 再返回被中断了的程序,继续执行。这个过程就是 中断。

2012-12-21
5
三、中断服务程序
处理中断源,完成其所要求功能的程序, 称中断服务程序(中断例行程序、中断子程)。
CPU执行流程 非预料事件1 中断服务程序1 非预料事件2
中断服务程序2
2012-12-21
6
非预料事件是指事件发生的时间无法预知, 即中断源何时产生中断不确定,是随机的。 但事件的性质及处理方法则是已知的, 确定的, 即中断服务程序是事先编写好的,
只是何时执行未知。
中断源产生中断的随机性,
使中断服务程序的执行也具有随机性,
即何时执行中断服务程序不是在程序中安排好的。
2012-12-21
7
四、断点和中断现场

断点:
是 指 CPU 执 行 的 现 行 程 序 被 中 断 时 的 下 一 条 指 令
的地址,又称断点地址。

中断现场:
是指CPU转去执行中断服务程序前的运行状态,
地址1000:150H为断点
PUSH AX
、、 、、
IRET
2012-12-21 9
五、硬件中断和软件中断

早期中断概念的引入, 是为解决CPU与外设间的速度匹配问题,提高CPU的工作 效率。中断源主要是由外部硬件产生。

当今的中断技术, 不再限于外部硬件产生中断(称硬件中断或外中断 ), 还可由CPU内部产生 (如被零除操作),或者由程序预先 安排,即由指令调用的中断服务程序。(称软件中断或 内中断)又称为异常中断

即当IF=0时,将INTR引脚上的来自断申请屏蔽。非屏蔽中断

由NMI引脚引起的中断,称非屏蔽中断。 当NMI引脚上产生上升沿信号,CPU必响应此中断请 求,即NMI引脚上的中断请求不受IF标志的控制, IF不能屏蔽NMI引脚上的中断请求。

2012-12-21
22
实方式下的中断源
08 系统定时器 09 键盘 0A 彩色/图形接口
14
3、 处理器定义的异常
相关文档
最新文档