文章目录
一.进程调度的时机
1.当前运行进程主动放弃处理机
- 进程正常终止
- 运行过程中发生异常而终止
- 进程主动请求阻塞(如等待I/O)
2.当前运行进程被动放弃处理机
- 分给进程的时间片用完
- 有更紧急的事需要处理(如I/O中断)
- 有更高优先级的进程进入就绪队列
二.不能进行进程调度与切换的情况
- 在处理中断的过程中
- 进程在操作系统内核程序临界区中
- 在原子操作过程中(原语)
三.普通临界区和操作系统内核程序临界区
-
临界资源:在一个时间段只允许一个进程访问的资源,各进程需要互斥的访问临界资源。
-
临界区:访问临界资源的那段代码
-
内核程序临界区:一般用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)
-
当一个程序处于内核程序临界区并且要访问就绪队列,在访问之前,他会将就绪队列上锁。由于进程调度相关程序也需要访问就绪队列,此时如果要进行进程调度的话,因为就绪队列是上锁的,所以就无法进行进程调度。
-
普通临界区访问的临界资源不会直接影响操作系统内核的管理工作,因此在访问普通临界区时可以进行调度与切换。
四.进程调度的方式
- 非剥夺调度方式:又称非抢占方式,即只允许进程主动放弃处理机。在运行过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或者主动进入堵塞态。
- 剥夺调度方式:又称抢占方式,当一个进程正在运行时,如果有一个更重要的或更紧迫的进程需要使用处理机,即暂停正在执行的进程,将处理机分配给那个更紧迫的进程。
五.进程切换与过程
- 狭义的进程调度:从就绪队列选中一个要运行的进程。(这个进程可以是刚刚暂停的,也可能是另外一个进程,后者则需要进程切换)
- 进程切换:一个进程让出处理机,另一个进程占用处理机的过程
- 广义的进程调度:包含选择一个进程 和 进程切换
- 进程切换的过程:
1.对原来运行进程各种数据的保存
2.对新的进程各种数据的恢复 - 进程切换是有代价的,过于频繁的进行进程切换,会使整个系统的效率减低。
六.小结
- 进程在操作系统内核程序临界区中,不能进行进程切换
- 进程在普通临界区中,可以进行进程切换
- 进程切换是有代价的