某计算机有5个中断源,其中断响应优先级是1>2>3>4>5,在中断处理过程中拟将优先级动态调整为1>4>5>2>3,假设此中断系统中的中断允许触发器始终为1。 ① 设计各个中断源的中断服务程序中设置的新屏蔽字(1为屏蔽,0为开放); ② 在运行CPU主程序时,同时出现中断源2和4的请求,并且在执行2服务程序中, 1、3和5同时发生中断请求,描述CPU执行各中断服务程序的轨迹图。
时间: 2024-04-02 14:31:05 浏览: 15
① 各中断源的新屏蔽字如下:
中断源1的新屏蔽字为 11110
中断源2的新屏蔽字为 11111
中断源3的新屏蔽字为 00100
中断源4的新屏蔽字为 11111
中断源5的新屏蔽字为 00001
② CPU执行各中断服务程序的轨迹图如下:
1. 在执行CPU主程序时,同时出现中断源2和4的请求,由于中断响应优先级是1>2>3>4>5,因此CPU会先响应中断源2的请求,暂停原有程序的执行,转去执行中断服务程序2。在此过程中,由于中断允许触发器始终为1,因此其他中断源的请求不会被响应。
2. 在执行中断服务程序2时,1、3和5同时发生中断请求,但由于此时中断源1的新屏蔽字为11110,即被屏蔽掉了,因此不会被响应;中断源3的新屏蔽字为00100,即未被屏蔽,但在中断响应优先级中排名低于中断源4,因此不会被响应;中断源5的新屏蔽字为00001,即未被屏蔽,但在中断响应优先级中排名低于中断源4,因此同样不会被响应。
3. 当中断服务程序2执行完毕后,CPU会根据中断优先级动态调整为1>4>5>2>3,因此接下来会响应中断源4的请求,暂停中断服务程序2的执行,转去执行中断服务程序4。在此过程中,由于中断允许触发器始终为1,其他中断源的请求同样不会被响应。
4. 在执行中断服务程序4时,没有其他中断源的请求,该服务程序执行完毕后,CPU返回到原有程序中继续执行。
相关问题
假定某中断系统有四个中断源,其响应优先级为1>2>3>4。假定在执行用户程序时同时发生1、3、4级中断请求,执行3级中断服务程序时发生2级中断请求。请写出处理优先级为1>4>3>2时各中断的屏蔽字及CPU完成中断处理的过程。
处理优先级为1>4>3>2时,各中断的屏蔽字如下:
中断1:屏蔽字为1110,即屏蔽2、3、4级中断请求。
中断2:屏蔽字为1101,即屏蔽3、4级中断请求。
中断3:屏蔽字为1010,即屏蔽2、4级中断请求。
中断4:屏蔽字为0001,即只屏蔽自身的中断请求。
CPU完成中断处理的过程如下:
1. 当发生中断1请求时,CPU检测到中断标志位为1,暂停正在执行的用户程序,保存现场。CPU根据中断1的屏蔽字判断是否允许响应中断1。因为中断1的屏蔽字为1110,即屏蔽2、3、4级中断请求,所以CPU允许响应中断1。CPU执行中断1的服务程序,处理完毕后清除中断标志位,恢复现场,继续执行用户程序。
2. 当发生中断3请求时,CPU检测到中断标志位为1,暂停正在执行的用户程序,保存现场。CPU根据中断3的屏蔽字判断是否允许响应中断3。因为中断3的屏蔽字为1010,即屏蔽2、4级中断请求,所以CPU允许响应中断3。CPU执行中断3的服务程序,在执行服务程序的过程中,发生了2级中断请求。CPU根据中断2的屏蔽字判断是否允许响应中断2。因为中断2的屏蔽字为1101,即屏蔽3、4级中断请求,所以CPU允许响应中断2。CPU保存中断3的现场,暂停中断3的服务程序,执行中断2的服务程序。处理完毕后,CPU恢复中断3的现场,继续执行中断3的服务程序。处理完毕后,清除中断标志位,恢复现场,继续执行用户程序。
3. 当发生中断4请求时,CPU检测到中断标志位为1,暂停正在执行的用户程序,保存现场。CPU根据中断4的屏蔽字判断是否允许响应中断4。因为中断4的屏蔽字为0001,即只屏蔽自身的中断请求,所以CPU允许响应中断4。CPU执行中断4的服务程序,处理完毕后清除中断标志位,恢复现场,继续执行用户程序。
实现 8259 中断嵌套。响应int6和int7两个中断源(中断优先级int6>int7) 具体要求:
实现 8259 中断嵌套需要进行一些设置和编程。首先,我们需要设置两个可屏蔽中断(INT)线对应的中断向量号和中断类型。这里,我们将int6对应的中断向量号设置为0x20,中断类型为从可屏蔽中断(INTR)更新IS发出INTA并将屏蔽位(Single EOI,SEOI)清零,将int7对应的中断向量号设置为0x21,中断类型为从可屏蔽中断(INTR)不更新IS发出INTA并将屏蔽位(Single EOI,SEOI)清零。设置完成后,我们将int6和int7的中断使能标志设置为1,即开启对应的中断。
当int6和int7两个中断源同时触发时,由于int6的中断优先级比int7高,所以系统首先响应int6中断。当int6中断处理程序执行完毕后,它会发送一个EOI命令(End Of Interrupt)给8259,告知它int6中断已经处理完毕。此时,8259会将int7对应的中断置为非屏蔽状态,并且发出对应的中断请求(INTA)信号,系统接着会响应int7中断。
需要注意的是,中断嵌套的实现还需要编写对应的中断处理程序,以处理int6和int7中断的具体内容。此外,由于8259芯片支持级联,如果要实现更多中断源的嵌套,还需要进行更多的设置和编程。
总结起来,实现8259中断嵌套需要设置int6和int7的中断向量号和中断类型,将对应的中断使能标志设置为1。当int6中断触发时,系统首先响应其中断处理程序,处理完毕后再响应int7中断处理程序。通过适当的设置和编程,可以实现中断的嵌套响应,以满足中断优先级的要求。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)