目录
进程调度时机
补充知识
进程调度的方式
非剥夺调度方式
剥夺调度方式
进程的切换与过程
本节思维导图
进程调度时机
进程调度(低级调度),即按照某种算法从就绪队列中选择一个进程为其分配处理机。
共有两种需要进行进程调度与切换的情况:
- 当前运行的进程主动放弃处理机,比如:进程正常终止、进程主动请求阻塞等
- 当前运行的进程被动放弃处理机,比如:分给进程的时间片用完、有更紧急的事需要处理等
共有三种不能进行进程调度与切换的情况:
- 在处理中断过程中(中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换)
- 进程在操作系统内核程序临界区中)(进程在普通临界区中是可以进行调度、切换的)
- 在原子操作过程中(原语)(原子操作不可中断,要一气呵成)
注意事项:
1、进程在操作系统内核程序临界区中不能进行调度与切换
2、进程处于临界区不等于处于内核程序临界区
补充知识
临界资源:一个时间段内只允许一个进程使用的资源,各进程需要互斥地访问临界资源
临界区:访问临界资源地那段代码
内核程序临界区一般是用来访问某种内核数据结构地(比如进程地就绪队列)
实例:当进程处于内核程序临界区,且该临界区是要用来访问就绪队列时,在访问时会将该就绪队列(临界资源)上锁,当进程还没有退出内核程序临界区时,该队列就不会解锁,如果此时进行进程调度,而进程调度需要访问就绪队列为队列中的进程分配资源,但此时就绪队列被锁住,故无法顺利的进行进程调度了
结论:内核程序临界区访问的临界资源(比如就绪队列)如果不尽快释放的话,极有可能影响到操作系统内核的其他管理工作,因此在访问内核程序临界区期间不能进行调度与切换
实例:当进程处于普通资源的临界区比如打印机资源时,在打印机完成打印之前,进程一直处于临界区内,临界资源不会解锁,但打印机又是慢速设备,此时如果一直不允许进程调度的话就会导致CPU一直空闲
结论: 普通临界区访问的临界资源不会直接影响操作系统内核的管理工作,因此在访问普通临界区时可以进行调度与切换
进程调度的方式
非剥夺调度方式
概念:又称非抢占方式,即只允许进程主动放弃处理机,在运行过程中即便有更紧迫的任务达到,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态
特点:实现简单,系统开销小但是无法即使处理紧急任务,适合于早期的批处理系统
剥夺调度方式
概念:又称抢占方式,当一个进程正在处理机上执行是,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的进程
特点:可以优先处理更紧急的进程,也可以实现让各进程按时间片轮流执行的功能(利用时钟中断)适合于分时操作系统、实时操作系统
进程的切换与过程
“侠义的进程调度”与“进程切换”的区别:
1、侠义的进程调度指的是从就绪队列中选中一个要运行的进程(该进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后者就需要进程切换)
2、广义的进程调度包含了选择一个进程和进程切换两个步骤:
进程切换的过程主要完成了:
对原来运行进程各种数据的保存
对新进程各种数据的恢复
注意事项:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少
本节思维导图
~over~