前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux 内核】调度器 ⑧ ( 进程优先级源码 include\linux\sched\prio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )

【Linux 内核】调度器 ⑧ ( 进程优先级源码 include\linux\sched\prio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )

作者头像
韩曙亮
发布2023-03-30 13:57:33
3.6K0
发布2023-03-30 13:57:33
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

在之前的博客

中 , 简单介绍了 进程优先级概念 , 本篇博客中开始介绍 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 , 没有意义

0

, 没有意义字段 值总为

0

, 没有意义

\rm 120 + nice

, 其数值越小 , 优先级越高normal_prio 正常优先级

-1
99 - \rm rt\_priority
\rm 120 + nice

, 其数值越小 , 优先级越高rt_priority 实时优先级字段 值总为

0

, 没有意义字段 值为

1

~

99

, 其数值越大 , 优先级越高字段 值总为

0

, 没有意义

一、Linux 内核进程优先级源码


在 Linux 内核源码 linux-5.6.18\include\linux\sched\prio.h 头文件中 , 定义了 Linux 线程的优先级 ;

代码语言:javascript
复制
/*
 * 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)

机翻参考文档 :

代码语言:javascript
复制
进程的优先级从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

~

139

之间的整数表示 ;

优先级数值 越小 , 优先级越高 ;

0

~

99

之间的 优先级数值 , 用于描述 实时进程 优先级 ;

100

~

139

之间的 优先级数值 , 用于描述 普通进程 优先级 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Linux 内核进程优先级源码
  • 二、进程分类
  • 三、进程优先级数值 ( 0 ~ 99 实时进程 | 100 ~ 139 普通进程 )
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档