----------文章参考自王道论坛视频
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机;
需要进行调度与切换的情况
当前运行的进程主动放弃处理机
- 进程正常终止;
- 运动过程中发生异常而终止;
- 进程主动请求阻塞(如:等待 I / O )
当前运动的进程被动放弃处理机
- 分给进程的时间片用完
- 有更紧急的事要处理(如:I / O 中断)
- 有更高优先级的进程进入就绪队列
不能进行进程调度与切换的情况
- 在处理中断的过程中,中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换;
- 进程在操作系统内核程序临界区中;
- 在原子操作过程中(原语),原子操作不可中断;
临界资源:
一个时间段内只允许一个进程使用的资源,各进程互斥地访问临界资源;
临界区:
访问临界资源的代码;
内核程序临界区:
内核程序临界区一般是用来访问某种内核数据结构;
非剥夺调度方式
- 又称非抢占方式;
- 只允许进程主动放弃处理机;
- 在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入堵塞态;
剥夺调度方式
- 又称抢占方式;
- 当一个进程正在处理机上执行的时候,如果有一个更紧要的进程需要使用处理机,则立即停止正在执行的进程,将处理机分配给更紧要的进程;
非剥夺调度方式:
优点:
- 实现简单,系统开销量小;
缺点:
- 无法及时处理紧急任务;
适合于早期的批处理系统;
剥夺调度方式:
优点:
- 可以优先处理处理更紧急的进程;
- 也可实现让各进程按时间片轮流执行功能;
适合于分时操作、实时操作系统;
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程
- 对原来的进程各种数据的保存;
- 对新的进程各种数据的恢复;
进程切换是有代价的,如果过于频繁的进行进程的调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行的进程时间减少;