时间轮转片RR算法
注意:在csdn里面参考有些,算的结果和书上给出的结果不一样,下面仅仅个人自己探讨理解出来的,如有错误,希望大佬帮忙指正
原理: 假设在时间片完成时刻,有一个新进程到来,则先将新进程插入就绪队列尾部,然后才将该时间片中未执行完毕的进程插入就绪队列尾部
下题时间片q = 1
进程名 | A | B | C | D | E | 平均 |
---|---|---|---|---|---|---|
到达时间 | 0 | 1 | 2 | 3 | 4 | |
服务时间 | 4 | 3 | 4 | 2 | 4 | |
完成时间 | 15 | 12 | 16 | 9 | 17 | |
周转时间(完成时间 - 到达时间) | 15 | 11 | 14 | 6 | 13 | 11.8 |
带权周抓转时间(周转时间/服务时间) | 3.75 | 3.67 | 3.5 | 3 | 3.33 | 3.46 |
分析:
-
当0时刻,A到达就绪队列,先执行1s,然后B到达,然后A会排在B的后面,此时就绪队列为BA
-
1s时刻执行B,此时时间来到2s,C到达,由于A未完成,所以此时A会排在C的后面,此时就绪队列为BCA
-
第3s执行C1s, 然后时间来到4,D到达,由于就绪队列中BA未执行,所以BA会排在D的后面,此时队列为CDAB(因为上一次是B再前面,C执行后B将放到最后)
-
第4s时间D执行1s, 此时E到达,由于队列中的CAB未执行,所以会排在D的后面,所以此时就绪队列为DEABC,所有进程到达,以后按顺序执行就可以了
写于 2021-06-26