时间片轮转调度算法详细判断流程:

例题:

进程

到达时间

服务时间

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


P3

P1

P4

P2


再执行1个时间片(第6个时间片执行服务开始),总状态







P1

P1

P2

P1

P2

P3



P1

P2

P3

P1



P1

P4


P2


继续循环,6时刻,第6个时间片执行完成,P3完成,此时状态

p1已服务时间: 3    ,p2已服务时间: 2   ,p3已服务时间: 1   ,p4已服务时间: 0


P1

P4

P2


再执行1个时间片(第7个时间片执行服务开始),总状态








P1

P1

P2

P1

P2

P3

P1



P1

P2

P3

P1

P4



P1

P4

P2


P2



继续循环,7时刻,第7个时间片执行完成,P1到队尾,此时状态

p1已服务时间: 4    ,p2已服务时间: 2   ,p3已服务时间: 1   ,p4已服务时间: 0


P4

P2

P1


再执行1个时间片(第8个时间片执行服务开始),总状态









P1

P1

P2

P1

P2

P3

P1

P4



P1

P2

P3

P1

P4

P2



P1

P4

P2

P1


P2




继续循环,8时刻,第8个时间片执行完成,P4到队尾,此时状态

p1已服务时间: 4    ,p2已服务时间: 2   ,p3已服务时间: 1   ,p4已服务时间: 1


P2

P1

P4

再执行1个时间片(第9个时间片执行服务开始),总状态










P1

P1

P2

P1

P2

P3

P1

P4

P2



P1

P2

P3

P1

P4

P2

P1



P1

P4

P2

P1

P4


P2





继续循环,9时刻,第9个时间片执行完成,p2到队尾,此时状态

p1已服务时间: 4    ,p2已服务时间: 3   ,p3已服务时间: 1   ,p4已服务时间: 1


P1

P4

P2

再执行1个时间片(第10个时间片执行服务开始),总状态











P1

P1

P2

P1

P2

P3

P1

P4

P2

P1



P1

P2

P3

P1

P4

P2

P1

P4



P1

P4

P2

P1

P4

P2


P2






继续循环,10时刻,第10个时间片执行完成,P1到队尾,此时状态

p1已服务时间: 5    ,p2已服务时间: 3   ,p3已服务时间: 1   ,p4已服务时间: 1


P4

P2

P1

再执行1个时间片(第11个时间片执行服务开始),总状态












P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4



P1

P2

P3

P1

P4

P2

P1

P4

P2



P1

P4

P2

P1

P4

P2

P1


P2







继续循环,11时刻,第11个时间片执行完成,P4到队尾,此时状态

p1已服务时间: 5    ,p2已服务时间: 3   ,p3已服务时间: 1   ,p4已服务时间: 2


P2

P1

P4

再执行1个时间片(第12个时间片执行服务开始),总状态













P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4

P2



P1

P2

P3

P1

P4

P2

P1

P4

P2

P1



P1

P4

P2

P1

P4

P2

P1

P4


P2








继续循环,12时刻,第12个时间片执行完成,P2完成,此时状态

p1已服务时间: 5    ,p2已服务时间: 4   ,p3已服务时间: 1   ,p4已服务时间: 2


P1

P4


再执行1个时间片(第13个时间片执行服务开始),总状态














P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4

P2

P1



P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4



P1

P4

P2

P1

P4

P2

P1

P4



P2








继续循环,13时刻,第13个时间片执行完成,P1到队尾,此时状态

p1已服务时间: 6    ,p2已服务时间: 4   ,p3已服务时间: 1   ,p4已服务时间: 2


P4

P1


再执行1个时间片(第14个时间片执行服务开始),总状态















P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4



P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4

P1



P1

P4

P2

P1

P4

P2

P1

P4




P2








继续循环,14时刻,第14个时间片执行完成,P4到队尾,此时状态

p1已服务时间: 6    ,p2已服务时间: 4   ,p3已服务时间: 1   ,p4已服务时间: 3


P1

P4


再执行1个时间片(第15个时间片执行服务开始),总状态
















P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4

P1



P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4

P1

P4



P1

P4

P2

P1

P4

P2

P1

P4





P2








继续循环,15时刻,第15个时间片执行完成,P1完成,此时状态

p1已服务时间: 7    ,p2已服务时间: 4   ,p3已服务时间: 1   ,p4已服务时间: 3


P4


再执行1个时间片(第16个时间片执行服务开始),总状态

















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








第16个时间片执行完,16时刻,第15个时间片执行完成,P4结束,全部完成,此时状态

p1已服务时间: 7    ,p2已服务时间: 4   ,p3已服务时间: 1   ,p4已服务时间: 4

最终结束完毕,状态如下:

















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








所以调度结果为:

P1

P1

P2

P1

P2

P3

P1

P4

P2

P1

P4

P2

P1

P4

P1

P4