时间片轮转调度算法详细判断流程:
例题:
| 进程 | 到达时间 | 服务时间 |
| P1 | 0.0 | 7 |
| P2 | 2.0 | 4 |
| P3 | 4.0 | 1 |
| P4 | 5.0 | 4 |
时间片为1
先放出来最终的结果
| ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ |
| P1 | P1 | P2 | P1 | P2 | P3 | P1 | P4 | P2 | P1 | P4 | P2 | P1 | P4 | P1 | P4 |
| ↑ | ↑ | P1 | P2 | P3 | P1 | P4 | P2 | P1 | P4 | P2 | P1 | P4 | P1 | P4 | ↑ |
| ↑ | ↑ | P1 | P4 | P2 | P1 | P4 | P2 | P1 | P4 | ↑ | ↑ | ↑ | |||
| ↑ | P2 | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ||||||||
| ↑ |
因为时间片为1,所以我们每隔1就要中断一下
0时刻,P1到达,第1个时间片执行服务开始,此时队列中的数据如下(箭头向上代表流动方向,上面的代表出队列,下面的代表入队列)
| ↑ |
| P1 |
| ↑ |
1时刻没有陆续到达的,第1个时间片执行完成,队列中仍然是P1
p1已服务时间: 1 ,p2已服务时间: 0 ,p3已服务时间: 0 ,p4已服务时间: 0
队列如下
| ↑ |
| P1 |
| ↑ |
再执行1个时间片(第2个时间片执行服务开始),总状态(除最后一列外的左边列代表已执行过的队列,最后一列代表当前队列)
| ↑ | ↑ |
| P1 | P1 |
| ↑ | ↑ |
2时刻P2到达,第2个时间片执行完成,P2入队列,P1出队列循环到队尾,此时队列如下
p1已服务时间: 2 ,p2已服务时间: 0 ,p3已服务时间: 0 ,p4已服务时间: 0
| ↑ |
| P2 |
| P1 |
| ↑ |
再执行1个时间片(第3个时间片执行服务开始),总状态
| ↑ | ↑ | ↑ |
| P1 | P1 | P2 |
| ↑ | ↑ | P1 |
| ↑ |
3时刻没有到达的,第3个时间片执行完成,继续循环出队列然后进队列,P2到队尾,此时状态
p1已服务时间: 2 ,p2已服务时间: 1 ,p3已服务时间: 0 ,p4已服务时间: 0
| ↑ |
| P1 |
| P2 |
| ↑ |
再执行1个时间片(第4个时间片执行服务开始),总状态
| ↑ | ↑ | ↑ | ↑ |
| P1 | P1 | P2 | P1 |
| ↑ | ↑ | P1 | P2 |
| ↑ | ↑ |
继续循环,4时刻,P3到达,第4个时间片执行完成,P1到队尾,此时状态
p1已服务时间: 3 ,p2已服务时间: 1 ,p3已服务时间: 0 ,p4已服务时间: 0
| ↑ |
| P2 |
| P3 |
| P1 |
| ↑ |
再执行1个时间片(第5个时间片执行服务开始),总状态
| ↑ | ↑ | ↑ | ↑ | ↑ |
| P1 | P1 | P2 | P1 | P2 |
| ↑ | ↑ | P1 | P2 | P3 |
| ↑ | ↑ | P1 | ||
| ↑ |
继续循环,5时刻,P4到达,第5个时间片执行完成,P2到队尾,此时的状态
p1已服务时间: 3 ,p2已服务时间: 2 ,p3已服务时间: 0 ,p4已服务时间: 0
| ↑ |

本文详细解析了时间片轮转调度算法的工作流程,通过一个具体的实例,展示了算法如何处理多个进程的调度,包括进程到达时间、服务时间和时间片大小的影响。

2409

被折叠的 条评论
为什么被折叠?



