1.定义概念
是进程和网络调度程序常用的算法之一。[1] 这一方法将相等长度的时间片按照不变的顺序依次分配给每个进程[2],且在处理所有进程时不考虑任何优先级。这一算法简单并易于实现,并且不会产生饥饿问题。时间片轮转调度可以应用于其他调度问题,例如计算机网络中的数据包调度。它是一个操作系统概念。[3]
[]: 1:Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C., Operating Systems: Three Easy Pieces Chapter: Scheduling Introduction(http://pages.cs.wisc.edu/~re "2Stallings, William. Operating Systems: Internals and Design Principles. Pearson. 2015: 409. ISBN 978-0-13-380591-8."
2通俗讲解
时间片轮转调度算法
最古老、最简单、最公平且使用最广的算法就是时间片轮转(Round Robin, RR)调度算法。
每个进程被分配一个时间段,称为时间片(Quantum),即允许该进程在该时间段中运行。
-
如果时间片用完,进程还在运行,那么将会把此进程从 CPU 释放出来,并把 CPU 分配另外一个进程;
-
如果该进程在时间片结束前阻塞或结束,则 CPU 立即进行切换;
另外,时间片的长度就是一个很关键的点:
-
如果时间片设得太短会导致过多的进程上下文切换,降低了 CPU 效率;
-
如果设得太长又可能引起对短作业进程的响应时间变长。将
通常时间片设为 20ms~50ms
通常是一个比较合理的折中值。
周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间
引自:6.1 进程调度/页面置换/磁盘调度算法 | 小林coding (xiaolincoding.com)
辅助理解:【操作系统】什么是时间片?时间片轮转调度算法 - 知乎 (zhihu.com)
3.我的解释
主要有三个原则:
1.现在来的先当老大,没有就后者居上(当有新的进程进入时,那这个进程成为等待队列的队头,没有就队尾的进程成为队头)长江后浪推前浪
2谁是头谁倒霉(每个时间片开始前,处于队头的线程,cpu选择执行它)擒贼先擒王
3.先前的到后面(当前时间片结束时,在这个时间片内执行的进程从对头移动到队尾)曾经挚爱变路人
画图理解:(假设当前时间片为1)
01第一个时间片:假设在0ms时A进程进入队列,而它需要3ms
看三个原则:1.A进入队列后没有后续进程进入,所以A在队头。2.第一个时间片执行A。3.在第一个时间片执行后A进入队尾,所以第一时间片执行A
第一个时间片结束了,A去队尾,因为队列没有新的进程进入,而且A需要3ms才执行完,现在A还需要2个时间片(2ms),所以A还就再成为队头,
第二个时间片执行A,
在第二时间片结束后,B(需要1ms执行完)来了,所以B在队头,A在B后面,第三个时间片执行B
第三个时间片结束,B进程结束了,没有新的进程进入,所以A成队头,第四个时间片执行A
第四个时间片结束,好的,这就是这个我的理解
4源码
感兴趣的可以看看这位博主的
原文链接:https://blog.csdn.net/Blank_Tt/article/details/89463238