维基百科定义:
在计算机领域,抢占是指在不需要进程配合的情况下,暂时中断正在进行的计算机系统任务,并打算在以后恢复该任务。
其他来源的定义:
[...] 抢占是指强制从一个进程中取回处理器,并将其分配给另一个进程。[《操作系统(自助版1.1)》,西布桑卡·哈尔达]
程序的抢占发生在执行过程中出现中断并且调度程序选择了其他程序来执行。[《基于概念的操作系统,第2版》,D. M. Dhamdhere]
因此,我的理解是,如果进程被中断(通过硬件中断,即I/O中断或定时器中断),且在处理中断后调用的调度程序根据CPU调度算法选择了另一个进程来运行,则我们有进程抢占。如果调度程序选择了中断的进程,则没有进程抢占(中断不一定会导致抢占)。
但我找到了许多其他定义抢占的来源:
抢占是指从程序强制释放CPU。[《基于概念的操作系统,第2版》,D. M. Dhamdhere]
可以看出,同一本书报告了两种不同的抢占定义。在后者中,没有提到CPU必须分配给另一个进程。根据这个定义,抢占只是“中断”的另一个名称。当硬件中断发生时,进程会被中断(从“运行”状态切换到“就绪”状态)或被抢占。
所以我的问题是:两种定义哪一个是正确的?我很困惑。
在计算机领域,抢占是指在不需要进程配合的情况下,暂时中断正在进行的计算机系统任务,并打算在以后恢复该任务。
其他来源的定义:
[...] 抢占是指强制从一个进程中取回处理器,并将其分配给另一个进程。[《操作系统(自助版1.1)》,西布桑卡·哈尔达]
程序的抢占发生在执行过程中出现中断并且调度程序选择了其他程序来执行。[《基于概念的操作系统,第2版》,D. M. Dhamdhere]
因此,我的理解是,如果进程被中断(通过硬件中断,即I/O中断或定时器中断),且在处理中断后调用的调度程序根据CPU调度算法选择了另一个进程来运行,则我们有进程抢占。如果调度程序选择了中断的进程,则没有进程抢占(中断不一定会导致抢占)。
但我找到了许多其他定义抢占的来源:
抢占是指从程序强制释放CPU。[《基于概念的操作系统,第2版》,D. M. Dhamdhere]
可以看出,同一本书报告了两种不同的抢占定义。在后者中,没有提到CPU必须分配给另一个进程。根据这个定义,抢占只是“中断”的另一个名称。当硬件中断发生时,进程会被中断(从“运行”状态切换到“就绪”状态)或被抢占。
所以我的问题是:两种定义哪一个是正确的?我很困惑。