当外部中断信号到来时,处理器会立即停止当前程序的执行,保存相关的上下文信息,切换到中断服务程序去处理中断,中断处理完后再恢复之前程序的执行。因为中断信号通常是来自外部设备,这种机制可以使CPU在处理多个IO设备的输入输出时,达到异步处理的目的。
某些情况下,中断处理程序会产生新的中断请求,这种情况下需要考虑中断嵌套的问题。为避免无限递归调用,中断嵌套必须被禁止或限制次数。具体操作可通过设置一个中断屏蔽计数器实现。
中断嵌套也是导致外部中断只执行一次的原因之一。当一个中断正在处理中,如果又发生了同一种中断,由于嵌套次数已经达到限制,该中断将被屏蔽,从而导致该中断后续不再被执行。
当外部设备发生中断请求时,处理器将读取中断请求寄存器和中断屏蔽寄存器的状态,判断是否允许该中断。如果允许该中断,则把中断请求信息写入中断请求寄存器,待CPU空闲后进入中断服务处理程序。如果在CPU执行中断服务程序时再次有新的中断请求,由于中断处理程序可能已经保存了该状态,处理器不会再次处理这个请求,这样可能导致某些中断请求丢失。
中断优先级是指当多个中断信号同时到达时,处理器按什么优先级顺序处理中断。通常,程序员需要为每个中断定义一个优先级,以确保高优先级的中断先得到处理。如果两个中断的优先级相同,那么处理器将优先处理先到达的中断信号。
在设置中断优先级时,要考虑各种中断的紧急程度,把高优先级中断设置为那些需要尽快响应的中断,从而保证系统的正确性和稳定性。当硬件中断控制器接收到多个中断请求信号时,会按照中断优先级进行排序,然后响应优先级最高的中断请求,其他中断请求将变为挂起状态,等待当前中断响应完毕后再次被处理。