周转时间=等待时间+运行时间=完成时间-到达时间(提交时间)
带权周转时间=周转时间/运行时间=1+等待时间/运行时间
目录
一、先来先服务(FCFS)
先来先服务算法比较简单,就是谁先到达就运行谁 。
进程名 | 到达时间 | 运行时间 |
A | 0 | 4 |
B | 1 | 5 |
C | 2 | 2 |
D | 3 | 4 |
画完时间段,即可根据时间段填写开始时间和完成时间,然后根据公式计算周转时间和带权周转时间。
进程名 | 到达时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
A | 0 | 4 | 0 | 4 | 4 | 1 |
B | 1 | 5 | 4 | 9 | 8 | 1.6 |
C | 2 | 2 | 9 | 11 | 9 | 4.5 |
D | 3 | 4 | 11 | 15 | 12 | 3 |
故:平均周转时间=(4+8+9+12)/4=8.25
平均带权周转时间=(1+1.6+4.5+3)/4=2.525
二、短作业优先(SJF)(一般考非抢占式)
短作业优先,若进程一起到达,则选择运行时间短的先执行。
进程名 | 到达时间 | 运行时间 |
A | 0 | 3 |
B | 0 | 5 |
C | 0 | 3 |
D | 0 | 4 |
E | 8 | 3 |
由表可知,A,B,C,D四个进程同时到达,选择运行时间最短的先执行,A和C的运行时间都是3,任意选一个先执行(这里选择A,结果一样)
1.非抢占式
非抢占式,就是不抢占,若一个进程执行过程中,另一个比它执行时间短的进程到达也要等上一个进程执行完再执行。
进程名 | 到达时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
A | 0 | 3 | 0 | 3 | 3 | 1 |
B | 0 | 5 | 13 | 18 | 18 | 3.6 |
C | 0 | 3 | 3 | 6 | 6 | 2 |
D | 0 | 4 | 6 | 10 | 10 | 2.5 |
E | 8 | 3 | 10 | 13 | 5 | 1.67 |
2.抢占式
抢占式,若一个进程执行过程中,另一个比它执行时间短的进程到达,先放弃当前进程,去调度执行时间短的那个进程。
进程名 | 到达时间 | 运行时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
A | 0 | 3 | 0 | 3 | 3 | 1 |
B | 0 | 5 | 13 | 15 | 15 | 3 |
C | 0 | 3 | 3 | 6 | 6 | 2 |
D | 0 | 4 | 6 | 13 | 13 | 3.25 |
E | 8 | 3 | 8 | 11 | 3 | 1 |
三、优先级调度算法
若进程同时到达,则优先级高的先执行
优先级高低由优先数判定,题目会给提示,有的规定优先数越大,优先级越高;有的规定优先数越小,优先级越高。
进程名 | 到达时间 | 运行时间 | 优先级 |
A | 0 | 7 | 1 |
B | 2 | 4 | 2 |
C | 4 | 1 | 3 |
D | 5 | 4 | 2 |
本题优先数越大,优先级越高。
1.非抢占式
非抢占式,就是不抢占,若一个进程执行过程中,另一个比它优先级高的进程到达也要等上一个进程执行完再执行。
根据时间段,可以填表如下:
进程名 | 到达时间 | 运行时间 | 优先级 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
A | 0 | 7 | 1 | 0 | 7 | 7 | 1 |
B | 2 | 4 | 2 | 8 | 12 | 10 | 2.5 |
C | 4 | 1 | 3 | 7 | 8 | 4 | 4 |
D | 5 | 4 | 2 | 12 | 16 | 11 | 2.75 |
故:平均周转时间=(7+10+6+11)/4=8.5
平均带权周转时间=(1+2.5+4+2.75)/4=2.5625
2.抢占式
抢占式,若一个进程执行过程中,另一个比它优先级高的进程到达,先放弃当前进程,去执行优先级高的那个进程。
根据时间段,填写表格如下:(结果保留两位小数)
进程名 | 到达时间 | 运行时间 | 优先级 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
A | 0 | 7 | 1 | 0 | 16 | 16 | 2.29 |
B | 2 | 4 | 2 | 2 | 11 | 9 | 2.25 |
C | 4 | 1 | 3 | 4 | 5 | 1 | 1 |
D | 5 | 4 | 2 | 5 | 9 | 4 | 1 |
故:平均周转时间=(16+9+1+4)/4=7.5
平均带权周转时间=(2.29+2.25+1+1)/4=1.635
四、高响应比调度算法
优先权=1+等待时间/运行时间
在某一时刻开始调度,先计算已到达作业的优先权,优先权高的先调度。由于完成一个作业的调度后,其他作业的等待时间会发生改变,导致优先权改变,故每一次都要重新计算优先级再决定哪个作业进行调度。
作业名 | 到达时间 | 运行时间 |
J1 | 8:00 | 2h |
J2 | 8:30 | 1h |
J3 | 9:30 | 0.25h |
在9:40开始调度,问J1,J2,J3的执行顺序。
9:40时,J1,J2,J3都到达,看谁的优先权高就先执行谁
由优先权=1+等待时间/运行时间,得计算优先权,首先明确等待时间和运行时间
9:40,J1等待了100min,J1优先权=1+100/120=1+5/6
J2等待了70min,J2优先权=1+70/60=1+6/7
J3等待了10min,J3优先权=1+10/15=1+2/3(能比较大小就可以,不用准确算出来)
由上可知,J2优先权最高,先执行
J2执行完毕后是10:40
由于J1,J3等待时间发生变化,重新计算优先权
10:40,J1优先权=1+160/120=7/3
J3优先权=1+70/15=17/3
由上可知,J3优先权大于J1,执行J3
综上,执行顺序为J2,J3,J1
如有错误,欢迎指正!!!!