线程调度策略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 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )