七、进程作业调度算法
如题: 假设一个系统有 4个进程,他们的到达时间和服务时间如下表所示,忽略 I/O 以及其他的开销时间,若分别按 先来先服务( FCFS ) 、 短进程优先( SPF )、高响应比优先算法(HRRN) 调度算法进行 CPU 调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。
进程 | 到达时间 | 运行时间 |
---|---|---|
P1 | 0 | 7 |
P2 | 2 | 4 |
P3 | 4 | 1 |
P4 | 5 | 4 |
首先你需要知道各个时间代表什么
- 到达(提交)时间:题目给你的,该进程什么时候来的(还没运行呢)
- 运行时间:题目给你的,该进程要运行多长时间
- 开始时间:根据算法得的,该进程啥时候真正开始运行
- 结束时间:开始时间 + 运行时间,该进程啥时候运行结束
- 周转时间:结束时间 - 到达时间,该进程从到达到结束一共用的时间
- 带权周转时间:周转时间 / 运行时间
- 平均带权周转时间:所有进程带权周转时间总和 / 进程数
所以吧,你其实只要根据算法得开始时间就完事了,其他都是加加减减乘乘除除的事情
先来先服务(FCFS)
思路:谁先来的就先执行谁(非抢占式)
解题过程:
-
别管算法,先列个表先,把题目告诉你的抄下来
进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 P2 2 4 P3 4 1 P4 5 4 -
管管算法,按思路,谁先来谁就执行(谁到达时间最早先执行谁)
即P1→P2→P3→P4,在表中填出开始时间、结束时间
进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 P2 2 4 P3 4 1 P4 5 4 进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 P2 2 4 7 11 P3 4 1 P4 5 4 进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 P2 2 4 7 11 P3 4 1 11 12 P4 5 4 12 16 -
计算出周转时间、带权周转时间
进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 7-0=7 7/7=1 P2 2 4 7 11 11-2=9 9/4=2.25 P3 4 1 11 12 12-4=8 8/1=8 P4 5 4 12 16 16-5=11 11/4=2.75
短作业优先(SJF)
思路:先执行最先到达的,然后根据谁运行时间短先执行(非抢占式)
解题过程:
-
别管算法,先列个表先,把题目告诉你的抄下来
-
按思路,0时刻只有P1到了,先执行P1,然后谁运行时间短谁先执行(注意如果运行完发现某个进程还没到就先别运行他)
即P1→P3→P2→P4,在表中填出开始时间、结束时间
-
计算出周转时间、带权周转时间
进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 P2 2 4 P3 4 1 P4 5 4 进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 P2 2 4 P3 4 1 7 8 P4 5 4 进程 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间 P1 0 7 0 7 7 1 P2 2 4 8 12 10 2.5 P3 4 1 7 8 4 4 P4 5 4 12 16 11 2.75
高响应比优先算法(HRRN)
思路:计算响应比=(等待时间+执行时间)/执行时间,谁高谁先执行(等待时间=此时刻-到达时间)
解题过程:
-
别管算法,先列个表先,把题目告诉你的抄下来
-
按思路,0时刻只有P1到了,先执行P1,执行完在7时刻
-
然后计算剩下进程的响应比
P2:(5+4)/4=2.25,P3:(3+1)/1=4,P4:(2+4)/4=1.5
所以接下来执行P3,P3执行完在8时刻
-
计算响应比
P2:(6+4)/4=2.5,P4:(3+4)/4=1.75
所以接下来执行P2,最好执行P4
即P1→P3→P2→P4
-
-
计算出周转时间、带权周转时间
进程 | 到达时间 | 运行时间 | 开始时间 | 结束时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
P1 | 0 | 7 | 0 | 7 | 7 | 1 |
P2 | 2 | 4 | 8 | 12 | 10 | 2.5 |
P3 | 4 | 1 | 7 | 8 | 4 | 4 |
P4 | 5 | 4 | 12 | 16 | 11 | 2.75 |