Linux 线程调度策略详解:SCHED_OTHER、SCHED_FIFO、SCHED_RR
在 Linux POSIX 线程编程中调度策略直接决定了线程如何竞争 CPU 资源也是面试与嵌入式、实时开发中的高频考点。本文从原理、特点、适用场景到代码示例彻底讲清楚三种调度策略SCHED_OTHER、SCHED_FIFO、SCHED_RR。一、基础概念Linux 把调度策略分为两大类普通调度策略SCHED_OTHER系统默认实时调度策略SCHED_FIFO、SCHED_RR优先级规则实时策略优先级1 ~ 99数值越大优先级越高普通策略优先级固定为 0任何实时线程 普通线程只要有实时线程可运行普通线程会被完全抢占二、SCHED_OTHER默认分时调度特点非实时、公平分时调度优先级固定为 0不能修改依赖nice值调整权重值越小越优先由 CFS 公平调度器管理不会饿死线程适合绝大多数普通应用适用场景业务逻辑、后台服务、GUI 程序、普通计算任务等对响应时间不敏感的场景。三、SCHED_FIFO实时先进先出特点实时调度无时间片一旦占用 CPU除非阻塞、被更高优先级抢占或主动退出否则绝不释放同优先级线程先来先服务不主动切换高优先级线程可完全抢占低优先级线程注意多核环境下不同核心可同时运行不同优先级线程必须绑定到同一核心才能观察到严格的独占效果适用场景工控、实时采集、硬实时任务要求极低延迟。四、SCHED_RR实时时间片轮转特点实时调度带时间片默认约 100ms高优先级依旧抢占低优先级同优先级线程轮流执行时间片用完自动切换不会像 FIFO 那样被单个线程独占 CPU适用场景音视频、实时数据处理、多路实时任务既要求实时性又希望公平。五、三种策略核心对比表格策略类型优先级时间片同优先级调度抢占特性SCHED_OTHER普通0有公平轮转低SCHED_FIFO实时1-99无不切换独占强抢占SCHED_RR实时1-99有时间片轮转强抢占六、关键知识点总结sleep、printf、锁、IO 都会阻塞线程并释放 CPU会让低优先级线程获得运行机会。多核 CPU上不同核心可同时运行不同优先级线程想观察抢占必须绑核。SCHED_FIFO 同优先级谁先运行谁独占另一个线程完全不运行。SCHED_RR 同优先级轮流运行自动切换公平不卡死。实时线程必须使用root权限运行。七、简单示例SCHED_RR 同优先级轮转c运行#define _GNU_SOURCE #include stdio.h #include pthread.h #include unistd.h #include sched.h void *funcA(void *arg) { while (1) { printf(A ); } } void *funcB(void *arg) { while (1) { printf(B ); } } int main() { pthread_t tidA, tidB; pthread_attr_t attrA, attrB; struct sched_param param; pthread_attr_init(attrA); pthread_attr_init(attrB); // 调度策略 RR pthread_attr_setschedpolicy(attrA, SCHED_RR); pthread_attr_setschedpolicy(attrB, SCHED_RR); // 同优先级 90 param.sched_priority 90; pthread_attr_setschedparam(attrA, param); pthread_attr_setschedparam(attrB, param); pthread_attr_setinheritsched(attrA, PTHREAD_EXPLICIT_SCHED); pthread_attr_setinheritsched(attrB, PTHREAD_EXPLICIT_SCHED); pthread_create(tidA, attrA, funcA, NULL); pthread_create(tidB, attrB, funcB, NULL); pthread_join(tidA, NULL); pthread_join(tidB, NULL); return 0; }编译运行bash运行gcc sched_rr.c -o rr -pthread sudo ./rr运行效果A、B 按时间片交替批量打印。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2505517.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!