线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对照

Posted cynchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对照相关的知识,希望对你有一定的参考价值。

我们在用pthread创建线程时,能够指定调度策略policy——SCHED_OTHER(默认)、SCHED_RR和SCHED_FIFO。这里TALK一下两个实时策略——SCHED_RR和SCHED_FIFO。

先看一下效果。我们创建了四个子线程,指定最高优先级(针对特定策略):

  • SCHED_RR
技术分享

  • SCHED_FIFO
技术分享

对同样优先级的任务。SCHED_RR是分配给每一个任务一个特定的时间片,然后轮转依次运行。而SCHED_FIFO则是让一个任务运行完再调度下一个任务,而顺序就是依照创建的先后。

SCHED_RR是依据时间片来调度线程的,当时间片用完时,无论这个线程优先级有多高,都不会在执行,而是进入就绪队列,等待下一个时间片到来。只是图1显示,在thread5798时间片用完时,该线程紧接着进行了一次抢占preemption。又获得了一个时间片。顺便提一句时间片长度的定位是linux凭经验来的。即选择尽可能长、同一时候能保持良好对应时间的一个时间片。





以上是关于线程调度策略SCHED_RR(轮转法)和SCHED_FIFO(先进先出)之对照的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )

Linux 线程调度与优先级

Linux 线程调度与优先级设置

10操作系统——线程的相关属性

进程优先级与调度策略

Linux 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )