心目的
通过合理的调度策略,操作系统可以确保 CPU资源得到充分利用,避免CPU空闲,从而提高整体 系统的效率。
调度方式
指当有更高优先级的进程到来时如何分配CPU。
调度方式分为:
可剥夺:指当有更高优先级的进程到来时,强行将正在运行进程的CPU分配给高优先级的进程
不可剥夺:指当有更高优先级的进程到来时,必须等待正在运行进程自动释放占用的CPU,然后将CPU分配给高优先级的进程。
调度算法
常用的进程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈调度算法。
先来先服务(FCFS)
FCFS按照作业提交或进程成为就绪状态的 先后次序分配CPU,即进程调度总是将就绪队列队首的进程投入运行。FCFS的特点是比较有利于长作业,而不利于短作业;有利于CPU繁忙的作业,而不利于I/O 繁忙的作业。FCFS 算法主要用于宏观调度。
时间片轮转
目标:是提高资源利用率。
有如下两种:
固定时间片。分配给每个进程相等的时间片,使所有进程都公平执行,它是一种实现简单且有效的方法。
可变时间片。根据进程不同的要求对时间片的大小实时修改,可以更好地提高效率。
优先级调度
优先级调度算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用CPU。
优先级调度分为两种:
静态优先级。进程的优先级在创建时确定,直到进程终止都不会改变。通常根据以下因素确定优先级:进程类型(如系统进程优先级较高)、对资源的需求(如对CPU和内存需求较少的进程优先级较高)、用户要求(如紧迫程度和付费多少)。
动态优先级。在创建进程时赋予一个优先级,在进程运行过程中还可以改变,以便获得更好的调度性能。例如,在就绪队列中,随着等待时间增长,优先级将提高。这样,对于优先级较低的进程在等待足够的时间后,其优先级提高到可被调度执行。进程每执行一个时间片,就降低其优先级,从而当一个进程持续执行时,其优先级会降低到让出CPU。
多级反馈调度
多级反馈队列调度算法如图4-9所示,该算法是时间片轮转算法和优先级算法的综合与发展。
其优点有三个方面:
第一,照顾了短进程以提高系统吞吐量、缩短了平均周转时间;
第二,照顾 I/O 型进程以获得较好的I/O 设备利用率和缩短响应时间;
第三,不必估计进程的执行时间,动态调节优先级。