非抢占式

更新时间:2024-05-21 14:05

非抢占式(进程调度)是一种进程调度的方式,与其相对的是抢占式(进程调度)。

对比

抢占式与非抢占式的对比

非抢占式(Nonpreemptive)

让进程运行直到结束或阻塞的调度方式

容易实现

适合专用系统,不适合通用系统

抢占式(Preemptive)

允许将逻辑上可继续运行的在运行过程暂停的调度方式

可防止单一进程长时间独占CPU

系统开销大(降低途径:硬件实现进程切换,或扩充主存以贮存大部分程序)

区分

抢占式与非抢占式的区分

一个新创建的进程首先被放置在Ready队列,它一直等待执行的机会。一旦内核调度器将CPU分配给它开始执行时,有四种可能:

(1)进程主动发起I/O请求,但I/O设备还没有准备好,所以会发生I/O阻塞,进程进入Wait状态。

(2)内核分配给进程的时间片已经耗尽了,进程进入Ready状态,等待内核重新分配时间片后的执行机会。

(3)进程创建了子进程,并调用wait()等待子进程执行完毕,进程就重新进入Ready状态等待阻塞结束。

(4)I/O设备可以在任意时刻发生中断,CPU会停下当前正在执行的进程去处理中断,因此进程进入Ready状态。

区分一个多任务分时系统是抢占式的还是非抢占式的,则要看进程调度能否在(4)发生中断,CPU停止当前手头的工作(正在执行的进程),保存下当前工作的现场后,转入中断处理程序。如果在中断处理程序的执行中能否发生调度,即中断处理程序还没有执行完,又切换到其他进程。这里要说明的是,系统调用也是通过中断机制来实现的。所以,也就是说要看系统调用的执行过程中,或者中断处理程序的执行过程中能否发生调度(抢占)。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}