在非抢先优先调度中, 将根据分配给它们的优先级编号来调度进程。一旦安排了线程, 它将一直运行到完成。通常, 优先级数字越低, 进程的优先级越高。人们可能会对优先级数字感到困惑, 因此在GATE中, 明确提到哪一个是最高优先级, 哪个是最低优先级。
例子
在示例中, 有7个线程P1, P2, P3, P4, P5, P6和P7。表中列出了它们的优先级, 到达时间和突发时间。
进程ID | Priority | 到达时间 | Burst Time |
---|---|---|---|
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。由于到目前为止还没有其他进程到达, 因此OS将立即对其进行调度。
同时执行P1, 另外两个线程P2和P3到达。由于P3的优先级为3, 因此CPU将执行P3而不是P2。
同时执行P3, 所有进程在就绪队列中可用。优先级编号最低的进程将获得优先级。由于P6的优先级编号分配为4, 因此它将在P3之后执行。
在P6之后, P4在可用进程中的优先级数最少;它会在整个突发时间内执行。
由于所有作业在就绪队列中均可用, 因此所有作业将根据其优先级执行。如果为两个作业分配了相似的优先级编号, 则将执行到达时间最少的作业。
文章图片
【非抢占式优先调度】从准备好的GANTT图表中, 我们可以确定每个线程的完成时间。确定周转时间, 等待时间和响应时间。
Turn Around Time = Completion Time - Arrival Time
Waiting Time = Turn Around Time - Burst Time
线程编号 | Priority | 到达时间 | Burst Time | Completion Time | Turnaround Time | 等待的时间 | 响应时间 |
---|---|---|---|---|---|---|---|
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 |