美文网首页
中断和异常概念详解

中断和异常概念详解

作者: 光剑书架上的书 | 来源:发表于2021-08-05 16:06 被阅读0次

1.什么是中断?

中断

CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。

中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。

中断通常分为同步(synchronous)中断和异步(asynchronous)中断:

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

异步中断是由其他硬件设备依照CPU时钟信号随机产生的。中断是由间隔定时器和I/O设备产生的,例如,用户的一次按键会引起一个中断。

异常

在Intel微处理器手册中,把同步和异步中断分别称为异常(exception)和中断(interrupt)。我们也采用这种分类,当然有时我们也用术语“中断信号”指这两种类型。

异常是由程序的错误产生的,或是由内核必须处理的异常条件产生的。第一种情况下,内核通过发送一个每个Unix程序员都熟悉的信号来处理异常。第二种情况下,内核执行恢复异常所需要的所有步骤,例如缺页,或对内核服务的一个请求(通过一条 int 或 sysenter 指令)。

中断处理流程

CPU 响应中断并进行处理,通常经历以下过程:保存当前线程的栈信息、跳转中断服务程序运行、恢复被打断的线程栈继续运行。 如下图所示:

2.中断信号的作用

顾名思义,中断信号提供了一种特殊的方式,使处理器转而去运行正常控制流之外的代码。当一个中断信号达到时,CPU必须停止它当前正在做的事情,并且切换到一个新的活动。为了做到这一点,就要在内核态堆栈保存程序计数器的当前值(即eip和cs寄存器的内容),并把与中断类型相关的一个地址放进程序计数器。

有些事情会使你想起在前一章描述的上下文切换,这发生在内核用一个进程替换另一个进程时。但是,中断处理与进程切换有一个明显的差异:由中断或异常处理程序执行的代码不是一个进程。更确切地说,它是一个内核控制路径,代表中断发生时正在运行的进程执行。作为一个内核控制路径,中断处理程序比一个进程要“轻”(light)(中断的上下文很少,建立或终止中断处理需要的时间很少)。

3.中断和异常

Intel文档把中断和异常分为以下几类:

(1)中断:

可屏蔽中断(maskable interrupt

非屏蔽中断(nonmaskable interrupt

(2)异常:

处理器探测异常(processor-detected exception

当CPU执行指令探测到一个反常条件所产生的异常。可以进一步分为三组,这取决于CPU控制单元产生异常时保存在内核态堆栈eip寄存器中的值。

故障(fault):通常可以纠正;

陷阱(trap):在陷阱指令执行后立刻报告;

异常终止(abort):发生了一个严重的错误;

编程异常

在编程者发出请求时发生。编程异常通常也叫做软中断(software interrupt),这样的异常由两种常用的用途:执行系统调用及给调试程序通报一个特定的事件。

每个中断和异常是由0~255之间的一个数来标识。Intel把这个8位的无符号整数叫做一个向量(vector)。非屏蔽中断的向量和异常的向量是固定的,而可屏蔽中断的向量可以通过对中断控制器的编程来改变。

参考资料:

《深入理解LINUX内核》

相关文章

  • 中断和异常概念详解

    1.什么是中断? 中断 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序...

  • Java 基础 39 异常

    1.1异常的概述和继承体系 1.1.1 异常详解 异常的概念:异常:就是程序出现了不正常的情况。例如:Arithm...

  • Linux中断中能否sleep

    中断、软中断、硬件中断、异常、同步中断、异步中断,这几个概念非常容易混淆,这里对本文使用的中断、软中断、softi...

  • ARM System Developer's Guide 学习笔

    概念: 软件中断指令software interrupt instruction (SWI)造成软件中断异常(ex...

  • 中断和异常

    中断(英语:Interrupt)是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称...

  • 中断和异常

    中断和异常 早期计算机,各个程序只能串行的执行,一个程序放入计算机移入内存之后,要等待IO设备输出结束,这个程序才...

  • 中断和异常

    中断和异常.md 中断和异常的定义 中断(interrupt)指在程序执行过程中遇到急需处理的事件时,暂时中止现行...

  • 关于异常

    参考资料:JVM如何处理异常深入详解 一、Java 异常的概念和分类 所有的异常都派生于Throwable类的一个...

  • 异常

    7.1异常基本概念异常是导致程序中断的运行一种指令流,所有异常均以类和对象的形式存在,可自定义异常类,处理抛出异常...

  • 04 中断和异常

    1.中断的概念和作用 中断的诞生:为了实现多道程序并发执行而引入的一种技术。 当中断发生时,就意味着需要操作系统介...

网友评论

      本文标题:中断和异常概念详解

      本文链接:https://www.haomeiwen.com/subject/qwbmvltx.html