我熟悉 Shortest Process next Scheduling Algorithm (SJF),它是一种非抢占式算法。但是,该算法一次只处理一个具有最小突发时间的进程。可以一次修改为 Shortest Process Next 2 吗?
所以对于这里提到的例子:
5
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
第一行表示进程总数。随后的行表示进程 ID、到达时间、突发时间。
一次有 2 个进程的 SJF 调度将按如下方式工作:
Time | A | B | C | D | E | IDLE |
------------------------------------------------
0 | O | | | | | 1 |
1 | O | | | | | 1 |
2 | X | O | | | | |
3 | | O | | | | 1 |
4 | | O | O | | | |
5 | | O | O | | | |
6 | | O | O | | | |
7 | | X | X | | | |
8 | | | | O | O | |
9 | | | | O | X | |
10 | | | | O | | 1 |
11 | | | | O | | 1 |
12 | | | | X | | 1 |
这里,
O: Process scheduled
X: Process completed
Idle 表示当前有多少处理器处于空闲状态。对于这种情况,有 2 个处理器。可以观察到,在 time t=4
,调度了 2 个进程而不是 1 个。