在”抢先式优先级调度”中, 当一个进程到达就绪队列时, 将其优先级与就绪队列中存在的其他进程的优先级以及当时由CPU执行的优先级进行比较。时间。接下来, 将在所有可用进程中将优先级最高的那个分配给CPU。
抢占优先级调度和非抢占优先级调度之间的区别在于, 在抢占优先级调度中, 可以在更高优先级的作业到达时停止正在执行的作业。
一旦所有作业在就绪队列中可用, 该算法将充当非抢先优先级调度, 这意味着调度的作业将一直运行到完成, 并且不会进行任何抢占。
例子
给定了7个线程P1, P2, P3, P4, P5, P6和P7。下表列出了它们各自的优先级, 到达时间和突发时间。
线程编号 | Priority | Arrival Time | 爆发时间 |
---|---|---|---|
1 | 2(L) | 0 | 1 |
2 | 6 | 1 | 7 |
3 | 3 | 2 | 3 |
4 | 5 | 3 | 6 |
5 | 4 | 4 | 5 |
6 | 10(H) | 5 | 15 |
7 | 9 | 15 | 8 |
甘特图准备
在时间0处, P1的突发时间为1个单位, 优先级为2。由于没有其他进程可用, 因此将安排此时间, 直到下一个作业到达或完成为止(以较小者为准)。
在时间1, P2到达。 P1已完成其执行, 并且此时没有其他进程可用, 因此, 操作系统必须对其进行调度, 而不考虑为其分配的优先级。
下一进程P3到达时间单元2, P3的优先级高于P2。因此, 将停止执行P2, 并在CPU上调度P3。
在执行P3期间, 另外三个进程P4, P5和P6可用。由于这三个优先级都低于执行中的进程, 因此PS不能抢占该进程。 P3将完成其执行, 然后将以可用进程中的最高优先级安排P5。
同时执行P5, 所有进程在就绪队列中可用。此时, 该算法将开始表现为”非抢先式优先级调度”。因此, 现在, 一旦所有进程在就绪队列中可用, OS就会以最高优先级接管该进程并执行该进程直至完成。在这种情况下, 将安排P4并执行直到完成。
由于P4已完成, 因此就绪队列中具有最高优先级的另一个进程是P2。因此, P2将被安排在下一个。
给P2 CPU直到完成。由于其剩余的突发时间为6个单位, 因此将在此之后安排P7。
剩下的唯一进程是优先级最低的P6, 除非执行, 否则操作系统别无选择。这将在最后执行。
借助GANTT图表确定每个线程的完成时间。可以通过以下公式计算周转时间和等待时间。
Turnaround Time = Completion Time - Arrival Time
Waiting Time = Turn Around Time - Burst Time
线程编号 | Priority | 到达时间 | 爆发时间 | Completion Time | 周转时间 | 等待的时间 |
---|---|---|---|---|---|---|
1 | 2 | 0 | 1 | 1 | 1 | 0 |
2 | 6 | 1 | 7 | 22 | 21 | 14 |
3 | 3 | 2 | 3 | 5 | 3 | 0 |
4 | 5 | 3 | 6 | 16 | 13 | 7 |
5 | 4 | 4 | 5 | 10 | 6 | 1 |
6 | 10 | 5 | 15 | 45 | 40 | 25 |
7 | 9 | 6 | 8 | 30 | 24 | 16 |
平均等待时间=(0 + 14 + 0 + 7 + 1 + 25 + 16)/ 7 = 63/7 = 9个单位
评论前必须登录!
注册