OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-non-preemptive-priority-scheduling.html

非抢占式优先级调度


在非先占优先级调度中,进程根据分配给它们的优先级编号进行调度。 一旦进程被安排好了,它就会运行直到完成。 通常,优先级数越低,进程的优先级越高。 人们可能会对优先级数字感到困惑,因此在GATE中,明确提到哪一个是最高优先级,哪一个是最低优先级。

示例

在例子中,有7个进程:P1P2P3P4P5P6P7。 它们的优先级,到达时间和爆发时间在表中给出。

进程ID 优先级 到达时间 爆发时间
1 2 0 3
2 6 2 5
3 3 1 4
4 5 4 2
5 7 6 9
6 4 5 4
7 10 7 10

我们可以根据非抢先优先级调度来准备甘特图。

进程P1在时间0到达,突发时间为3个单位,优先级为2。由于没有其他进程到目前为止,因此操作系统会立即安排它。

同时执行P1,还有两个进程P2和P3到达。 由于P3的优先级为3,因此CPU将通过P2执行P3。

同时执行P3,所有进程都可以在就绪队列中使用。 优先级最低的进程将被优先考虑。 由于P6将优先级编号分配为4,因此它将在P3之后执行。

在P6之后,P4在可用进程中具有最小优先级编号; 它会在整个爆发时间执行。

由于所有作业都在就绪队列中可用,因此所有作业都将根据其优先级执行。 如果两个作业的优先级编号相似,则会执行最短到达时间的编号。

从GANTT图表中,可以确定每个进程的完成时间。 周转时间,等待时间和响应时间将被确定。

周转时间 = 完成时间 - 到达时间
等待时间 = 周转时间 - 爆发时间
进程Id 优先级 到达时间 爆发时间 完成时间 周转时间 等待时间 响应时间
1 2 0 3 3 3 0 0
2 6 2 5 18 16 11 13
3 3 1 4 7 6 2 3
4 5 4 2 13 9 7 11
5 7 6 9 27 21 12 18
6 4 5 4 11 6 2 7
7 10 7 10 37 30 18 27

平均等待时间=(0 + 11 + 2 + 7 + 12 + 2 + 18)/ 7 = 52/7单位