进程调度
#进程调度的时机
调度的概念里的低级调度,就是按照某种算法从就绪队列中选择一个进程为其分配处理机
#需要进行进程调度的情况:
当进程主动放弃处理机:1.进程正常终止 2.运行过程中发生异常终止 3.进程主动请求阻塞
当进程被动放弃处理机:1.分配给进程的时间片用完 2.更紧急的事要处理 3.优先级更高的进程进入就绪队列
#不能进行进程调度的情况:
1.在处理中断的过程中
2.进程在操作系统内核程序临界区中
3.在原子操作过程中(执行原语)
#进程调度的方式
#非剥夺调度方式
又称非抢占方式,只允许进程主动放弃处理机,即使更紧迫的任务到达,当前进程依然会继续使用处理机,直到进程主动终止或者要求进入阻塞
优点:实现简单,系统开销小,适合早期批处理系统
#剥夺调度方式
当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停当前进程,并将处理机分配给更重要更紧迫的那个进程。
优点:可以优先处理更紧急的进程,也可以实现让进程按照时间片轮流执行的功能,适合分时操作系统,实时操作系统
#进程的切换与过程
#狭义进程调度
指的是从就绪队列中选择一个要运行的进程(该进程可以是刚刚被暂停的进程,也可以是另一个进程,后一种情况就需要进程切换)
#进程切换
指的是一个进程让出处理机,由另一个进程占用处理机的过程
进程切换的过程主要完成了:
1.对原来运行进程的各种数据保存
2.对新进程的各种数据恢复(如:程序计数器,数据状态字,各种数据寄存器等)
进程切换是*有代价的*,因此过于频繁地进行进程调度,切换,必然会导致整个系统的效率降低。
#广义进程调度
包含了*选择一个进程*和*进程切换*两个步骤