操作系统中断和异常

操作系统中的中断和异常是处理计算机系统中各类事件与错误的关键机制,对系统稳定运行和资源管理至关重要,具体如下:

中断(外中断)

  • 定义:由 CPU 执行指令外部的事件触发,是操作系统的主动中断机制。例如,设备完成 I/O 操作发出的中断、时钟中断(用于计时或任务调度)等。
  • 分类
    • 可屏蔽中断:通过 INTR 线发出请求,可通过屏蔽字灵活控制多重中断,如时钟中断、普通 I/O 中断。
    • 不可屏蔽中断:通过 NMI 线发出请求,用于紧急硬件故障(如电源掉电、存储器校验错),不可屏蔽,需立即处理。
  • 作用
    • 实现 CPU 与 I/O 设备并行工作,提升资源利用率。
    • 处理硬件故障、软件错误,支持人机交互、多道程序、分时操作、实时处理及应用程序与操作系统切换,还用于多处理器系统间的信息交互与任务切换。

异常(内中断)

  • 定义:由 CPU 执行指令内部的事件触发,是操作系统的被动中断机制,一旦出现必须立即处理,不可屏蔽。例如,非法操作码、地址越界、运算溢出、缺页等。
  • 分类
    • 故障(Fault):由指令执行引发(如非法操作码、缺页故障、除数为 0)。若内核能修复(如重新加载缺页),修复后将 CPU 使用权还给应用程序继续执行。
    • 自陷(Trap):预先安排的“异常”(如用户态调用内核程序的条件陷阱指令),是应用程序主动引发的。
    • 终止(Abort):由致命硬件故障(如控制器出错、存储器线路错误)引发,导致计算机无法继续执行,内核无法修复,通常直接终止应用程序。

中断与异常的区别

  • 触发来源:中断由 CPU 外部事件(如设备请求)触发;异常由 CPU 内部执行指令时的事件(如非法操作码)触发。
  • 处理时机:中断通常在当前指令执行完毕后响应(特殊情况除外);异常在指令执行过程中检测到问题时立即响应(如执行除法时发现除数为 0)。
  • 能否屏蔽:可屏蔽中断能通过设置屏蔽字暂时忽略;异常一般不可屏蔽(部分可恢复故障处理时的特殊情况除外),需及时处理。

处理过程

当 CPU 执行用户程序时:

  • 若检测到异常(如执行指令时缺页),或执行完指令后发现中断请求(如 I/O 设备完成),则打断当前程序。
  • 跳转至相应的中断或异常处理程序。若处理程序能解决问题(如修复缺页故障),则通过返回指令回到被打断的程序(异常可能回到原指令或下一条,中断通常回到下一条指令);若为致命错误(如终止类异常),则终止用户程序。

中断和异常机制确保操作系统能及时响应外部请求、处理内部错误,保障系统稳定运行、资源高效利用及多任务并发处理,是操作系统实现并发、共享、虚拟、异步等特性的基础。

操作系统I 文章被收录于专栏

操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的核心程序,是用户与硬件之间的桥梁,也是计算机系统的核心组成部分。

全部评论

相关推荐

05-12 22:45
已编辑
百度_安卓开发(实习员工)
55min问了40多个问题,底裤都被扒完了...问题:1,为什么使用flutter2,flutter的优点是什么3,mvvm架构的特点4,flutter和原生混合开发时,页面路由如何管理5,hashmap数据结构如何实现6,红黑树特点,插入和查找的时间复杂度7,hashmap为什么在链表长度为8时转化为红黑树8,内存泄漏的根本原因是什么?9,内存泄漏检测工具的原理了解吗?内存泄漏是如何被检测出来的?10,引用类型有哪些?11,Java中加锁有几种方式?12,审查代码时,如何发现潜在的死锁问题?13,死锁如何产生14,如何避免死锁15,tcp,udp是哪一层的协议,他们的区别是什么?16,tcp如何保证可靠性17,请求头中有哪些信息18,cookie的概念19,序列化和反序列化20,json和protobuf的区别21,数据加密有了解过吗?22,https相比较与http增加了哪些内容?23,https中的证书的概念24,效率比较高的排序算法,哪种算法时间最稳定?25,在实际项目中更轻倾向于自己实现排序算法,还是使用系统提供的方法26,java或c++中排序算法的源码有了解过吗,动态调节排序算法的策略?27,字符串查找算法,kmp时间复杂度,kmp思想是什么?28,计算机两数相乘溢出,如何解决?29,两个链表相交,如何求焦点30,安卓跨进程通信31,传统的操作系统,除了共享内存外,还有哪些跨进程通信的方法,使用场景相比于共享内存有哪些不同?32,view的绘制流程33,安卓绘制中的硬件加速的概念34,flutter是如何实现跨平台的35,flutter如何进行渲染,落实到平台上36,安卓消息机制37,flutter跟原生之间的消息通信38,服务器主动推送消息到客户端有了解吗?39,安卓本地存储,sqlite和sp的特点40,sp可以跨进程吗?如何操作?41,sp存储信息的两种方式,有什么区别?42,高德sdk,手机在室内时无法做卫星定位,如何发挥作用,误差是多少?43,网络请求框架现在普遍使用的是什么?dio是一种什么样的网络请求框架?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务