中断(interrupt)、异常(exception)、陷入(trap)

http://blog.chinaunix.net/cp.php?ac=blog

中断:是为了设备与CPU之间的通信。典型的有如服务请求,任务完成提醒等。比如我们熟知的时钟中断,硬盘读写服务请求中断。中断的发生与系统处在用户态还是在内核态无关,只决定于EFLAGS寄存器的一个标志位。我们熟悉的sti,
cli两条指令就是用来设置这个标志位,然后决定是否允许中断。在单个CPU的系统中,这也是保护临界区的一种简便方法。中断是异步的,因为从逻辑上来说,中断的产生与当前正在执行的进程无关。事实上,中断是如此有用,Linux用它来统计时钟,进行硬盘读写等。
异常:异常是由当前正在执行的进程产生。异常包括很多方面,有出错(fault),有陷入(trap),也有可编程异常(programmable
exception)。出错(fault)和陷入(trap)最重要的一点区别是他们发生时所保存的EIP值的不同。出错(fault)保存的EIP指向触发异常的那条指令;而陷入(trap)保存的EIP指向触发异常的那条指令的下一条指令。因此,当从异常返回时,出错(fault)会重新执行那条指令;而陷入(trap)就不会重新执行。这一点实际上也是相当重要的,比如我们熟悉的缺页异常(page
fault),由于是fault,所以当缺页异常处理完成之后,还会去尝试重新执行那条触发异常的指令(那时多半情况是不再缺页)。陷入的最主要的应用是在调试中,被调试的进程遇到你设置的断点,会停下来等待你的处理,等到你让其重新执行了,它当然不会再去执行已经执行过的断点指令。
可编程中断:这类中断可由编程者用int指令来触发。在Linux中,使用了一个,也是唯一的一个可编程中断,就是int
0x80系统调用。硬件对可编程中断的处理与对trap的处理类似,即从这类异常返回时也是返回到触发异常的下一条指令。关于可编程中断,还有另外一种说法:软件中断(software
interrupt),其实是一个意思.

http://scst0740506.blog.163.com/blog/static/11991224620100684852806/

interrup即外中断,指来自处理机和内存外部的中断,包括 I/O 设备发出的
I/O中断、外部信号中断、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。

trap即内中断,主要指在处理机和内存内部产生的中断。它包括程序运算引起的各种错误。软中断是通信进程之间用来模拟硬中断的一种信号通信方式。

中断和陷阱的主要区别:

1 、陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。

2 、陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。

3 、CPU 在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷阱。

4 、在有的系统中,陷入处理程序被规定在各自的进程上下文中执行,而中断处理程序则在系统上下文中执行。

软中断与硬中断的比较:

相同点:其中断源发中断请求或软中断信号后, CPU 或接收进程在适当的时机自动进行中断处理或完成软中断信号所对应的功能。

不同点:接收软中断信号的进程不一定正好在接收时占有处理机,而相应的处理必须等到该接收进程得到处理机之后才能进行。

也有人说trap是软件引起的中断,就是所谓的软中断,比如汇编语言里int指令就是引起了一个软中断;而有硬件管脚发起的中断叫硬中断。这样看来,trap是中断的一种。

中断(interrupt)、异常(exception)、陷入(trap),布布扣,bubuko.com

时间: 2024-10-24 18:39:32

中断(interrupt)、异常(exception)、陷入(trap)的相关文章

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

中断/异常/陷入机制是操作系统由用户态转为内核态的唯一途径,是操作系统的驱动力. 中断.异常机制有以下特征: 随机发生 自动处理(硬件完成) 可恢复 中断.异常的区别: 中断属外部事件,是正在运行的程序所不期望的 异常由正在执行的指令引发 在中断.异常过程中,软件和硬件分别担任什么角色: 硬件--中断/异常响应 软件--中断/异常处理程序 中断/异常的引入目的: 中断的引入是为了CPU与设备之间的并行操作 异常的引入是为了表示CPU执行指令时本身出现的问题 一个故事:小明在看书,突然来了个电话,

中断与异常

中断interrupt被定义为一个事件,该事件改变处理器执行的指令顺序. 中断分为同步中断(异常exception)和异步中断(中断interrupt): 同步中断是当指令执行时由CPU控制单元产生的,只有在一条指令终止执行后CPU才会发出中断. 异步中断是由其他硬件设备依照CPU时钟信号随机产生的. 中断是由间隔定时器和I/O设备产生的,如用户的一次按键会引起一个中断. 异常是由程序的错误产生的(内核发出信号来处理异常),或由内核必须处理的异常条件产生的(缺页.int指令.sysenter指令

中断、异常、trap 的区别

[1]无论是中断,还是异常和陷阱,对应的处理函数,一般都可以称其为中断服务程序ISR, 都只是一个函数 具体函数里面要做什么事情,是由你写程序的人决定的. [2] 比如中断中处理对应的事情,异常中自己决定如何响应出现的异常,陷阱中决定做什么事情. [3]    中断:是为了设备与CPU之间的通信.典型的有如服务请求,任务完成提醒等.比如我们熟知的时钟中断,硬盘读写服务请求中断.中断的发生与系统处在用户态还是在内核态无关,只决定于EFLAGS寄存器的一个标志位.我们熟悉的sti, cli两条指令就

中断和异常的再总结

@(OS) 内部异常(内中断) 故障(fault)自陷(trap)终止(abort)是源自CPU执行指令内部的事件.如:非法操作码,地址越界,算术溢出,虚存系统的缺页,陷入指令等引起的事件.内部异常不可被屏蔽,一旦出现立马处理. 外中断:来自CPU执行指令以外的事件.如:I/O中断,时钟中断等. 在操作系统层次上,我们多听到“异常”(Exception)而少见“中断”(Interrupt),且往往笼统地称其为异常,但处理器微体系结构规范通常会区分中断和异常. 一般而言,中断是异步的,异常是同步的

2-1 处理器状态(模式)中断与异常

一.处理器是由运算器.控制器.一系列的寄存器以及高速缓存构成 1. 两类寄存器:              用户可见寄存器:高级语言编译器通过优化算法分配并使用,以减少程序访问内存的次数              控制和状态寄存器:用于控制处理器的操作通常由操作代码使用 常见的控制和状态寄存器 程序计数器(PC:Program Counter),记录将要取出的指令的地址              指令寄存器(IR:Insruction Register),记录最近取出的指令           

linux总结-第一讲-中断和异常

中断与异常 一.中断(广义):会改变处理器执行指令的顺序,通常与CPU芯片内部或外部硬件电路产生的电信号相对应 中断--异步的:由硬件随机产生,在程序执行的任何时候可能出现 异常--同步的:在(特殊的或出错的)指令执行时由CPU控制单元产生 我们用"中断信号"来通称这两种类型的中断 二.中断信号的作用 中断信号提供了一种特殊的方式,使得CPU转去运行正常程序之外的代码 当一个中断信号到达时,CPU必须停止它当前正在做的事,并且切换到一个新的活动 在进程的内核态堆栈保存程序计数器的当前值

中断、异常和系统调用

所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被"打断"的程序. 中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断.时钟中断.控制台中断等.第二类是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47-63Hz之外).程序故障(非法操作码.地址越界.浮点溢出等)等引起的过程. 第三类由于在程序中使用了请

一个操作系统的实现(9)-中断和异常

这节讲了中断与异常的一些基本概念.然后通过代码实现一个显示字符的中断和时钟中断. 实模式与保护模式下的中断有区别 保护模式下的中断与实模式下的中断有几点不同. 实模式下的中断向量表在保护模式下被IDT取代 实模式下可以使用BIOS中断,而保护模式下不能用 这里面出现了一个新的名词IDT,接下来就介绍什么是IDT. 中断描述符表(IDT,Interrupt Descriptor Table) 中断描述符表的作用 与GDT和LDT一样,IDT也是一个描述符表,IDT的描述符可以是下面三种之一: 中断

操作系统——中断、异常和系统调用比较

我们首先要明确,为什么操作系统需要中断.异常和系统调用: 在计算机运行时,内核是被信任的第三方 只有内核才可以执行特权指令 方便应用程序 接下来我们先简单了解一下三者的概念: 系统调用(system call)         应用程序主动向操作系统发出的服务请求 异常(exception)         非法指令或者其他原因导致当前指令执行失败   (如:内存出错)后的处理请求 中断(hardware interrupt)         来自硬件设备的处理请求 下面我们先看一下这张图(内核

中断和异常的处理

本文为<x86汇编语言:从实模式到保护模式> 第17章笔记 中断和异常 中断和异常概述 中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换. 1. 中断(Interrupt) 中断包括硬件中断和软中断. 硬件中断是由外围硬件设备发出的中断信号引发的, 以请