Linux 内核调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )相关的知识,希望对你有一定的参考价值。
文章目录
在之前的博客
- 【Linux 内核】进程管理 - 进程优先级 ① ( 限期进程 | 实时进程 | 普通进程 | 进程优先级相关字段 )
- 【Linux 内核】进程管理 - 进程优先级 ② ( prio 调度优先级 | static_prio 静态优先级 | normal_prio 正常优先级 | rt_priority 实时优先级 )
中 , 简单介绍了 进程优先级概念 , 本篇博客中开始介绍 Linux 内核中优先级相关源码 ;
进程优先级 | 限期进程 | 实时进程 | 普通进程 |
---|---|---|---|
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 内核进程优先级源码
在 Linux 内核源码 linux-5.6.18\\include\\linux\\sched\\prio.h
头文件中 , 定义了 Linux 线程的优先级 ;
/*
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
* tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority
* values are inverted: lower p->prio value means higher priority.
*
* The MAX_USER_RT_PRIO value allows the actual maximum
* RT priority to be separate from the value exported to
* user-space. This allows kernel threads to set their
* priority to a value higher than any user task. Note:
* MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
*/
#define MAX_USER_RT_PRIO 100
#define MAX_RT_PRIO MAX_USER_RT_PRIO
#define MAX_PRIO (MAX_RT_PRIO + NICE_WIDTH)
#define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2)
机翻参考文档 :
进程的优先级从0开始。。MAX_PRIO-1,有效RT
优先级为0。。MAX_RT_PRIO-1和SCHED_NORMAL/SCHED_批次
任务在最大优先级范围内。。MAX_PRIO-1。优先事项
值是反向的:较低的p->prio值意味着较高的优先级。
MAX_USER_RT_PRIO值允许实际最大值
RT优先级与导出到的值分开
用户空间。这允许内核线程设置
优先级设置为高于任何用户任务的值。注:
MAX_RT_PRIO不得小于MAX_USER_RT_PRIO。
二、进程分类
进程分类 : 进程分为 实时进程 ( Real-Time Process ) 与 普通进程 ( Normal Process ) ;
" 实时进程 " 优先级高 , 需要被立即执行 ;
" 普通进程 " 优先级低 , 需要较长时间执行 ;
三、进程优先级数值 ( 0 ~ 99 实时进程 | 100 ~ 139 普通进程 )
进程优先级 是由 0 0 0 ~ 139 139 139 之间的整数表示 ;
优先级数值 越小 , 优先级越高 ;
0 0 0 ~ 99 99 99 之间的 优先级数值 , 用于描述 实时进程 优先级 ;
100 100 100 ~ 139 139 139 之间的 优先级数值 , 用于描述 普通进程 优先级 ;
以上是关于Linux 内核调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )