ybdesire 发表于 2011-12-6 11:44:15

执行一条长指令周期的指令时来了一个中断,怎么办?

执行指令的过程中,CPU收到一个中断信号,如果正在执行的这条指令周期很长,假设该指令执行完后,中断信号可能会丢失
那CPU会停止执行了一半的指令而跳转去执行IRQ程序吗?

gold 发表于 2011-12-6 11:59:18

不会的啦,中断信号会置中断标志的。要是这样的话,OS基本上没办法运行了,因为它总是在频繁的开关中断

kvs112219 发表于 2011-12-6 12:02:08

中断信号消失,CPU会记住并Pending这个中断,指令完成后,则执行最高优先级的Pended中断.

june2008 发表于 2011-12-6 12:42:39

中断信号怎么会丢失呢,不会的。

hlinux 发表于 2011-12-6 13:54:34

这是什么型号CPU,能把中断信号丢失的还没见过

ybdesire 发表于 2011-12-6 14:13:54

谢谢,这只是我假想的一种可能存在的逻辑情况

fbp117 发表于 2011-12-6 16:11:35

它会等你的

leavic 发表于 2011-12-6 16:16:18

指令不可能被打断,函数会。

eduhf_123 发表于 2011-12-6 16:36:46

如果是电平触发的中断,那么需要改成边沿触发的。

其他情况基本都能保持住中断标志的。

Cliff 发表于 2011-12-6 16:52:29

回复【5楼】ybdesire
谢谢,这只是我假想的一种可能存在的逻辑情况
-----------------------------------------------------------------------

就算“可能存在”,也是可以避免的。
用 Req / Ack 握手方式,一个置中断标记,一个清中断标记,就不会出现你说的情况。
具体CPU是如何处理的,取决于不同的CPU。

jmliu61 发表于 2011-12-13 19:27:10

长周期指令是不会被中断的。中断也不会丢失。
页: [1]
查看完整版本: 执行一条长指令周期的指令时来了一个中断,怎么办?