在 OS 中调度的实质是一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可用于作业调度,也可用于进程调度。
先来先服务(FCFS)和短作业优先(SJF)调度算法
先来先服务(first-come first-served,FCFS)调度算法
该算法是一种最简单的调度算法,它既可用于作业调度,也可用于进程调度。在进程调度中采用 FCFS 算法时, 将选择最先进入就绪队列的进程投入执行。 FCFS 算法属于非抢占调度方式, 其特点是简单、易于实现 , 但不利于短作业和 I/0 型作业的运行。FCFS 算法很少作为进程调度的主算法,但常作为辅助调度算法。
短作业(进程)优先调度算法
短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
SJ(P)F 调度算法也存在不容忽视的缺点:
(1) 必须预知作业的运行时间。
(2) 该算法对长作业不利。
(3) 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。
(4) 算法不一定能真正做到短作业优先调度。
优先级调度算法和高响应比优先调度算法
优先级调度算法(priority-scheduling algorithm,PSA)
我们可以这样来看作业的优先级,对于先来先服务调度算法,作业的等待时间就是作业的优先级。对于短作业优先调度算法,作业的长短就是作业的优先级。
优先权调度算法的类型
(1) 非抢占式 (2) 抢占式
优先权的类型
(1) 静态优先权 (2) 动态优先权
高响应比优先调度算法
高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法该优先权的变化规律可描述为:
由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先权又相当于响应比 RP。据此,又可表示为:
时间片轮转调度算法
1. 轮转法的基本原理
在轮转(RR)法中,系统将所有的就绪进程按FCFS策略排成一个就绪队列。系统把CPU分配给队首进程,并令其执行一个时间片。当它运行完毕后,又把处理机分配给就绪队列中新的队首进程,也让它执行一个时间片。
2. 进程切换时机
(1) 时间片尚未用完; (2) 时间片用完时。
3. 时间片大小的确定
在轮转算法中,时间片的大小对系统性能有很大的
影响。
多级反馈队列调度算法
1. 调度机制
(1) 设置多个就绪队列。
(2) 每个队列都采用FCFS算法。
(3) 按队列优先级调度。
2. 调度算法的性能
在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时,便能较好地满足各种类型用户的需要。
(1) 终端型用户:大多数作业第一队列所规定的时间片内便可完成。
(2) 短批处理作业用户:周转时间较短。
(3) 长批处理作业用户:不必担心其作业长期得不到处理。
几种调度算法的对比