Linux 内核进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 )

Posted 韩曙亮_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 )相关的知识,希望对你有一定的参考价值。



文章目录



一、进程优先级相关字段



在 ​​linux-5.6.18\\include\\linux\\sched.h​​​ 头文件中 ​​task_struct​​ " 进程描述符 " 结构体 中定义了 进程优先级字段如下 :

int       prio;          // 调度优先级
int static_prio; // 静态优先级
int normal_prio; // 正常优先级
unsigned int rt_priority; // 实时优先级



1、prio 字段 ( 调度优先级 )



​prio​​ 字段 是 " 调度优先级 " , 数值越小 , 优先级越高 ;

一般情况下 ​​prio​​​ 字段 等于 ​​normal_prio​​ 字段 ;

特殊情况 :​ 在锁同步机制中 , 如果 A 进程 占有了 实时互斥锁 , B 进程 等待该 实时互斥锁 , 假如 B 进程的优先级 高于 A 进程 的优先级 , 此时就会将 占有 实时互斥锁 的 A 进程的 ​​prio​​​ 优先级 提高到与 B 进程 ​​prio​​ 优先级相等的地位 ;



2、static_prio 字段 ( 静态优先级 )



​static_prio​​ 字段 是 " 静态优先级 " ,

对于 " 限期进程 " 来说 , 静态优先级 ​​static_prio​​ 字段 值总为 0 0 0 , 没有意义 ;

对于 " 实时进程 " 来说 , 静态优先级 ​​static_prio​​ 字段 值总为 0 0 0 , 没有意义 ;

对于 " 普通进程 " 来说 , 静态优先级 ​​static_prio​​ 字段 值为 120 + n i c e \\rm 120 + nice 120+nice , 其数值越小 , 优先级越高 ;



3、normal_prio 字段 ( 正常优先级 )



​normal_prio​​ 字段 是 " 正常优先级 " , 数值越小 , 优先级越高 ,

对于 " 限期进程 " 来说 , 正常优先级 ​​normal_prio​​ 字段 值总为 − 1 -1 −1 ;

对于 " 实时进程 " 来说 , 正常优先级 ​​normal_prio​​ 字段 值 99 − r t _ p r i o r i t y 99 - \\rm rt\\_priority 99−rt_priority ;

对于 " 普通进程 " 来说 , 正常优先级 ​​normal_prio​​​ 字段 值 与 静态优先级 ​​static_prio​​ 字段相等 , 为 120 + n i c e \\rm 120 + nice 120+nice , 其数值越小 , 优先级越高 ;



4、rt_priority 字段 ( 实时优先级 )



​rt_priority​​ 字段 是 " 实时优先级 " ,

对于 " 限期进程 " 来说 , 实时优先级 ​​rt_priority​​ 字段 值总为 0 0 0 , 没有意义 ;

对于 " 实时进程 " 来说 , 实时优先级 ​​rt_priority​​ 字段 值为 1 1 1 ~ 99 99 99 , 其数值越大 , 优先级越高 ;

对于 " 普通进程 " 来说 , 实时优先级 ​​rt_priority​​ 字段 值总为 0 0 0 , 没有意义 ;






二、三种进程的四种优先级总结



进程优先级

限期进程

实时进程

普通进程

prio 调度优先级

等于 normal_prio 字段

等于 normal_prio 字段

等于 normal_prio 字段

static_prio 调度优先级

字段 值总为

0 0 0 , 没有意义

字段 值总为

0 0 0 , 没有意义

120 + n i c e \\rm 120 + nice 120+nice , 其数值越小 , 优先级越高

normal_prio 正常优先级


− 1 -1 −1

99 − r t _ p r i o r i t y 99 - \\rm rt\\_priority 99−rt_priority

120 + n i c e \\rm 120 + nice 120+nice , 其数值越小 , 优先级越高

rt_priority 实时优先级

字段 值总为

0 0 0 , 没有意义

字段 值为

1 1 1 ~ 99 99 99 , 其数值越大 , 优先级越高

字段 值总为

0 0 0 , 没有意义


以上是关于Linux 内核进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )

Linux 内核进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )

Linux 内核进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )

Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )

Linux 内核线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 )

Linux 内核进程管理 - 进程优先级 ① ( 限期进程 | 实时进程 | 普通进程 | 进程优先级相关字段 )