执行一条长指令周期的指令时来了一个中断,怎么办?
执行指令的过程中,CPU收到一个中断信号,如果正在执行的这条指令周期很长,假设该指令执行完后,中断信号可能会丢失那CPU会停止执行了一半的指令而跳转去执行IRQ程序吗? 不会的啦,中断信号会置中断标志的。要是这样的话,OS基本上没办法运行了,因为它总是在频繁的开关中断 中断信号消失,CPU会记住并Pending这个中断,指令完成后,则执行最高优先级的Pended中断. 中断信号怎么会丢失呢,不会的。 这是什么型号CPU,能把中断信号丢失的还没见过 谢谢,这只是我假想的一种可能存在的逻辑情况 它会等你的 指令不可能被打断,函数会。 如果是电平触发的中断,那么需要改成边沿触发的。
其他情况基本都能保持住中断标志的。 回复【5楼】ybdesire
谢谢,这只是我假想的一种可能存在的逻辑情况
-----------------------------------------------------------------------
就算“可能存在”,也是可以避免的。
用 Req / Ack 握手方式,一个置中断标记,一个清中断标记,就不会出现你说的情况。
具体CPU是如何处理的,取决于不同的CPU。 长周期指令是不会被中断的。中断也不会丢失。
页:
[1]