问答题 有5个中断源D1、D2、D3、D4和D5,它们的中断优先级从高到低分别是1级、2级、3级、4级和5级。这些中断源的中断优先级,正常情况下的中断屏蔽码和改变后的中断屏蔽码如下表所示。每个中断源有5位中断屏蔽码,“0”表示该中断开放,“1”表示该中断被屏蔽。
{{B}}5个中断源的中断优先级和屏蔽码{{/B}}
中断源名称 中断优先级 正常中断屏蔽码 改变后的中断屏蔽码
D1 D2 D3 D4 D5 D1 D2 D3 D4 D5
D1 1 1 1 1 1 1 1 0 0 0 0
D2 2 0 1 1 1 1 0 1 0 0 0
D3 3 0 0 1 1 1 1 0 1 0 0
D4 4 0 0 0 1 1 1 1 0 1 1
D5 5 0 0 0 0 1 1 1 1 0 1
问答题 当使用正常的中断屏蔽码时,处理机响应各中断源的中断服务请求的顺序是什么?实际的中断处理顺序是什么?
【正确答案】中断优先级包含响应优先级和处理优先级,没有特殊指明即为响应优先级,即处理机响应各中断源的中断服务请求的顺序。因此,处理机响应各中断源的中断服务请求的顺序为D1、D2、D3、D4、D5。 实际的中断处理顺序即为处理优先级,在没有采用屏蔽技术时,响应优先级就是处理优先级。根据正常的中断屏蔽码,由于响应中断源D1的中断屏蔽码为全1,即屏蔽了其他所有的中断源,处理完D1之后,响应D2。由于其中断屏蔽码可知它只能被中断源D1打断,所以其处理优先级为2,后面的以此类推。最后可得,实际的中断处理顺序为D1、D2、D3、D4、D5。
【答案解析】
问答题 当使用改变后的中断屏蔽码时,处理机响应各中断源的中断服务请求的顺序是什么?实际的中断处理顺序是什么?
【正确答案】因为中断屏蔽码不改变中断的响应优先级,所以使用改变后的中断屏蔽码时,处理机响应各中断源的中断服务请求的顺序仍为D1、D2、D3、D4、D5;处理优先级的分析如下:首先处理机响应D1,它可以被D2打断,因而转去响应D2,D2又被D3打断,转去响应D3,D3又被D4打断,而D5不能打断D4,所以D4中断服务程序可以全部执行完。然后响应D5,D5后面没有中断源,所以此时可以执行完D5的中断服务程序,之后返回到D3未执行完的中断服务程序处,执行完D3的中断服务程序,然后再返回到D2未执行完的中断服务程序处,执行完D2的中断服务程序,最后执行完Dl的中断服务程序,返回主程序。实际的中断处理顺序为D4、D5、D3、D2、D1。
【答案解析】
问答题 当D1、D2、D3、D4、D5这5个中断源同时发出中断请求时(采用改变后的中断屏蔽码),试画出处理机响应中断源的中断服务请求和实际运行中断服务过程的示意图。
【正确答案】根据上题的分析可画出处理机响应中断源的中断服务请求和实际运行中断服务过程的示意图,如图1所示。
[*]
图1 处理机响应中断源中的中断服务请求和实际运行中断服务过程的示意图
【答案解析】
问答题 假设从处理机响应中断源的中断服务请求开始,到运行中断服务程序中第一次开中断所用的时间为1个单位时间,处理机运行中断服务程序的其他部分所用的时间为4个单位时间。当处理机在执行主程序时,中断源D3、D4和D5同时发出中断服务请求,经过3个单位时间后,中断源D1和D2同时发出中断服务请求。采用改变后的中断屏蔽码,画出处理机响应各中断源的中断服务请求和实际运行中断服务程序过程的示意图。
【正确答案】首先响应D3,D3被D4打断,响应D4并执行完D4的中断服务程序,之后相当于D1,D2,D5同时发出中断请求,因为D4处理完后立即返回D3,所以此时中断屏蔽寄存器的内容为D3的中断屏蔽码,由于D3可以被D2打断,所以响应。D2,D2被D1打断,响应D1,Dl又被D5打断,执行完D5的中断服务程序。然后再依次返回D1、D2、D3,最后返回主程序。由上面的分析可画出处理机响应各中断源的中断服务请求和实际运行中断服务程序过程的示意图如图2所示。这题目容易弄错的一点是:当处理完D4之后以为按响应优先级去响应D1,要注意的是D4处理完后立即返回D3,此时中断屏蔽寄存器的内容为D3的中断屏蔽码,而D3只能被D2打断,因此转去响应D2。
[*]
图2 处理机响应中断服务请求和实际运行中断服务过程的示意图
【答案解析】