|
|
例4.2:某处理机共有4个中断源D1、D2、D3和D4,它们在串行排队链中的硬件中断优先级从低到高分别为1级、2级、3级和4级。处理机本身的优先级最低,为0级。在中断源D1、D2、D3、D4的处理机状态字中,程序员为它们设置的优先级分别为4级、3级、2级、1级。 当处理机运行主程序时,处理机的优先级最低,为0级。4个中断源同时请求中断服务,通过硬件排队器选择其中硬件中断优先级最高的中断源D4,处理机首先响应它的服务请求,并且把处理机的优先级改变为1级。这时,由于D1、D2、D3三个中断源仍然在请求中断服务,而且,它们的硬件中断优先级都比当前处理机的优先级高,因此,处理机要响应其中硬件中断优先级最高的中断源D3的中断请求,并且把处理机的优先级改变为2级。这时,还剩下D1和D2两个中断源在请求中断服务,它们的硬件中断优先级都不高于当前处理机的优先级,因此,中断源D3的中断服务程序能够一直执行完成。当处理机从中断源D3的中断服务程序返回到中断源D4的中断服务程序中时,处理机的中断优先级又变成了1级。这时,还没有得到处理机响应的两个中断源D1和D2中,只有中断源D2的硬件中断优先级高于当前处理机的中断优先级。因此,处理机将立即响应中断源D2的中断服务请求,又把处理机的优先级改变为3级。由于剩下的中断源D1的硬件中断优先级低于当前处理机的优先级,处理机将把中断源D2的中断服务程序全部执行完毕后才会返回到中断源D4的中断服务程序中。这时,最后一个没有被处理机响应的中断源D1的硬件中断优先级与当前处理机的优先级相同,要等待处理机把中断源D4的中断服务程序全部执行完成,并返回到主程序之后,中断源D1的的中断服务请求才能得到处理机的响应。由于中断源D1是最后一个被处理机响应,并得到服务的中断源,因此,它的中断服务程序能够一直执行完成。在中断源D1的中断服务程序全部执行完成,处理机返回来执行主程序时,全部中断源的中断服务请求也就处理完成了。
|