linux优先级理解
发布时间:2026/10/31 1:58:36 锦皓数字建站

Linux会把所有进程的线程放在同一个调度池中统一看待是按照线程的优先级来确定下一个该跑谁。每个线程都是一个task_struct。优先级调度策略调度算法0-99实时进程SCHED_RR , SCHED_FIFO100-139普通进程SCHED_OTHER对内核来说优先级值越小优先级越高。SCHED_FIFO先来先服务原则当线程占用cpu时只有主动让出或被高优先级抢占才会让出cpuSCHED_RR时间片轮询在SCHED_FIFO的基础上增加了最多运行时间的限制同一优先级的线程会依次执行SCHED_OTHER完全公平调度算法根据优先级映射权重根据权重分配cpu运行时间。Linux的默认调度策略。对于用户层来说在设置线程优先级时优先级值越大优先级越高。因为会做转换实时任务kernel_priority 100 - 1 - valval是程序中设置的线程优先级值范围0-99调度方式可设为RR或者FIFO普通任务kernel_priority 120 nice; nice是程序中设置的线程优先级值范围-20-19调度方式只能是OTHER对于实时任务来说优先级永远高于普通进程普通进程通过nice值设置静态优先级后内核会根据实际情况调整动态优先级。linux的默认调度策略是SCHED_OTHER。在使用实时调度策略时需要注意优先级反转问题。线程H M L低优先级L先抢占了锁H就绪抢占了CPU也需要访问锁H被锁阻塞M线程开始执行。造成优先级反转。死锁问题
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。