当前位置: 首页 > news >正文

Linux(五):进程优先级

摘要:什么是进程优先级, Linux中如何修改进程优先级(nice值)

目录

  • 一、什么是进程优先级 · what
  • 二、为什么需要进程优先级 · Why
  • 三、进程优先级如何实现 · How
  • 四、Linux中的进程优先级
    • 1. 优先级数值:PRI
    • 2. 查看进程优先级:`ps -la`
    • 3. ✍修改进程优先级:通过`nice`值调整
      • (1)`nice`值的特性
      • (2)修改优先级的步骤(以`top`命令为例)
      • (3)注意事项
      • 4. 为什么要限定优先级范围?
      • 5. 进程优先级相关命令
    • 五、与进程优先级相关的概念
      • 1. 竞争关系与独立性
      • 2. 并行与并发

一、什么是进程优先级 · what

进程优先级(Priority):多个进程申请资源的请求已通过权限校验后,决定它们获取资源先后顺序的指标

概念区分:权限优先级

  • 权限(Permission):决定“能不能获得某种资源”。例如,普通用户进程无权访问内核态内存,这是权限层面的限制,与优先级无关。
  • 优先级(Priority):决定“能获得资源的情况下,何获得”。当多个进程都有权限使用CPU时,优先级高的进程会先被调度。

权限是“资格”问题,优先级是“顺序”问题。


二、为什么需要进程优先级 · Why

优先级存在根本原因:系统资源是有限的

无论是CPU、内存、I/O设备等,都无法同时满足所有进程的需求。例如,单核CPU同一时间只能运行一个进程,当有多个进程处于就绪状态时,必须通过某种规则决定哪个进程先运行——优先级就是最常用的规则。

没有优先级机制,系统可能陷入“无序调度”:关键进程(如系统服务)可能被非关键进程(如后台下载)阻塞,导致系统响应变慢甚至崩溃。


三、进程优先级如何实现 · How

进程控制块(PCB)中包含了描述进程状态的所有信息,其中有专门用于表示优先级的整数字段

通常,这个字段的数值越小,优先级越高。例如,优先级为10的进程会比优先级为20的进程更早获得CPU资源。

不同操作系统对优先级的实现细节不同。


四、Linux中的进程优先级

1. 优先级数值:PRI

PRI是进程实际的优先级数值,直接决定了调度顺序:

  • 范围:60~90,共40个等级(数值越小,优先级越高)。
  • 默认值:新进程创建时,默认PRI为80。

例如,PRI=60的进程优先于PRI=70PRI=80的进程获得CPU。

2. 查看进程优先级:ps -la

要查看系统中进程的PRI,可以使用ps -la命令。该命令的输出中,PRI列即为进程的优先级数值。

示例输出(截取部分):

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0   123   101  0  80   0 -  1234 wait   pts/0    00:00:00 bash
0 R     0   456   123  2  75  -5 -  5678 -      pts/0    00:00:01 top
  • PRI列的8075即为对应进程的优先级数值。
  • NI列为nice值。

3. ✍修改进程优先级:通过nice值调整

Linux中,进程的实际PRI并非固定不变,而是通过nice(优先级修正值) 动态调整,公式为: PRI = PRI(默认值) + nice

默认PRI为80,即为:PRI = 80 + nice

(1)nice值的特性

  • 范围:-20~19(整数)。
    若输入超出范围的值,系统会自动截断(如输入20会被当作19,输入-21会被当作-20)。
  • 作用nice值越小(越负),PRI越小,进程优先级越高;反之,nice值越大,PRI越大,优先级越低。

(2)修改优先级的步骤(以top命令为例)

  1. 提升权限:修改优先级需要管理员权限,通过su切换到root用户,或用sudo top启动top工具。
  2. 启动进程管理器:输入top命令。
  3. 触发优先级修改:在top界面中输入r(renice的缩写)。
  4. 输入进程PID:根据提示输入需要修改的进程的PID(PID,可从topps命令中获取)。
  5. 输入nice:提示“Renice PID xxxx to value”时,输入目标nice值(如-5、10等)。
  6. 退出top:输入q退出进程管理器。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(3)注意事项

  • 权限限制:普通用户只能调低进程优先级(即增大nice值,如从0→5),不能调高(即减小nice值,如从0→-5);只有管理员可以调高优先级。
  • 范围限制nice值强制限制在-20~19,避免优先级过高的进程长期占用资源。
  • 谨慎操作:①随意修改系统关键进程(如systemd)的优先级可能导致系统不稳定,非必要情况不建议修改;② 过度调高某一进程的优先级可能导致其他进程饥饿,需谨慎使用。

4. 为什么要限定优先级范围?

Linux将PRI限制在60 ~ 90(对应nice值-20 ~ 19),核心目的是避免“进程饥饿”

  • 进程饥饿:指低优先级进程因长期被高优先级进程抢占资源,导致迟迟无法获得CPU调度的现象。
  • 均衡调度:通过限定优先级范围,即使高优先级进程存在,低优先级进程也能在一定时间内获得调度机会(操作系统会通过时间片轮转等机制补充调节),保证系统整体的稳定性。

5. 进程优先级相关命令

除了top,Linux还提供了多个直接操作优先级的命令:

  • nice:启动进程时指定nice值(设置初始优先级)。
    示例:nice -n 5 ./myprogram(以nice=5启动程序,初始PRI=85)。
  • renice:直接修改已有进程的nice值(无需进入top)。
    示例:sudo renice -5 1234(将PID=1234的进程nice值改为-5,PRI=75)。
  • getpriority:获取进程的优先级(编程接口,需在C语言中调用)。

五、与进程优先级相关的概念

1. 竞争关系与独立性

  • 竞争关系:多个进程因争夺同一资源(如CPU、内存)而产生的相互影响,优先级是解决竞争的核心手段。
  • 独立性:进程间拥有独立的地址空间和资源,优先级调度不会打破进程的独立性(即一个进程的崩溃不会直接影响其他进程)。

2. 并行与并发

  • 并行(Parallelism):多个CPU核心同时运行多个进程(微观上真正“同时”),此时优先级决定每个核心上运行哪个进程。
  • 并发(Concurrency):通过进程切换(上下文切换),让多个进程在同一CPU上交替运行(宏观上“同时”,微观上交替)。优先级决定了切换的顺序——高优先级进程会更频繁地获得CPU时间。

END

http://www.dtcms.com/a/515446.html

相关文章:

  • 【算法专题训练】26、队列的应用-广度优先搜索
  • 可靠性SLA:服务稳定性的量化承诺
  • 收集飞花令碎片——C语言内存函数
  • c语言-字符串
  • 红帽Linux -章8 监控与管理进程
  • 企业网站规范简述seo的优化流程
  • LLaMA Factory进行微调训练的时候,有哪些已经注册的数据集呢?
  • 【人工智能系列:走近人工智能03】概念篇:人工智能中的数据、模型与算法
  • 江苏品牌网站设计如何做旅游休闲网站
  • 个人Z-Library镜像技术实现:从爬虫到部署
  • MySQL 索引深度指南:原理 · 实践 · 运维(适配 MySQL 8.4 LTS)
  • SVG修饰属性
  • Labelme格式转yolo格式
  • react的生命周期
  • 保险行业网站模板东莞阳光网站投诉平台
  • Mychem在Ubuntu 24.04 平台上的编译与配置
  • 自定义部署Chrony同步时间
  • 力扣热题100道之73矩阵置零
  • 概述网站建设的流程网站模板之家
  • AI智能体编程的挑战有哪些?
  • 偏振工业相机的简单介绍和场景应用
  • Linux小课堂: SSH协议之安全远程连接的核心技术原理与实现
  • 建网站淄博企业门户网站建设案例
  • C primer plus (第六版)第十一章 编程练习第11题
  • 国内十大网站制作公司手机壁纸网站源码
  • ThreeJS曲线动画:打造炫酷3D路径运动
  • 国产三维CAD工程图特征、公母唇缘有何提升?| 中望3D 2026亮点速递(8)
  • MEMS与CMOS的3D集成技术研究进展
  • 打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第四天)
  • 做的最好的网站怎样如何做网站赚钱