中断与中断系统
操作系统是中断驱动的!
Interrupt driven
处理机在运行过程中,出现了某一事件,必须暂停正在运行的程序,转去处理这个事件,然后再返回原来运行的程序,这一过程称为中断。
中断系统:
中断装置(硬件)
中断处理程序(软件)
发现并响应中断的硬件机构
识别中断源,当有多个中断源时,按紧迫程度排队;
保存现场;
引出中断处理程序。
中断源
中断寄存器
中断字:中断寄存器的内容
中断向量:中断处理程序的运行环境与入口地址PSW,PC,os中有一个中断向量表
强迫性中断
运行程序非预期的
时钟中断
IO中断
控制台中断
硬件故障中断
power failure
内存校验错
程序性中断
越界,越权
缺页,缺段
溢出,除0
非法指令
自愿性中断
运行程序期望的
系统调用
访管指令
系统调用
fd=open(fname,mode)
访管指令
准备参数:把参数放在寄存器和用户栈
svc(supervisorcall)访管 n
取返回值
中断嵌套与处理过程
中断优先级:
硬件规定的中断响应次序,依据:
紧迫程度;
处理时间。
中断屏蔽:
高优先级中断事件处理不受低优先级中断打扰;
程序调整中断响应次序。
在目态运行的时候,系统栈是空的
强迫性中断(嵌套从管态,非嵌套从目态)
关中断,保存现场,取中断字,分析中断原因
自愿性中断(非嵌套):
关中断
进一步保存现场到系统栈
取调用号
分析何种系统调用
终止:
收回资源,撤销PCB
选择上升进程
由PCB恢复上升进程现场
等待:保存下降进程现场到PCB
选择上升进程
由PCB恢复上升进程现场
处于核心态关于等待
何时等待?
处于核心态,无嵌套中断或有嵌套中断
等待几次?
可能多次
什么级别现场?
核心级别现场
等待时系统栈如何?
栈底是目态现场,然后是嵌套函数的返回点、参数、局部变量、返回值;
如有嵌套,接下来是核心现场,然后是嵌套函数的返回点、参数、局部变量、返回值;(可能多重)
用户级别的现场保存在系统栈中,核心级别现场保存在下降的PCB中