中断里的程序跑不完再次进入中断会发生什么
时间: 2023-08-31 15:32:58 浏览: 94
### 回答1:
当一个中断被触发并且正在执行中断处理程序时,如果在此期间另一个中断被触发,那么处理器将停止当前中断处理程序的执行,并转而执行新的中断处理程序。这个过程被称为中断嵌套。
如果一个中断里的程序跑不完再次进入中断,处理器会停止当前中断处理程序的执行,并转而执行新的中断处理程序。当新的中断处理程序执行完成后,处理器会返回到之前被中断的程序的执行点继续执行。由于中断处理程序的执行时间通常很短,所以通常情况下不会出现中断嵌套的情况。然而,如果程序在中断处理程序中执行的代码过多或者中断处理程序中又触发了新的中断,那么就可能出现中断嵌套的情况。在这种情况下,处理器会按照中断的优先级顺序处理多个中断,直到所有中断都被处理完毕后才会返回到之前被中断的程序的执行点继续执行。
### 回答2:
在中断处理程序运行过程中,如果程序没有完成而再次进入中断,将出现以下情况:
首先,中断处理程序会被中断请求重新激活,并从上一个中断处理程序停止的位置继续执行。因此,程序将会重新进入中断处理程序的代码段。
其次,由于中断是以优先级或者时间片轮转的方式进行处理的,中断处理程序的执行会打断正在执行的主程序。因此,如果中断处理程序再次被触发,主程序将被暂停,而中断处理程序将再次执行。
最后,由于中断处理程序的执行可能涉及修改相关的寄存器、标志位等寄存器值的操作,这些修改的值将在再次进入中断处理程序时被保留。因此,如果中断处理程序未能从先前的执行中恢复正常,而再次进入中断处理程序,可能会出现错误的执行结果或不可预测的行为。
总之,中断处理程序的再次进入将从中断处理程序上次停止的位置继续执行,并可能打断主程序的执行。因此,如果中断处理程序无法正确执行或再次触发,可能会导致不可预知的结果。