操作系统全部的调度算法主要包括:批处理作业调度算法、进程调度、空闲分区分配算法、虚拟页式存储管理中的页面置换算法、磁盘调度。
1、常见的批处理作业调度算法
(1)FCFS 先来先服务调度算法
(2)SPF 短作业优先调度算法
(3)HRF 最高响应比优先算法
(4)HPF 优先级调度算法
(5)均衡调度算法(多级队列调度算法)
2、进程调度
(1)FIFO 先来先服务调度算法(非剥夺)
顾名思义,按到达的先后顺序来执行进行调度
缺点:短作业等待时间过长;不利于I/O进程,无法有效利用系统资源;
(2)SPF 短作业优先调度算法
是FIFO+优先级队列后的新的调度算法,预期处理时间比较短的进程优先分配资源进行处理;
缺点:预期执行时间,这个很难预测;
对长进程不公平;
非剥夺式的,不适合分时、实时系统
(3)RR 时间片轮转算法(剥夺式)
按进程到达的先后顺序,放入待处理的队列中,然后给首个进程分配CPU时间片,时间片用完后暂停该进程,转入就绪队列中,然后开始下一个进程的调度。
缺点:受时间片大小的影响;
当时间片短时,进程切换较为频繁,会增加额外的系统开销,降低处理机的效率;时间片过长,无法满足交互式用户对响应时间的要求。
(4)HRF 最高响应比优先算法
它是动态优先级的调度算法(运行期间优先级动态改变)
优先级改变策略:剩余时间短的进程优先级高、响应比高的进程优先级高;
响应比计算公式:R=(w+s)/s=w/s+1
w:表示等待的时间;
s:表示预期执行的时间;
所以,等待时间越长、预期执行时间越短的进程优先级比较高。
(5)多级反馈队列调度算法
优先级+FCFS+时间片的融合调度算法,所以它是目前比较好的调度算法。
- 首先设置多个就绪队列并为每个就绪队列设置不同的优先级,优先级越高的队列分配的时间片越短;
- 优先级高的队列先执行,队列内的进程按照FCFS的顺序执行,未完的进程放到下