中断和异常的概念

简介: 中断Interruption异常Exception在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。

在操作系统中引入核心态用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。但系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,实现从用户态进入核心态。在实际操作系统中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常

当中断或异常发生时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的(例如,用一个特殊寄存器的一位来表示CPU所处的工作状态,0表示核心态,1表示用户态。若要进入核心态,只需将该位置0即可)。

中断是操作系统中非常重要的一个概念,对一个运行在计算机上的实用操作系统而言,缺少了中断机制,将是不可想象的。

中断(Interruption)

中断(Interruption),也称外中断,指来自CPU执行指令以外的事件的发生,如:

  • 设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
  • 时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。

这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。

异常(Exception)

异常(Exception),也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件,如:

程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。

对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。关于内中断和外中断的联系与区别如图1-2所示。

这里写图片描述

图1-2 内中断和外中断的联系与区别

Wu_Being博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!
《中断和异常的概念》:
http://blog.csdn.net/u014134180/article/details/78418428

Wu_Being 吴兵博客接受赞助费二维码

如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。

目录
相关文章
|
6月前
|
Linux
中断系列第二篇:中断的使用场景?
中断系列第二篇:中断的使用场景?
138 0
|
1月前
|
监控 Java
捕获线程执行异常的多种方法
【10月更文挑战第15天】捕获线程执行异常的方法多种多样,每种方法都有其特点和适用场景。在实际开发中,需要根据具体情况选择合适的方法或结合多种方法来实现全面有效的线程异常捕获。这有助于提高程序的健壮性和稳定性,减少因线程异常带来的潜在风险。
22 1
中断处理机制解析
【10月更文挑战第5天】中断处理需定义中断处理函数`irq_handler_t`,参数包括中断信号`irq`和通用指针`dev_id`。返回值`IRQ_NONE`表示非本设备中断,`IRQ_HANDLED`表示已处理,`IRQ_WAKE_THREAD`表示需唤醒等待进程。处理程序常分上下半部,关键部分在中断处理函数中完成,延迟部分通过工作队列处理。注册中断处理函数需调用`request_irq`,参数包括中断信号、处理函数、标志位、设备名和通用指针。
|
5月前
|
Linux 调度 虚拟化
minos 2.2 中断虚拟化——异常处理流程
上一节讲述了 ARMv8 异常模型,很多理论,这一节来看一个实际的例子,来看看 minos 中的异常处理流程
66 5
minos 2.2 中断虚拟化——异常处理流程
|
前端开发 rax Linux
【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
133 0
|
6月前
|
算法 Unix Linux
Linux进程与信号:正常与异常的退出机制探索
Linux进程与信号:正常与异常的退出机制探索
508 1
|
6月前
|
算法 Linux
易懂的方式讲解ARM中断原理以及中断嵌套方法
易懂的方式讲解ARM中断原理以及中断嵌套方法
301 0
|
6月前
|
Java
Java异常处理:解释一下异常的传播机制。
Java异常处理:解释一下异常的传播机制。
113 1
|
存储 Linux 程序员
中断与异常简介与分析
中断与异常简介与分析
87 0
|
存储 Java
高并发编程-捕获线程运行时的异常 + 获取调用链
高并发编程-捕获线程运行时的异常 + 获取调用链
98 0