【答案解析】[解析] 目前存在着多种调度算法,有的算法适合作业调度;有的算法适用于进程调度;但也有些调度算法,既可用于作业调度,也可用于进程调度。
其中,先来先服务(FCFS)调度算法是一种最简单的调度算法。当在作业调度中采用该算法时,每次调度是从后备作业队列中,选择一个或多个最先进入该队列的作用,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。
在进程调度中,采用FCFS调度算法时,则每次调度就是从就绪队列中选择一个最先进入该队列的进程,把处理机分配给它,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,才放弃处理机。
FCFS算法比较有利于长作业(进程),而不利于短作业(进程),表1所示为A、B、C、D四个作业分别到达系统的时间、要求服务的时间、开始执行时间及各自的完成时间,并计算各自的周转时间和带权周转时间。
表1
四个作业情况表
|
| 进程名 |
到达时间 |
服务时间 |
开始执行时间 |
完成时间 |
周转时间 |
带权周转时间 |
| A |
0 |
1 |
0 |
1 |
1 |
1 |
| B |
1 |
100 |
1 |
101 |
100 |
1 |
| C |
2 |
1 |
101 |
102 |
100 |
100 |
| D |
3 |
100 |
102 |
202 |
199 |
1.99 |
从表1中可以看出,其中短作业C的带权周转时间竟高达100,而长作业D的带权周转时间仅为1.99。 由此可见,FCFS调度算法有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。CPU繁忙型作业,是指该类作业需要大量的CPU时间进行计算,而很少请求I/O。通常的科学计算便属于CPU繁忙型作业。I/O繁忙型作业是指CPU进行处理时,又需频繁地请求I/O,而每次I/O的操作时间却很短,目前大多数的事物处理,都属于I/O繁忙型作业。 可以通过一个例子来说明采用FCFS调度算法的调度性能,表2中有5个进程A、B、C、D和E,它们到达的时间分别是0、1、2、3和4,所要求的服务时间分别是4、3、5、2和4,由表中还可以看出,A、B、C、D和E的完成时间分别是4、7、12、14和18,从每个进程的完成时间中减去其到达时间,即得到每个进程的周转时间,进而可以算出每个进程的带权周转时间。 表2
FCFS调度算法性能
|
| 作业情况 |
进程名称 |
A |
B |
C |
D |
E |
平均 |
|
到达时间 |
0 |
1 |
2 |
3 |
4 |
|
| 调度算法 |
服务时间 |
4 |
3 |
5 |
2 |
4 |
|
| FCTS |
完成时间 |
4 |
7 |
12 |
14 |
18 |
|
| 周转时间 |
4 |
6 |
10 |
11 |
14 |
9 |
| 带权周转时间 |
1 |
2 |
2 |
5.5 |
3.5 |
2.8 |