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

Linux操作系统从入门到实战(二十)进程优先级

Linux操作系统从入门到实战(十九)进程优先级

  • 前言
  • 一、进程优先级
    • 1 基本概念
    • 2 查看系统进程
    • 3 PRI 和 NI 是什么?
    • 4 PRI 和 NI 的区别
    • 5 怎么调整进程优先级?
    • 6 补竞争、独立、并行、并发


前言

  • 上一篇博客中,我们介绍了进程状态,以及僵尸进程与孤儿进程;
  • 这一篇,我们将讲解进程优先级。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482


一、进程优先级

1 基本概念

我们的电脑里可能同时运行着很多程序(比如浏览器、微信、音乐软件),但CPU(电脑的“大脑”)一次能处理的任务有限。

  • 这时候就得给这些程序分个“先后顺序”——这就是进程优先级

  • 优先级高的程序,CPU会先处理它,响应速度更快

  • 比如在Linux系统里,给重要的程序(像系统核心程序)设高优先级,不重要的(像后台下载)设低优先级,电脑整体运行会更流畅。

还能指定某个程序只在特定的CPU核心上运行(比如电脑有4个CPU核心,让下载软件只用第4个),这样就不会影响其他核心上的重要程序,进一步提升效率。

2 查看系统进程

想知道当前电脑里的程序优先级?在Linux或Unix系统里,用 ps -l 命令就能看到相关信息。输出结果里有几个关键信息要注意:
在这里插入图片描述

  • UID:谁在运行这个程序(比如你的用户账号ID)。
  • PID:每个程序的“身份证号”,独一无二,用来区分不同程序。
  • PPID:这个程序的“爸爸”(父进程)的ID。比如你双击打开微信,“双击”这个动作可能就是微信的父进程。
  • PRI:程序的优先级数值,数字越小,优先级越高(比如PRI=10的程序比PRI=20的先被CPU处理)。
  • NI:后面会重点说的“nice值”,用来调整优先级的“修正器”。

3 PRI 和 NI 是什么?

前面提到了PRI和NI,这俩是调整优先级的核心,我们拆开来理解:

  • PRI(优先级):直接决定程序被CPU处理的先后顺序,数值越小越优先。比如PRI=5的程序,会比PRI=10的先“插队”。

  • NI(nice值):它不是优先级本身,而是用来“修正”PRI的。比如原来PRI是20,加上NI的值后,新的PRI就变成:
    PRI(新) = PRI(旧) + NI

    举个例子:

    • 如果NI是 -5,原来PRI=20,新PRI就是15(变小了)→ 优先级变高,更快被处理。
    • 如果NI是 10,原来PRI=20,新PRI就是30(变大了)→ 优先级变低,更晚被处理。

    注意:NI的取值范围是 -20到19(一共40个级别),-20是最大的“加急”,19是最大的“减速”。

4 PRI 和 NI 的区别

很多人会搞混这俩,其实它们不是一回事:

  • PRI是“最终的优先级”,直接决定执行顺序;
  • NI是“调整PRI的工具”,相当于给PRI做“加减分”。

比如考试分数(PRI)= 平时成绩(PRI旧)+ 附加分(NI)。附加分(NI)会影响最终分数(PRI),但它本身不是分数。

5 怎么调整进程优先级?

主要用这些工具:

  1. top命令(改已运行的程序)

    • 输入 top 回车,进入进程监控界面;
    • r 键,输入要调整的程序的PID(前面说的“身份证号”);
    • 再输入想设置的NI值(比如输入-5,让它优先级变高)。
  2. 其他命令:

    • nice:启动程序时直接设置NI值(比如 nice -n 5 程序名,让程序启动时NI=5,优先级降低)。
    • renice:调整已运行程序的NI值(比如 renice 10 -p 1234,给PID=1234的程序设NI=10)。

6 补竞争、独立、并行、并发

  • 竞争性:电脑里程序多,但CPU少,就像很多人抢少数几个座位,必须分优先级才能有序。
  • 独立性:每个程序运行时互不干扰,比如微信崩溃了,浏览器还能正常用。
  • 并行:多个CPU同时处理多个程序。比如电脑有2个CPU核心,一个跑浏览器,一个跑音乐软件,两者真正“同时”运行。
  • 并发:只有一个CPU时,它快速在多个程序间切换(比如先处理浏览器0.1秒,再切到微信0.1秒),看起来像“同时”运行,其实是轮流处理。

以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。

我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

http://www.lryc.cn/news/617371.html

相关文章:

  • 汉森(1982)提出的广义矩估计法
  • ResponseBodyAdvice是什么?
  • Agent用户体验设计:人机交互的最佳实践
  • Cobalt Strike的简单搭建与使用
  • ARM基础概念 day51
  • 环境配置-拉取NVIDIA Docker镜像时出现401Unauthorized错误
  • Redis 01 数据结构
  • 第7节 大模型性能评估与优化方法指南
  • Web 开发前端与后端 API 的交互
  • 101. 孤岛的总面积
  • 区块链技术原理(5)-网络
  • 《深度解构:React与Redux构建复杂表单的底层逻辑与实践》
  • (附源码)基于Spring Boot的4S店信息管理系统 的设计与实现
  • 虚拟财产刑事辩护:跨地域性与匿名性带来的挑战
  • 【C/C++】(struct test*)0->b 讲解
  • 从零开始的ReAct Agent尝试
  • HTTPS应用层协议-中间攻击人
  • SharePlay确保最佳游戏体验
  • 前端SVG图标URL编码与嵌入
  • POI导入时相关的EXCEL校验
  • 【数据库】如何使用一款轻量级数据库SqlSugar进行批量更新,以及查看最终的Sql操作语句
  • Flink TableAPI 按分钟统计数据量
  • MSE ZooKeeper:Flink高可用架构的企业级选择
  • 容器之王--Docker的安全优化详解及演练
  • 【96页PPT】华为IPD流程管理详细版(附下载方式)
  • ARM汇编
  • word格式设置-论文写作,样式,字号等
  • 【大模型】强化学习算法总结
  • 用户管理系统后台管理界面
  • Python面试题及详细答案150道(41-55) -- 面向对象编程篇