操作系统 抢占优先级调度

操作系统 抢占优先级调度

在抢占优先级调度中,当一个进程到达就绪队列时,它的优先级会与就绪队列中的其他进程以及正在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

准备GANTT图表

在时间0时,P1以1个单位的执行时间和优先级2到达。由于没有其他进程可用,因此此进程将被调度,直到下一个作业到达或完成(以较小者为准)。

操作系统 抢占优先级调度

在时刻1,P2到达。P1已完成执行,并且此时没有其他进程可用,因此操作系统必须调度它,而不考虑分配给它的优先级。

操作系统 抢占优先级调度

下一个进程P3在时间单位2到达,P3的优先级高于P2。因此,P2的执行将停止,并将P3调度到CPU上。

操作系统 抢占优先级调度

在执行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个单位

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程