1.为什么说中断是进程切换的必要条件,但不是充分条件?
假如在时刻T1到时刻T2之间发生了进程切换,则在时刻T1与时刻T2之间一定执行了处理机调度程序,处理机调度程序是操作系统的一个底层模块,运行于管态,说明在T1到T2时刻之间,处理机状态曾有木态转换到管态。由于中断是系统由目态转换为管态的必要条件,所以在时刻T1与时刻T2之间一定发生过中断。也就是说,中断是进程切换的必要条件,然而,中断不是进程切换的充分条件。
比如说,一个进程执行一个系统调用命令将一个消息发送给另外一个进程,该命令的执行将通过中断进入操作系统,操作系统处理完消息发送的工作后可能返回原调用进程,此时中断并未导致进程切换;也可能选择一个新进程,此时中断导致了进程切换。通俗点来讲,就是进程切换一定发生过中断,但是中断不一定发生进程切换。
2.试分析中断与进程状态转换之间的关系。
进程状态转换是由内核控制的,如果一个进程的状态发生了改变,则在新旧状态之间一定发生了处理机状态由目态到管态的转换。而中断是处理机状态由目态转换到管态的必要条件,所以中断也是进程状态转换的必要条件。
3.中断发生时,旧的psw和pc为何需要压入系统栈?
保护断点。采用栈结构的原因是中断可能嵌套,此时能保证以与发生中断相反的次序返回上层中断处理程序或返回目态。在某些硬件系统中,没有采用栈结构,中断发生时现场信息被送到系统空间指定单元,每个现场保存单元与中断事件一一对应,这样的缺点是终端类型不能增加,相同类型的中断不能嵌套。
4.何为中断向量?用户能否修改中断向量的值?
当中断事件发生时,中断装置根据中断的类别自动地将中断处理程序所对应的PSW和PC送入程序状态字和程序计数器中,如此变转移到对应的中断处理程序中。这个转移类似向量的转移,因而PSW和PC被称为中断向量。
用户不能更改中断向量的值,因为修改中断向量是特权指令,普通用户程序不能执行特权指令。另外,如果用户能修改中断向量的值,那么用户就能破坏中断向量与中断处理程序之间的联系,并可能攻击系统。例如,将中断向量与一段病毒程序联系起来,使中断发生时便执行病毒程序,这将导致对计算机系统的破坏。
5. 中断向量的存储位置是否可由程序改变?为什么?中断向量的值是如何确定的?
中断向量的存储位置是由硬件确定的,不能由程序改变。中断发生后,中断装置按照中断类型到内存指定位置取出中断向量。例如,在IBM PC系统中,地址00000H到003FFH是中断向量空间。
操作系统的设计者根据中断处理程序的存储位置及运行环境确定其对应中断向量的值,系统启动时,由初始化程序将其值填入指定位置。
6.有人说,中断发生后硬件中断装置保证处理机进入管态,这种说法准确吗?说明理由
这种说法不准确。中断发生后,硬件中断装置负责引出中断处理程序,中断处理程序是否运行于管态取决于PSW中的处理机状态位,该位的值是操作系统初始化时设置的,只有在初始化程序正确设置该状态位的前提下,才能保证中断后进入管态。
<未完 待续>