2.2 操作系统 中断与异常
一、中断发生的过程和处理流程
硬件触发中断——中断请求处理——中断处理程序调用——中断处理——恢复执行
硬件触发中断:分 内部中断(如除零错误)和 外部中断。
中断请求处理:CPU 根据优先级判断是否响应中断,如果优先级高,CPU会暂停当前任务执行。
中断程序调用:根据中断号从中断向量表找到中断处理程序的入口。
中断处理:执行中断处理程序。
恢复执行:中断处理完毕后,CPU会恢复到被中断的程序执行状态。
二、中断为什么要尽快执行完毕
首先,中断一般是发生了一些关键事件,需要得到快速响应;其次,被中断的程序处于暂停状态,并且关闭了进程调度,会影响系统的响应性能和实时性;最后,中断处理程序如果执行时间过长,可能会导致设备状态超时或失效。
三、中断与异常有何区别?
中断是指外部硬件产生一个电信号从 CPU 的中断引脚进入,打断 CPU 的执行。
异常是指软件运行过程中发生了一些必须作出处理的事件,CPU 自动产生一个陷入来打断 CPU 的执行。
四、硬中断与软中断是什么?有什么区别?
1、硬中断
硬件产生,比如:键盘、网卡、磁盘、时钟。每个设备都有自己的 IRQ,硬中断可以直接中断 CPU(通常只会中断一颗 CPU)。
时钟中断,内核会将当前进程挂起,让其他进程运行。其目的是为了让调度器可以调度多个任务。
2、软中断
仅由当前正在运行的进程产生的,由软件触发的中断机制,由软件主动发起。
区别:
软中断由软件产生,硬中断由硬件产生;
软中断的中断号由指令直接给出,硬中断的中断号由中断控制器提供;
硬中断可屏蔽,软中断不可屏蔽;
硬中断处理程序,称为上半部,软中断处理硬中断未完成的工作,称为下半部。
五、中断为什么区
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
一名985硕,在25年秋招中斩获多个C++/嵌入式开发Offer。本专栏将分享我的面经,涵盖C/C++、操作系统、计算机网络、ARM体系与架构、Linux应用/驱动开发、Qt、通信协议及开发工具链等核心内容。