-
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-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(也就是有中断请求)...当外设向CPU发送可屏蔽中断请求:
1)8259中断控制器通过INTR信号线发送高电屏请求信号
2)CPU在每执行一条指令的最后一个时钟周期时会采样INTR信号线判断有无新的中断请求,如果INTR标志为1(也就是有中断请求)CPU就会首先判断IF标志位,如果为1,CPU就允许中断响应。IF=0就忽略该中断。
3)IF=1,CPU通过INTA(这里表示上划线,因为笔者不知道怎么设置上划线)信号线向8259发送两个连续负脉冲的中断响应信号。第一个信号表示CPU准备好接收中断类型码,第二个信号告诉8259中断控制器发送中断类型码。当中断控制器收到第二个信号时就会通过数据线将中断类型码发送给CPU。CPU就凭借着中断号从中断向量表中找到对应的中断函数地址(中断向量表是一个结构体数组,其中每个结构体中记录了CS:IP的值,结构体中低2字节记录CS段地址,高2字节记录IP偏移地址)
4)CPU找到中断函数后就会暂停当前执行中的程序,将新的CS:IP加载到寄存器,跳转到中断函数首地址去执行。这个过程中CPU还需要按顺序做以下处理:
1、将标志寄存器FR的当前值压入堆栈
2、将标志寄存器的中断允许标志位IF和单步标志位TF设置为0。IF=0,是为了屏蔽其他同级可屏蔽中断(如果是比
当前中断高级那么IF=0就失效了);TF=0,为了避免进入服务函数以单步形式执行(怕影响执行效率)
3、保护断点,将当前CS:IP压入堆栈保存,以便执行中断函数后返回
4、根据中断号找到中断函数首地址,将获得的CS:IP加载进寄存器
5、执行前还要压入各个寄存器的值进入堆栈,防止中断程序破坏现场。中断程序执行完成后再恢复寄存器的值并
设置IF=1
6、返回断点,中断服务结束后最后一条指令是IRET(中断返回指令),该指令将保存在堆栈中的断点值和寄存
器FR的值弹出堆栈,将CS:IP还原成中断前的值。
-
中断及中断处理过程
2019-07-24 22:00:231. 中断和异常的概念区别 Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。 不同点在于: 中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常...1. 中断和异常的概念区别
Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。
不同点在于:
中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常(exception)是同步的事件,典型的比如处理器执行某条指令时发现出错了等等。
中断又可以分为可屏蔽中断和非可屏蔽中断,异常又分为故障、陷阱和异常中止3种;
2. 中断(异常)处理过程
需要明确的一点是CPU对于中断和异常的具体处理机制本质上是完全一致的,即:
当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(如果是有错误码的异常)信息。
7)跳转到中断服务程序的第一条指令开始执行
CPU利用中断服务程序的段描述符将其第一条指令的地址加载到cs和eip寄存器中,开始执行中断服务程序。这意味着先前的程序被暂停执行,中断服务程序正式开始工作。
8)中断服务程序处理完毕,恢复执行先前中断的程序
在每个中断服务程序的最后,必须有中断完成返回先前程序的指令,这就是iret(或iretd)。程序执行这条返回指令时,会从栈里弹出先前保存的被暂停程序的现场信息,即eflags,cs,eip重新开始执行
-
中断处理的基本过程
2020-03-24 15:07:49中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段。 1.中断请求阶段 1)发生在CPU内部的中断(内部中断),不需要中断请求,CPU内部的中断控制逻辑直接接收处理。 2)外部中断... -
中断和中断处理流程
2020-12-20 04:41:201. 中断概念中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件的同步信号,而进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt request,IRQ)。硬件中断导致处理器... -
计算机组成原理(中断处理过程)
2018-06-30 19:31:42中断处理过程 Created with Raphaël 2.1.2关中断保存断点,保存现场判别中断条件,转入中断服务程序开中断执行中断服务程序 关中断恢复现场,恢复断点开中断返回返回断点 关中断 进入不可再次响应中断的状态,... -
x86中断处理过程
2019-06-18 14:10:29文章目录了解x86中的中断源中断interrupts异常Exceptions了解CPU与操作系统如何处理中断x86如何通过中断处理来完成系统调用能够对中断向量表(中断描述表,简称IDT)进行初始化 了解x86中的中断源 中断、异常在具体... -
中断处理过程(含8086)
2019-07-13 12:46:19中断处理过程 中断的相关定义 中断:在CPU执行程序的过程中,出现了某种紧急情况或异常的事件时,暂停正在执行的程序,转去处理该事件,并在处理完该事件之后返回断点处(指返回主程序时执行的第一条指令的地址)... -
Linux中断机制:硬件处理,初始化和中断处理
2018-08-06 23:04:17来源: CSDN | phenix_lord的专栏硬件处理最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。不同的外部设备、不同的体系结构、不同的OS... -
中断技术之中断的定义,中断服务程序的设计方法,中断处理的过程以及中断向量表的建立
2019-11-24 15:17:43一,中断的定义 二 ,中断处理的过程 三,8086/8088CPU可以处理256种不同类型的终端 四,中断服务程序的设计方法 五中断向量表的建立 -
简述CPU中断响应过程的九大步骤
2020-12-19 13:28:27本文就CPU中断响应过程的九个步骤进行简单讲述,希望大家都能通过本文大致了解中断响应过程。CPU响应中断,就是CPU要去执行相应的中断服务程序,其响应过程是CPU将现在执行程序的指令地址压入堆栈,跳转到中断服务... -
硬件中断,软件中断
2020-08-10 09:54:21首先介绍软件触发和硬件触发的区别 软件触发,需要你代码给出软件触发条件,占用cpu执行...如有的自动测量系统中的高速数据卡就接收position controller发出的触发信号。而有的则依靠矢量网络分析仪接收外部触发信 -
:I/O中断处理过程包括哪几个阶段?中断服务程序流程分为哪几部分?
2020-03-22 19:20:25完整的中断处理过程分为 1)中断响应的事前准备: 系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都... -
linux 中断机制的处理过程
2018-10-19 09:10:21一、中断的概念 中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或...Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异... -
I/O中断处理详细过程
2019-01-06 13:30:001.CPU发送启动I/O设备的命令,将I/O接口中的B触发器置1,D触发器置O。 2.设备开始工作,需要向CPU传送数据时,将数据送入数据缓冲器...中断查询信号可以让那些接口中D触发器置1且中断屏蔽触发器(MASK)置0的设备的I... -
ARM中断处理过程
2018-05-08 15:18:57一、前言本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:1、第二章描述了中断处理的准备过程2、第三章描述了当发生中的时候,ARM硬件的... -
详:操作系统的中断机制-中断和异常,中断的超详细处理过程
2020-03-01 10:17:40下面是一个处理过程 用户态收到中断信号会转换为和心态 处理,此时暂停任务1 处理完不是接着执行任务1,而是转到了任务2 收到中断信号就会转为核心态,这是用户态和核心态转换的唯一方式 此时的i/0设备完成也... -
Linux 中断之中断处理浅析
2019-01-17 14:15:091. 中断的概念 ...Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。 软件对硬件进行配置后,软件期望等待硬件的某种状态(比如,收到了数据),这里有两种方式,一种是轮询(pol... -
硬件中断和软件中断的区别?
2020-07-09 09:09:15一、指代不同 1、硬件中断:指向量中断,即中断源的识别...2、软件中断:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;而下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排 -
Linux内核设计与实现---中断和中断处理程序
2022-03-21 15:21:23中断和中断处理程序1 中断2 中断处理程序3 注册中断处理程序4 编写中断处理程序共享的中断处理程序中断处理程序实例5 中断上下文6 中断处理机制的实现7 中断控制禁止和激活中断禁止指定中断线中断系统的状态 ... -
中断响应过程
2021-03-11 09:21:4932位微处理器的结构与工作模式 32位微处理器结构简介 32位微处理器的工作模式 寄存器 用户级寄存器 系统级寄存器 程序调试寄存器 保护模式下的内存管理 段内存管理技术 ...任务调用、链接和切换过程 ... -
Linux中断机制之一:硬件处理
2015-04-18 20:44:23最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。不同的外部设备、不同的体系结构、...为了达到这个目的,首先要为中断执行做好准备,完成初始化相关的操作。包括: 1、 初始化中断控制器等相关器 -
嵌入式RTOS---异常和中断处理流程
2019-11-26 22:50:39所谓异常,指的是中止了程序正常的执行过程而不得不完成一些特殊的工作(异常工作)。 中断也是一种异常,中断包括由外部硬件产生的外部中断和内部硬件产生的内部中断。 异常分为同步异常(SWI 软件指令产生的... -
硬件中断与软件中断
2018-08-05 23:26:52中断定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。 硬件中断是由与系统相连的外设(比如网卡 硬盘 键盘等)自动产生的. 每个设备或设备集都有他自己的IRQ(中断请求), 基于... -
Linux中的中断处理
2019-02-08 09:19:27Linux中的中断处理 -
ARM架构异常中断处理流程
2018-12-05 21:02:51在正常程序执行过程中,每执行一条ARM指令,程序计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)的值加两个字节。整个过程是顺序执行。 通过跳转指令,程序可以跳转到特定的地址标志处...