linux内核调度策略SCHED_OTHER,SCHED_FIFO和SCHED_RR
2017-06-29 11:28
357 查看
本文主要是看了大神的这篇文章:http://blog.chinaunix.net/uid-24774106-id-3379478.html
自己稍作总结而已。
跟进程调度策略相关的代码为:
SCHED_OTHER表示普通进程,对于普通进程,第三个参数sp->sched_priority只能是0
SCHED_FIFO 和SCHED_RR表示实时进程的调度策略,第三个参数的取值范围为[1,99]。
如果sched_setscheduler 优先级设置的值和调度策略不符合的话,会返回失败的。
下面是这三个调度策略的总结:
1.对于SCHED_OTHER,即普通进程调度策略,它应该是基于CFS, 它的特点是即使是最低优先级,他也能获得一定的时间片(这个自己还不太清楚,印象中在《深入理解linux内核》中有讲过,有空再看吧)。
2.SCHED_FIFO:高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出;对于同等优先级,先运行的进程会一直占据cpu, 只有等到先运行的进程主动退出,后续进程才能得到时间片。
3.SCHED_RR: 同上,高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出, ;对于同等优先级的进程,各个进程会轮流运行一定的时间片(大约100ms)。
自己稍作总结而已。
跟进程调度策略相关的代码为:
//调度策略 #define SCHED_OTHER 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #ifdef __USE_GNU # define SCHED_BATCH 3 #endif struct sched_param { /* ... */ int sched_priority; //优先级 /* ... */ }; //设置进程的调度策略和优先级 //第一个参数为进程pid; //第二个参数为调度策略; //第三个参数为优先级; int sched_setscheduler (pid_t pid, int policy, const struct sched_param *sp);
SCHED_OTHER表示普通进程,对于普通进程,第三个参数sp->sched_priority只能是0
SCHED_FIFO 和SCHED_RR表示实时进程的调度策略,第三个参数的取值范围为[1,99]。
如果sched_setscheduler 优先级设置的值和调度策略不符合的话,会返回失败的。
下面是这三个调度策略的总结:
1.对于SCHED_OTHER,即普通进程调度策略,它应该是基于CFS, 它的特点是即使是最低优先级,他也能获得一定的时间片(这个自己还不太清楚,印象中在《深入理解linux内核》中有讲过,有空再看吧)。
2.SCHED_FIFO:高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出;对于同等优先级,先运行的进程会一直占据cpu, 只有等到先运行的进程主动退出,后续进程才能得到时间片。
3.SCHED_RR: 同上,高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出, ;对于同等优先级的进程,各个进程会轮流运行一定的时间片(大约100ms)。
相关文章推荐
- linux内核调度策略SCHED_OTHER,SCHED_FIFO和SCHED_RR
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR) .
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- posix多线程有感--进程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- posix多线程有感--进程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程/线程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- posix多线程有感--进程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法SCHED_OTHER,SCHED_FIFO,SCHED_RR
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程/线程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- linux进程调度算法:分时调度策略、FIFO调度策略、RR调度策略
- linux进程调度之 FIFO 和 RR 调度策略
- linux进程调度之 FIFO 和 RR 调度策略