比方说有两个中断源A和B(使用同一个中断响应程序interrupt),A的抢占优先级大于B,然后他俩的响应优先级是一样的。现在B中断来了,系统跳interrupt去执行中断响应程序,进入响应程序后先判断一下看看是哪个中断源,再跳转到if(B)。中断B的响应程序执行过程中,A中断来了。因为A的优先级比较高,就发生了中断嵌套,系统再次进入interrupt,一开始同样是先判断一下是哪个中断源,而后就跳转到if(A)下面执行。A的响应程序执行完了,系统就跳到当时B正在执行的那个断点继续执行。最后结束中断响应过程。
而对于使用独立中断服务程序的中断源来说,嵌套是发生在不同的中断响应程序之间的。而使用相同中断响应程序的中断嵌套则是在同一个响应程序中完成,并且每一次进入响应程序都需要判断是哪一个中断源。而且在中断响应程序中,如果需要用到某些变量的话,每一个中断源的分支就应该给不同的变量。比如上面的B中断响应里有一个参数i,A中断响应里面也有i并且对i进行了操作,等A响应完,回到之前的B中断响应里面,i的值就被修改了。这样就有可能会出错了。
请问我上面描述的有没有什么问题,要是有问题的话请告诉我,谢谢
|