一、先来先服务(FCFS)调度算法
原理:每次调度是从就绪队列中选择最先进入的进程,为之分配处理机,使之执行,该进程一直执行到完成或发生阻塞事件为止。
二、短进程优先(SJF)调度算法
原理:从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成或发生阻塞事件为止,再重新调度。
三、最短剩余时间优先调度算法
原理:总是选择剩余运行时间最短的进程执行,如果新到的进程比正在执行的进程运行时间更短,则当前进程被停止转而运行新到的进程。
四、高优先权(FPF)优先调度算法
非抢占式优先权算法原理:系统把处理机分配给就绪队列中优先权最高的进程后执行到结束或发生阻塞事件为止,再重新分配给另一优先权最高的进程。
抢占式优先权算法原理:某进程执行期间,只要出现了更高优先权的进程,调度程序立即停止当前进程,重新分配给新到的优先权最高的进程。
五、高响应比优先调度算法
优先权=(等待时间+要求服务时间)/(要求服务时间)
六、基于时间片轮转调度算法(RR算法)
原理:就绪进程按先来先服务原则分配给队首进程,执行一个时间片。若时间片用完时此进程还未执行结束,则将它送往就绪队列末尾,执行下个进程。若时间片内进程已经完成,则将它从就绪队列中删除(即进程结束),再调度就绪队列中队首的进程运行并启动一个新的时间片。
七、多级反馈队列调度算法
原理:设置多个就绪队列,各个队列优先级不同,各个队列中进程执行时间片的大小也各不相同。队列优先级越高执行时间片越小。
必备公式:周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间
【应用举例1】
假设在单道批处理环境下有四个作业,已知它们进入系统的时间、估计运行时间:
| 作业 | 进入时间 | 估计运行时间(分钟) |
|---|---|---|
| JOB1 | 8:00 | 120 |
| JOB2 | 8:50 | 50 |
| JOB3 | 9:00 | 10 |
| JOB4 | 9:50 | 20 |
应用FCFS、SJF和高响应比优先作业调度算法,分别计算出作业的平均周转时间和带权的平均周转时间。
FCFS:
| 作业 | 到达时间 | 开始执行时间 | 运行时间(分钟) | 结束时间 |
|---|---|---|---|---|
| JOB1 | 8:00 | 8:00 | 120 | 10:00 |
| JOB2 | 8:50 | 10:00 | 50 | 10:50 |
| JOB3 | 9:00 | 10:50 | 10 | 11:00 |
| JOB4 | 9:50 | 11:00 | 20 | 11:20 |
平均周转时间==112.5分钟
带权平均周转时间==4.975分钟
SJF:
| 作业 | 到达时间 | 开始执行时间 | 运行时间(分钟) | 结束时间 |
|---|---|---|---|---|
| JOB1 | 8:00 | 8:00 | 120 | 10:00 |
| JOB2 | 8:50 | 10:30 | 50 | 11:20 |
| JOB3 | 9:00 | 10:00 | 10 | 10:10 |
| JOB4 | 9:50 | 10:10 | 20 | 10:30 |
平均周转时间==95分钟
带权平均周转时间==3.25分钟
高响应比优先:
| 作业 | 到达时间 | 开始执行时间 | 运行时间(分钟) | 结束时间 | 优先权 |
|---|---|---|---|---|---|
| JOB1 | 8:00 | 8:00 | 120 | 10:00 | |
| JOB2 | 8:50 | 50 | 2.4 | ||
| JOB3 | 9:00 | 10:00 | 10 | 10:10 | 7 |
| JOB4 | 9:50 | 20 | 1.5 |
基于JOB1结束时刻
| 作业 | 到达时间 | 开始执行时间 | 运行时间(分钟) | 结束时间 | 优先权 |
|---|---|---|---|---|---|
| JOB2 | 8:50 | 10:10 | 50 | 11:00 | 2.6 |
| JOB4 | 9:50 | 11:00 | 20 | 11:20 | 2 |
基于JOB3结束时刻
平均周转时间==102.5分钟
带权平均周转时间==3.775分钟
【应用举例2】
进程A、B、C、D、E分别需要运行的时间、到达时间如下表所示,如果采用RR算法的时间片分别为1和4时,请给出各个进程的带权周转时间。
| 进程名 | A | B | C | D | E |
|---|---|---|---|---|---|
| 到达时间 | 0 | 1 | 2 | 3 | 4 |
| 服务时间 | 4 | 3 | 4 | 2 | 4 |
求解:画队列分析+画图辅助
时间片为1:
队列(左为就绪队列,右为执行进程):
(B执行结束)
(D执行结束)
(A执行结束)
(C执行结束)
(E执行结束)
运行时刻图(草图见谅):

综上,结果如下:
| 完成时间 | 12 | 10 | 16 | 11 | 17 |
| 周转时间 | 12 | 9 | 14 | 8 | 13 |
| 带权周转时间 | 3 | 3 | 3.5 | 4 | 3.25 |
时间片为4:
队列和图此处省略···
| 完成时间 | 4 | 7 | 11 | 13 | 17 |
| 周转时间 | 4 | 6 | 9 | 10 | 13 |
| 带权周转时间 | 1 | 2 | 2.25 | 5 | 3.25 |
部分反思:关于高响应比优先调度算法,此处的优先权计算公式只是确认优先权方法的其中一种,且其为不抢占式算法,但是要注意计算时刻应该以什么为基准~多复习五态图~
多调度算法详解:FCFS、SJF、最短优先等及其应用实例
本文详细介绍了先来先服务(FCFS)、短进程优先(SJF)、最短剩余时间优先、高优先权(FPF)、高响应比优先和基于时间片轮转(RR)等调度算法的工作原理及应用。通过实例计算展示了这些算法在作业调度中的效果,包括平均周转时间和带权周转时间。
1109

被折叠的 条评论
为什么被折叠?



