时机
需要进行调度
主动放弃
进程正常终止
运行过程中发生异常而终止
进程主动请求阻塞
被动放弃
分给进程的时间片用完
有更紧急的事需要处理
有更高优先级的进程进入就绪队列
不能进行调度
处理中断时
处理中断时,很难进行进程调度
内核程序临界区时
当进程在内核程序临界区时不进行进程调度,这里区别与临界区,临界区指的是一段时间内只有一个线程访问的代码区,内核程序临界区常用来访问某种内核数据结构的,如就绪队列
原语
原子操作不可打断
进程调度方式
指的是当某个进程在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,拥有更高优先权的进程进入就绪队列,此时应该如何分配处理机
非剥夺
只允许进程主动放弃处理机,无法处理紧急任务
剥夺
若有更紧急进程需要使用处理结果,立即暂停当前进程,分配处理机,可优先处理更紧急进程,但可能出现饥饿
进程的切换和过程
分为狭义和广义
狭义的进程调度
从就绪队列中选中一个要运行的进程
进程切换
一个进程让出处理机,另一个进程占用处理机,保存原进程的各种数据,并对新进程的各种数据的恢复,过于频繁进行会降低系统效率
广义的进程调度
狭义+进程切换