维基百科说:
在计算中,抢占是暂时中断正在由计算机系统执行的任务的行为,不需要它的合作,并打算在以后恢复任务。
其他消息来源说:
[...] 抢占意味着强行从一个进程中取出处理器并将其分配给另一个进程。[操作系统 (Self Edition 1.1),Sibsankar Haldar ]
当程序执行期间出现中断并且调度程序选择其他一些程序执行时,就会发生程序抢占。[操作系统:基于概念的方法,2E,DM Dhamdhere ]
所以,我的理解是,如果进程被中断(通过硬件中断,即 I/O 中断或定时器中断)并且调度程序在处理中断后调用,选择另一个进程运行(根据CPU 调度算法)。如果调度程序选择了被中断的进程,我们就没有进程抢占(中断不一定会导致抢占)。
但我发现许多其他来源以下列方式定义抢占:
抢占是从程序中强制释放 CPU。[操作系统:基于概念的方法,2E,DM Dhamdhere ]
您可以看到同一本书报告了两种不同的抢占定义。在后者中没有提到必须将 CPU 分配给另一个进程。根据这个定义,抢占只是“中断”的另一个名称。当出现硬件中断时,进程被中断(它从“运行”状态切换到“就绪”状态)或被抢占。
所以我的问题是:这两个定义中哪一个是正确的?我很困惑。