#中断 vs 进程调度

如题所述

第1个回答  2022-07-12
        对于中断处理和进程调度的 抢占方式 (处理机调度),因为二者都有 打断 的性质,都是 抢占了CPU ,所以容易混淆。

        一、首先,中断处理是 外设 打断进程,比如一个进程在使用cpu,它的 某条指令到达了中断周期 ,那么,这个进程被中断。( 注意:是被外设中断而不是被一个进程打断。) 就算中断嵌套,嵌套的也是其他中断而不是进程。 中断服务程序 的执行并不视为进程执行。

        二、进程调度 抢占方式 则是 CPU中一个进程打断另一个执行中的进程 。(如处于改进程某条指令的取值、执行或者非中断处理的任何时候)

        所以可以这么认为——中断处理是进程A执行过程中发生的,且一旦发生无法切换为另一个进程B。

        因为 中断恢复 所需要的所有数据都放在被中断进程的内核栈中,如果发生切换就找不到之前的被中断进程了,使得中断无法恢复。

        注:中断处理保存PC(隐指令保存断点)和PSW、通用寄存器内容(保护现场)都是为了恢复被中断进程。

        进程切换保存PC、PSW是为了下次再轮到被切换进程执行时该从哪开始。从这点看,他们的任务是一致的。(都是保存在被 中断 / 切换进程的PCB 中)

        进程切换必定使用中断 ,这似乎与上文所述发生了矛盾,但实际上—— 上文所有中断说的都是外中断,而不是内中断 。

          因为 进程切换 必定发生在 内核态 (管态),而“中断”,严格地说——“内中断”是目态进入管态的必要不充分条件,所以可见进程切换必定借助内中断且必定发生了处理机模式切换。

(更确切的说这个内中断是软中断(指令产生的),是自愿的, 往往这个软中断就是访管指令 )

内中断:信号来源于CPU内部,与当前执行的指令有关。如整数除0。

外中断:信号来源于CPU外部,与当前执行的指令无关。(广义的中断)如用户强制结束一个进程。
相似回答