📅  最后修改于: 2020-12-14 03:33:32             🧑  作者: Mango
在“抢先式优先级调度”中,当某个进程到达就绪队列时,将其优先级与就绪队列中存在的其他进程的优先级以及当时CPU正在执行的优先级进行比较时间。接下来,将在所有可用进程中将优先级最高的那个分配给CPU。
抢占优先级调度和非抢占优先级调度之间的区别在于,在抢占优先级调度中,可以在更高优先级的作业到达时停止正在执行的作业。
一旦所有作业在就绪队列中可用,该算法将充当非抢先优先级调度,这意味着调度的作业将一直运行到完成,并且不会进行任何抢占。
给定了7个过程P1,P2,P3,P4,P5,P6和P7。下表列出了它们各自的优先级,到达时间和突发时间。
Process Id | Priority | Arrival Time | Burst 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,所有进程在就绪队列中可用。此时,该算法将开始表现为“非抢先式优先级调度”。因此,现在,一旦所有进程在就绪队列中可用,操作系统便会以最高优先级接管该进程并执行该进程直至完成。在这种情况下,将安排P4并执行直到完成。
由于完成了P4,因此就绪队列中具有最高优先级的另一个进程是P2。因此,将在接下来安排P2。
给P2 CPU直到完成。由于其剩余的突发时间为6个单位,因此将在此之后安排P7。
剩下的唯一进程是优先级最低的P6,除非执行,否则操作系统别无选择。这将在最后执行。
借助GANTT图表确定每个过程的完成时间。可以通过以下公式计算周转时间和等待时间。
Turnaround Time = Completion Time - Arrival Time
Waiting Time = Turn Around Time - Burst Time
Process Id | Priority | Arrival Time | Burst Time | Completion Time | Turn around Time | Waiting 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个单位