一、外部中断
狭义的中断,信号来源:
C
P
U
外部
{\color{red} CPU外部}
CPU外部,中断事件与当前执行指令无关
只有在CPU中断允许状态时才会响应外部中断请求
比如:
I/O设备发出I/O中断
外部信号中断(如用户执行键盘输入)
定时器引起的时钟中断(如时间片中断)
网络数据包到达
1.外设请求
如:I/O操作完成发出的中断信号、时钟中断(用于计时)
2.人工干预
如:用户强行终止一个进程
二、内部中断
信号来源:
C
P
U
内部
{\color{red} CPU内部}
CPU内部,中断事件由当前执行指令引发
内中断时不可被屏蔽的,一旦出现,立即处理
比如:
地址非法,
校验出错,
访存时缺页(由当前执行的指令引发的)
存取访问控制错,
算术操作溢出
数据格式非法
除数为0
非法指令
用户程序执行特权指令
用户态切换到内核态
Cache-主存:Cache的缺失调度是由硬件自动完成的
虚拟存储器:缺页的处理是由硬件和操作系统一起完成的
1.自愿中断
又叫指令中断,如系统调用时使用访管指令(又叫陷入指令,trap指令)
自陷是对中断的一种巧用,是一种主动机制,它是一种预先安排的异常事件,就类似于我们调试程序的断点。
2.强迫中断
①硬件故障
如缺页
②软件中断
如整数除0
三、中断响应过程
第一步,中断请求。是指中断源向CPU发出请求中断的要求
第二步,中断判优。当有多个中断源发出请求时,需要通过适当的办法决定先处理哪个中断请求
第三步,中断响应。指CPU终止现行程序转去执行中断服务程序的过程
第四步,中断处理。指CPU执行中断服务程序
第五步,中断返回。执行完中断服务程序后,返回到被中断的程序
1.单中断
①关中断
②保存PC、PSW
③根据中断向量引出对应的中断服务程序(通用寄存器的保护由中断服务程序完成)
④开中断(终端服务程序完成时)
2.多重中断
在执行中断的过程中,如果有新的中断请求到来,会暂停当前的中断服务程序,转而处理新的中断,执行中断服务程序时处于开中断
在多重中断中,优先级高的中断源有权中断优先级低的中断源;
通过改变中断屏蔽字可以改变中断优先级;
取址周期——间址周期——执行周期——中断周期
在一条指令执行结束后响应中断,有利于保存和恢复现场
中断请求期间CPU处于开中断,可以继续相应新的中断
四、真题嗅探
【例】(2020)与中断相关的操作,由操作系统的完成的是
1.保存被中断程序的终端点 —— 硬件完成
2.提供中断服务 —— 操作系统
3.初始化中断向量表 —— 存在内存中,开机初始化,由操作系统完成
4.保存中断屏蔽字 —— 多重中断时,由操作系统完成