-
2020-12-23 01:29:17
展开全部
1)中断e69da5e6ba903231313335323631343130323136353331333431366338响应的事前准备:
系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都知道得很清楚,才能正确地响应各种中断信号和异常。
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) 保护当前程序的现场
C
更多相关内容 -
中断及中断处理过程
2020-12-20 04:41:16中断及中断处理过程1. 中断和异常的概念区别Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于:中断(interrupt)是异步的事件,典型的比如由I/O设备触发;...中断及中断处理过程
1. 中断和异常的概念区别
Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于:
中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常(exception)是同步的事件,典型的比如处理器执行某条指令时发现出错了等等。
中断又可以分为可屏蔽中断和非可屏蔽中断,异常又分为故障、陷阱和异常中止3种,它们的具体区别很多书籍和官方文档都解释的比较清楚这里不再赘述。
关于它们的区别有两点是需要注意的:
1)平常所说的屏蔽中断是不包括异常的,即异常不会因为CPU的IF位被清(关中断,指令:cli)而受影响,比如缺页异常,即使关了中断也会触发CPU的处理。
2)通常说的int 80h这种系统调用使用的中断方式实际上硬件上是理解为异常处理的,因此也不会被屏蔽掉,这也很好理解,int 80h这种中断方式是程序里主动触发的,对于CPU来说属于同步事件,因此也就属于异常的范畴。
2. 中断(异常)处理过程
需要明确的一点是CPU对于中断和异常的具体处理机制本质上是完全一致的,即:
当CPU收到中断或者异常的信号时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理程序中,在完成对这个信号的处理后再跳回到刚才被打断的程序或任务中。这里只描述保护模式下的处理过程,搞清楚了保护模式下的处理过程(更复杂),实模式下的处理机制也就容易理解了。
具体的处理过程如下:
0)中断响应的事前准备:
系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都知道得很清楚,才能正确地响应各种中断信号和异常。
[a]系统将所有的中断信号统一进行了编号(一共256个:0~255),这个号称为中断向量,具体哪个中断向量表示哪种中断有的是规定好的,也有的是在给定范围内自行设定的。
中断向量和中断服务程序的对应关系主要是由IDT(中断向量表)负责。操作系统在IDT中设置好各种中断向量对应的中断描述符(一共有三类中断门描述符:任务门、中断门和陷阱门),留待CPU查询使用。而IDT本身的位置是由idtr保存的,当然这个地址也是由OS填充的。
[b]中断服务程序具体负责处理中断(异常)的代码是由软件,也就是操作系统实现的,这部分代码属于操作系统内核代码。也就是说从CPU检测中断信号到加载中断服务程序以及从中断服务程序中恢复执行被暂停的程序,这个流程基本上是硬件确定下来的,而具体的中断向量和服务程序的对应关系设置和中断服务程序的内容是由操作系统确定的。
1)CPU检查是否有中断/异常信号
CPU在执行完当前程序的每一条指令后,都会去确认在执行刚才的指令过程中中断控制器(如:8259A)是否发送中断请求过来,如果有那么CPU就会在相应的时钟脉冲到来时从总线上读取中断请求对应的中断向量[2]。
对于异常和系统调用那样的软中断,因为中断向量是直接给出的,所以和通过IRQ(中断请求)线发送的硬件中断请求不同,不会再专门去取其对应的中断向量。
2)根据中断向量到IDT表中取得处理这个向量的中断程序的段选择符
CPU根据得到的中断向量到IDT表里找到该向量对应的中断描述符,中断描述符里保存着中断服务程序的段选择符。
3)根据取得的段选择符到GDT中找相应的段描述符
CPU使用IDT查到的中断服务程序的段选择符从GDT中取得相应的段描述符,段描述符里保存了中断服务程序的段基址和属性信息,此时CPU就得到了中断服务程序的起始地址。
这里,CPU会根据当前cs寄存器里的CPL和GDT的段描述符的DPL,以确保中断服务程序是高于当前程序的,如果这次中断是编程异常(如:int 80h系统调用),那么还要检查CPL和IDT表中中断描述符的DPL,以保证当前程序有权限使用中断服务程序,这可以避免用户应用程序访问特殊的陷阱门和中断门[3]。
4)CPU根据特权级的判断设定即将运行的中断服务程序要使用的栈的地址
CPU会根据CPL和中断服务程序段描述符的DPL信息确认是否发生了特权级的转换,比如当前程序正运行在用户态,而中断程序是运行在内核态的,则意味着发生了特权级的转换,这时CPU会从当前程序的TSS信息(该信息在内存中的首地址存在TR寄存器中)里取得该程序的内核栈地址,即包括ss和esp的值,并立即将系统当前使用的栈切换成新的栈。这个栈就是即将运行的中断服务程序要使用的栈。紧接着就将当前程序使用的ss,esp压到新栈中保存起来。
6)保护当前程序的现场
CPU开始利用栈保护被暂停执行的程序的现场:依次压入当前程序使用的eflags,cs,eip,errorCode(如果是有错误码的异常)信息。
官方文档[1]给出的栈变化的示意图如下:
7)跳转到中断服务程序的第一条指令开始执行
CPU利用中断服务程序的段描述符将其第一条指令的地址加载到cs和eip寄存器中,开始执行中断服务程序。这意味着先前的程序被暂停执行,中断服务程序正式开始工作。
8)中断服务程序处理完毕,恢复执行先前中断的程序
在每个中断服务程序的最后,必须有中断完成返回先前程序的指令,这就是iret(或iretd)。程序执行这条返回指令时,会从栈里弹出先前保存的被暂停程序的现场信息,即eflags,cs,eip重新开始执行。
-
中断处理过程
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,标志寄存器的出栈,即恢复断点并返回到主程序。 -
一个完整的中断处理过程应该包括
2020-12-23 01:30:11一个完整的中断处理过程应该包括:中断请求、中断排队或中断判优、中断响应、中断处理和中断返回等环节,下面分别进行讨论。1.中断请求中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备...一个完整的中断处理过程应该包括:中断请求、
中断排队或中断判优、中断响应、中断处
理和中断返回等环节,下面分别进行讨论。
1
.中断请求
中断请求是由中断源向
CPU
发出中断请求信号。外部设备发出中断请求信号要具备以
下两个条件:
(
1
)外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送
到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向
CPU
发出中断请求。
(
2
)系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这
个外设的请求屏蔽。
当这个外设中断请求被屏蔽,
虽然这个外设准备工作已经完成,
也不能
发出中断请求。
2
.中断排队
中民申请是随机的,有时会出现多个中断源同时提出中断申请。但
CPU
每次只能响应
一断源的请求,
那么究竟先响应哪一个中断源的请求呢?这就必须根据各中断源工作性质的
轻重缓急,
预先安排一个优先级顺序,
当多个中断源同时申请中断时,
即按此优先级顺序进
行排队,等候
CPU
处理。一般是把最紧迫和速度最高的设备排在最优先的位置上。
CPU
首
先响应优先级别最高的中断源。当中断处理完毕,再响应级别低的中断申请。
中断排队可以采用硬件的方法,
也可以采用软件的方法。
前者速度快,
但需要增加硬设
备;后者无需增加硬设备,但速度慢,特别是中断源很多时尤为突出。
软件优用查询技术。当
CPU
响应中断后,就用软件查询以确定是哪些外设申请中断,
并判断它们的优先权。一个典型的软件优先权排队接口电路如
图
6
-
10
所示,图中把
8
个
外设的中断请求触发器组合起来,
作为一具端口,
并赋以设备号。
把各个外设的中断请求信
号相
“
或
”
后,作为
INTR
信号,故其中任一外设有中断请求,都可向
CPU
送出
INTR
信号。
当
CPU
响应中断后,把中断寄存器的状态作为一个外设读入
CPU
,逐位检测它们的状态,
若哪一位为
1
,则该位对应的外设有中断请求,应转到相应的服务程序的入口。其流程如图
6
-
11
所示。
-
8086中断处理过程
2020-04-09 09:25:53当外设向CPU发送可屏蔽中断请求: 1)8259中断控制器通过INTR信号线发送高电屏请求信号 2)CPU在每执行一条指令的最后一个时钟周期时会采样INTR信号线判断有无新的中断请求,如果INTR标志为1(也就是有中断请求)... -
ARM中断处理过程
2018-05-08 15:18:57一、前言本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:1、第二章描述了中断处理的准备过程2、第三章描述了当发生中的时候,ARM硬件的... -
计算机组成原理(中断处理过程)
2018-06-30 19:31:42中断处理过程 Created with Raphaël 2.1.2关中断保存断点,保存现场判别中断条件,转入中断服务程序开中断执行中断服务程序 关中断恢复现场,恢复断点开中断返回返回断点 关中断 进入不可再次响应中断的状态,... -
:I/O中断处理过程包括哪几个阶段?中断服务程序流程分为哪几部分?
2020-03-22 19:20:25完整的中断处理过程分为 1)中断响应的事前准备: 系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都... -
中断处理过程(含8086)
2019-07-13 12:46:19中断处理过程 中断的相关定义 中断:在CPU执行程序的过程中,出现了某种紧急情况或异常的事件时,暂停正在执行的程序,转去处理该事件,并在处理完该事件之后返回断点处(指返回主程序时执行的第一条指令的地址)... -
缺页中断处理过程
2018-11-15 11:24:54缺页中断处理过程 -
操作系统---(35)缺页中断与缺页中断处理过程
2020-06-09 17:19:121. 缺页中断 2. 缺页中断的断点 缺页中断是指令执行过程中产生的中断,而非(一般...4. 缺页中断处理过程 (1) 保留进程上下文 (2)判断内存是否有空闲可用帧?若有,则获取一个帧号No,转(4) 启动I/O过程。若无,继续 -
中断处理过程,中断向量,中断保护现场,中断嵌套,中断返回
2018-11-15 21:44:48有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套 ... -
中断处理的详细过程
2021-07-31 16:36:27经过中断判优,中断处理进入中断响应阶段,中断响应时,CPU向中断源发出中断响应信号,同时: 保护硬件现场 关中断 保存断点 获得中断服务程序的入口地址 4. 中断服务阶段 保护现场 开中断:即允许中断服务... -
STM32中断流程处理
2018-04-30 14:58:33中断的定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,中断的定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即... -
中断和中断处理流程
2020-12-20 04:41:201. 中断概念中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt request,IRQ)。硬件中断导致处理器... -
中断处理的一般过程
2021-07-03 22:00:18中断处理包括一下几个步骤: 1、中断请求 8088/8086CPU的NMI为边沿触发,INTR为电平触发。在中断请求被响应之前会一直发送中断请求。 2、中断源识别 当系统同时有多个中断源发出的中断请求时,系统往往只能相应... -
中断的概念和中断处理过程
2013-05-30 22:17:06中断的概念和中断处理过程 (1)中断: 在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段,这种处理方式称为中断。 (2)中断的作用: ◎并行操作 ◎硬件故障报警与处理 ◎... -
中断处理的基本过程
2020-03-24 15:07:49中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段。 1.中断请求阶段 1)发生在CPU内部的中断(内部中断),不需要中断请求,CPU内部的中断控制逻辑直接接收处理。 2)外部中断... -
x86中断处理过程
2019-06-18 14:10:29文章目录了解x86中的中断源中断interrupts异常Exceptions了解CPU与操作系统如何处理中断x86如何通过中断处理来完成系统调用能够对中断向量表(中断描述表,简称IDT)进行初始化 了解x86中的中断源 中断、异常在具体... -
浅谈中断与单片机中断处理的过程
2020-06-01 15:46:27中断是个很重要的一个概念,在计算机组成原理中曾经讲过这一...中断处理过程 第一步:保护现场,将当前位置的PC地址压栈; 第二步:跳转到中断服务程序,执行中断服务程序; 第三步:恢复现场,将栈顶的值回送给PC; 第 -
10.5 外部中断的处理过程
2019-09-20 21:03:0710.5 外部中断的处理过程 我们之前已经学习了内部中断的处理方法,那么外部中断和内部中断总体上是很类似的。只是在一些具体的处理细节上和硬件的连接方式上有所不同。那我们现在就来看一看外部中断是如何处理的。 ... -
WinCE中断处理过程
2009-07-26 11:08:26WinCE中断处理过程,WinCE中断处理过程,WinCE中断处理过程,WinCE中断处理过程 -
系统中断和处理过程
2018-11-25 23:15:56用户态和内核态 cpu状态分为 用户态 和 内核态 ...3. 中断处理完毕后,堆栈寄存器内容弹栈,恢复断点寄存器的值,恢复断点进程,若有程序正在等待此次I/O的结果,则应将其唤醒。 下一节 进程和线程