【答案解析】[解析] FCFS(先来先服务)和SJF(短作业优先)算法大家应该都很熟悉,这里不多解释。
高响应比优先算法的优先级=(等待时间+运行时间)/运行时间
周转时间=结束时间-提交时间=等待时间+运行时间=响应时间(仅在某些情况下成立,后面会讨论)
(1)FCFS(见下表)
{{B}}作业执行顺序为1、2、3、4{{/B}}
|
| 作业 |
提交时间 |
运行时间 |
开始时间 |
完成时间 |
| 1 |
8.0 |
1.0 |
8.0 |
9.0 |
| 2 |
8.5 |
0.5 |
9.0 |
9.5 |
| 3 |
9.0 |
0.2 |
9.5 |
9.7 |
| 4 |
9.1 |
0.1 |
9.7 |
9.8 |
该算法最简单,根据FCFS原则,作业执行顺序为1、2、3、4。 T=(1.0+1.0+0.7+0.7)/4=0.85 (2)SJF(见下表)
{{B}}作业执行顺序为1、3、4、2{{/B}}
|
| 作业 |
提交时间 |
运行时间 |
开始时间 |
完成时间 |
| 1 |
8.0 |
1.0 |
8.0 |
9.0 |
| 2 |
8.5 |
0.5 |
9.3 |
9.8 |
| 3 |
9.0 |
0.2 |
9.0 |
9.2 |
| 4 |
9.1 |
0.1 |
9.2 |
9.3 |
过程说明:作业1提交时,没有其他作业,故作业1马上开始运行,直到完成,此时有两个进程都在就绪队列,即作业2和作业3。根据SJF,选择作业3运行,直到完成,此时仍有两个进程在就绪队列,即作业2和作业4。根据SJF,选择作业4运行,直到完成,最后作业2运行,完成。 T=(1.0+1.3+0.2+0.2)/4=0.675 (3)高响应比(见下表)
{{B}}作业执行顺序{{/B}}
|
| 作业 |
提交时间 |
运行时间 |
开始时间 |
完成时间 |
| 1 |
8.0 |
1.0 |
8.0 |
9.0 |
| 2 |
8.5 |
0.5 |
9.0 |
9.5 |
| 4 |
9.0 |
0.2 |
9.6 |
9.8 |
| 3 |
9.1 |
0.1 |
9.5 |
9.6 |
作业1提交时,没有其他作业,故作业1马上开始运行,直到完成,此时有两个进程都在就绪队列,即作业2和作业3。此时作业2响应比为(0.5+0.5)/0.5=2,作业3响应比为(0+0.2)/0.2=1,根据响应比高者优先,选择作业2执行,直到完成,此时仍有两个进程在就绪队列中,即作业3和作业4。作业3响应比为(0.5+0.2)/0.2=3.5,作业4响应比为(0.4+0.1)/0.1=5,根据响应比高者优先,选择作业4执行,直到完成,最后作业3运行,完成。
T=(1.0+1.0+0.8+0.5)/4=0.825
关于响应时间和周转时间的关系如下:
响应时间:从提交第一个请求到产生第一个响应所用时间。(这个定义不好理解)
周转时间:从作业提交到作业完成的时间间隔。
如果大家多做几道这样的题会发现,这两个时间经常是相等的,即等待时间+运行时间。但既然有两个定义,就肯定有区别之处。之所以相等的原因是,这些题目太老了,这些题目中大都有个前提,“批处理系统中”,当产生第一次响应时,就是作业完成了。但在分时系统中,时间片结束后,就认为产生了第一个响应。