当前位置: 代码网 > 服务器>服务器>Linux > Linux进程优先级解读

Linux进程优先级解读

2025年08月06日 Linux 我要评论
1.概念1.1基本概念cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到

1.概念

1.1基本概念

cpu资源分配的先后顺序,就是指进程的优先权(priority)。

优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。

还可以把进程运行到指定的cpu上,这样一来,把不重要的进程安排到某个cpu,可以大大改善系统整体性能。

 

linux中优先级数字越小,优先级越高。

1.2优先级vs权限

简单的说优先级和权限的区别:

  • 优先级:已经能了,获取资源的顺序。(排队号)
  • 权限:能不能获取资源。(准考证)
对比维度优先级(priority)权限(permission)
定义进程获取 cpu 资源的优先顺序,决定调度优先级规定用户 / 用户组对文件 / 目录的访问、修改、执行权限
作用对象仅针对运行中的进程(process)仅针对文件和目录(file/directory)
核心目标优化 cpu 资源分配,提升系统响应速度和运行效率保护资源安全,防止未授权访问或操作
数值 / 标识范围- 静态优先级:nice值(-20~19,值越小优先级越高)
- 动态优先级:内核根据进程状态动态调整
- 权限标识:r(读)、w(写)、x(执行)
- 适用用户:u(所有者)、g(所属组)、o(其他用户)
常用操作命令- nice:启动进程时设置优先级(如nice -n 5 ./app)
- renice:调整已有进程优先级(如renice -10 1234)
- chrt:设置实时进程优先级
- chmod:修改权限(如chmod 755 file)
- chown:修改所有者(如chown user:group file)
- chgrp:修改所属组(如chgrp group file)
示例场景- 后台备份进程设为低优先级(避免影响前台操作)
- 实时监控进程设为高优先级(确保及时响应)
- 系统配置文件仅root可写(rw-r--r--)
- 脚本文件添加执行权限(chmod +x script.sh)
与用户身份的关系普通用户只能降低自身进程优先级(或提升至有限范围),root可任意调整权限与用户身份强关联(所有者权限 > 组权限 > 其他用户权限),root拥有权限豁免权

1.3为什么要有优先级?

进程访问的资源(尤其是 cpu)始终是有限的,而系统中同时运行的进程往往数量较多,不可避免会出现资源竞争

操作系统的调度机制虽以 “分时” 为基础,追求基本公平,但若无优先级区分,可能导致关键进程(如实时响应、系统核心任务)被非关键进程挤占资源,出现响应卡顿或延迟 ;同时,若完全 “平均分配” 资源,还可能引发 “饥饿问题”—— 某些进程因长期得不到足够调度而陷入停滞。

2.查看系统进程

2.1pri和ri

  • 老规矩:先写个简单的进程代码: 
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
       	
	printf("i am a process!  pid=%d\n",getpid());

	return 0;

}
ps -al

  

pri代表这个进程可被执行的优先级,其值越小越早被执行
ni

进程优先级的修正数据,nice 值,nice其取值范围是-20至19,一共40个级别。

新的优先级 = 优先级(默认80) + nice,

这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被

执行,所以调整进程优先级,在linux下,就是调整进程nice值。

2.2pri vs ni

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。

可以理解nice值是进程优先级的修正修正数据

3.修改进程优先级的命令

3.1用top命令更改已存在进程的nice

  • 输入top
  • 进入top后按“r”–>输入进程pid–>输入nice

pri 为99=进程默认值80 +nice值19 ,之前介绍 nice其取值范围是-2019,即使我们输入了100,nice值还是19,是为了防止调度出现问题,把优先级控制在可控范围内。

  • 再次修改nice值会失败,进程优先级不能经常修改

  • 可以使用root修改 

  • 我们

结果变成了70,说明进程优先级是= 进程默认值+nice值 

3.2nice 命令

nice 命令用于在启动进程时设置其优先级。其原理是通过指定nice值(也叫ni值)来调整进程的基本优先级(pri) ,新的优先级计算公式为:新的优先级 = 基本优先级 + nice 值

nice值的范围是 - 20 到 19,数值越小,进程的优先级越高,也就意味着该进程在争夺 cpu 资源时更具优势,能获得更多的 cpu 时间片。但普通用户只能设置 nice 值为 0 到 19,只有 root 用户可以设置为 - 20 到 19 的任意值。

  • 语法格式
nice [ -n <nice值> ] <命令> [<命令参数>]
  • 示例:
sudo nice -n -10 ./myprocess

3.3renice 命令

renice命令用于修改已经在运行中的进程的优先级。在系统运行过程中,你可能发现某个进程占用资源过多影响了其他关键进程,或者某个后台进程优先级太低执行过慢,这时就可以使用 renice 来动态调整其优先级。

  • 语法格式: 
renice [ -n <nice值> ] <进程pid>
# 对指定用户启动的所有进程调整优先级
renice [ -n <nice值> ] -u <用户名>
  • 示例: 
renice 10 2873999

4.其他概念

术语含义说明
竞争性系统进程数目众多,而 cpu 资源有限(甚至仅有 1 个),因此进程之间存在资源竞争。为实现高效任务处理和合理资源竞争,引入了优先级机制。
独立性多进程运行时需独享各类资源,进程间运行过程互不干扰。
并行多个进程在多个 cpu 上分别同时运行,称为并行。
并发多个进程在单个 cpu 上通过进程切换的方式,在一段时间内使多个进程均得以推进,称为并发。

5.总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com