摘要:微信搜索【三桥君】
本文介绍了计算“完成时间、周转时间、平均周转时间、带权周转时间和平均带权周转时间”的公式,并且用先来先服务(FCFS)、短作业优先(SJF)两种调度算法来分析一个例题。
一、前言
这里要补充一些说明,方便大家理解。
我们做这类题目时,一般都需要画表,完整的表格方式可以是如图:
一般来说,表的所有列名就8个了,但是实际题目中,列名的个数会缺少,甚至列名的名称也会不一样。但是他们不管名称怎么变,都必须对应上原先的列名,因为每个对应的列名都是有固定的作用和含义的。
这里举例下经常会变动的列名名称,如作业号改为“进程号”,提交时刻改为“提交时间”、“到达时间”,运行时间改为“服务时间”等等,这样子会导致一开始没看出来题目意思,或者导致混淆题意等。
因此,这里我强调下,其实他们名称虽然变了,但是要表达的意思和作用是一样的,而且我们公式还要用到这些对应的列名。
二、公式
周转时间=完成时间-提交时刻
平均周转时间=周转总时间/作业总个数
带权周转时间=周转时间/运行时间
平均带权周转时间=带权周转总时间/作业总个数
说明:
这类题目一般有先来先服务(FCFS)、短作业优先(SJF)两种调度算法,只有在作业的完成时间计算上有一些区别,其他时间的计算公式都是相同的。
三、例题
(一)题目
假设有三道作业,它们的提交时间及运行时间由下表给出,
作业 | 提交时刻(时) | 运行时间(小时) |
1 | 10 | 7 |
2 | 11 | 3 |
3 | 13 | 1 |
采用非多道程序设计,并且采用“先来先服务”作业调度算法。指出它们的调度顺序,并分别计算平均周转时间和平均带权周转时间。
(二)答案
作业 | 提交时刻 | 运行时间 | 完成时间 | 周转时间 | 平均周转时间 | 带权周转时间 | 平均带权周转时间 |
1 | 10 | 7 | 17 | 7 | 8 | 1 | 4 |
2 | 11 | 3 | 20 | 9 | 3 | ||
3 | 13 | 1 | 21 | 8 | 8 |
(三)分析
因为题目是采用“先来先服务”作业调度算法,所以服务顺序根据提交时刻来排序。
计算步骤:
1、找出最先到达的作业(该进程的完成时间=提交时间+运行时间);
2、根据给出的提交时刻,找出下一个到达的作业(该作业的完成时间=上一作业的完成时间+该作业的提交时刻);
3、重复2,直至完成所有作业的计算。
作业服务顺序:1->2->3。
作业 | 提交时刻 | 运行时间 | 完成时间 | 周转时间 | 平均周转时间 | 带权周转时间 | 平均带权周转时间 |
1 | 10 | 7 | 10+7=17 | 17-10=7 | (7+9+8)/3=8 | 7/7=1 | (1+3+8)/3=4 |
2 | 11 | 3 | 17+3=20 | 20-11=9 | 9/3=3 | ||
3 | 13 | 1 | 20+1=21 | 21-13=8 | 8/1=8 |
四、举一反三
那么问题来了,如果例题题目要求改为“短作业优先(SJF)”作业调度算法的话,该怎么做呢?
(一)分析
因为题目是采用“先来先服务”作业调度算法,所以服务顺序就不是根据提交时刻来排序了,但是第一个服务的作业还是以第一个提交时刻来的。
计算步骤:
1、找出最先到达的作业(该进程的完成时间=提交时刻+运行时间);
2、根据上一作业的完成时间,找到提交时刻在这个完成时间内的作业,并找到这些作业中运行时间最短的那个,然后计算它的完成时间(该作业的完成时间=上一作业的完成时间+该作业运行时间);
3、重复2,直至完成所有作业的计算。
作业服务顺序:1->3->2。
作业 | 提交时刻 | 运行时间 | 完成时间 | 周转时间 | 平均周转时间 | 带权周转时间 | 平均带权周转时间 |
1 | 10 | 7 | 10+7=17 | 17-10=7 | (7+10+5)/3=7.3 | 7/7=1 | (1+3.3+5)/3=3.1 |
2 | 11 | 3 | 18+3=21 | 21-11=10 | 10/3=3.3 | ||
3 | 13 | 1 | 17+1=18 | 18-13=5 | 5/1=5 |
《参考文章》
1、完成时间,周转时间,平均周转时间以及带权周转时间和平均带权周转时间
3、操作系统进程完成时间,周转时间,带权周转时间, 平均周转时间, 带权平均周转时间计算
文章整理不易,有帮助请点赞关注支持,谢谢!微信搜索【三桥君 】,回复【关注】有我准备的一份资源大礼包。后续持续更新~~~