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

【Linux】进程优先级




在这里插入图片描述



一、什么是进程优先级


什么是优先级:获得某种资源的先后顺序,比如排队的本质就是在确认优先级,打饭的窗口排队,按顺序形成的优先级依次打饭,获取资源:午餐。

为什么需要优先级:本质是目标资源比较少,需要排队使用,饭堂只有一个打饭窗口,需要人们排队取餐。

系统中的进程调度也一样,因为 CPU 的数量较少,远远不能满足一个进程独占一个CPU的需求,因此需要指定进程优先级,排队使用CPU。



二、如何查看进程优先级 PRI


系统中启动的进程优先级,默认为 PRI = 80

(1)命令 ps -la:查看当前系统中正在运行的进程的运行状态

如下:我们启动一个进程 test1,看到该进程优先级 PRI = 80





(2)命令 ps -la | head -1; ps -la | grep test1 :单独筛选查看进程名为 test1 的进程状态

该命令用于单独查看进程名为 test1 的进程,可以分为两部分理解:

  1. ps -la | head -1:显示 ps -la 命令输出的第一行(通常是表头信息)。

    框框中的就是表头:展示信息

在这里插入图片描述


  1. ps -la | grep test1:筛选 ps -la 命令输出中包含字符串 test1 的行。

grep test1 :用于筛选进程名为 test1




三、nice 值:修改进程优先级


1、查看 nice 值

命令 ps -la


2、进程优先级 PRI 的计算原理与 nice 值的调整范围

在 Linux 中,进程优先级 PRi 的计算公式:最终的 PRI = 默认的 PRI(80) + nice

因为 默认的 PRI(80) 一般不会改变,因此用户可以通过修改 nice 值,间接修改一个进程的优先级。



系统默认的 nice 值是 0, nice 值的范围通常是从 -20(最高优先级)到 19(最低优先级),一共 40 个级别,因此调整 nice 值的范围为 [-20,19] ,若越过这个范围,系统只会保留规定范围的上下限值(如将 nice 值修改为 100, 系统只会保留下限值: 19 )。

因为优先级数值越小,优先级越高,因此:

  • 要提高优先级(即减小 nice 值),请输入一个负数。
  • 要降低优先级(即增大 nice 值),请输入一个正数。



下面是三种修改 nice 值的方式:


3、三种修改 nice 值的方式

(1)命令 nice -n [nice值] [进程名字] :设置一个还未启动的,新进程的初始优先级

通过该命令调整名为 myrocess 进程 的 nice值 ,使该进程的优先级降低 5 ,例如:

nice -n 5 myrocess

(2)命令 renice -n [nice值] -p [pid] :更改已经在运行的,指定 pid 的进程的优先级

通过该命令调整 pid = 1234 的进程 的 nice值 ,使该进程的优先级降低 10 ,例如:

renice -n 10 -p 1234

(3)命令top + 命令 r :进入重设优先级模式

命令top :进入一个交互式的系统监视工具

命令 r :进入重设优先级模式,并根据提示输入需要重设优先级的进程 pid (注意要使用键盘上方的一行数字输入,如果使用小键盘输入数字无效),然后根据提示输入一个 nice 值来调整该进程的优先级,最后回车。



四、答疑解惑


1、为什么不能直接修改 PRO,而是通过修改 nice 值间接修改进程优先级

限制用户权限:直接修改 PRI 可能会导致用户滥用权限,使得某些进程占用过多的系统资源。通过 nice 值,系统可以限制用户调整优先级的程度(如 nice 值是由一个规定范围的)。

系统调度的复杂性:因为 PRI 值不仅受 nice 值影响,还受其他因素影响(如进程的状态、I/O 请求、内存使用情况等),Linux 内核的调度算法会根据这些因素进一步综合的调整进程优先级 PRI

系统 nice 值相当于提供给用户一个简化的接口来调整优先级,用户不需要深入理解内核调度算法。通过调整 nice 值,系统会自动计算出相应的 PRI 值,从而影响进程的调度。这种方法既简单又可靠,同时也保证了系统的稳定性和公平性。


2、为什么系统会限制 nice 值的范围与修改次数

系统的表现:

系统规定 nice值 范围为 :[-20, 19]

系统只允许普通用户修改进程 nice 值的次数,一般为1~2次:如在 top 中修改进程优先级,若修改 nice值 2 次以上,就会报错

在这里插入图片描述



为什么会被限制

和 系统稳定性与安全性 有关

  • 资源分配:如果允许用户随意调整 nice 值,可能导致某些进程占用过多资源,从而影响系统的整体稳定性。

  • 防止滥用:限制 nice 值的调整次数和幅度可以防止用户滥用优先级调整功能,避免对系统造成不必要的负担。

  • 权限管理:通过限制普通用户的 nice 值调整能力,可以增强系统的安全性,防止恶意用户通过调整优先级来影响系统运行。

    有些人会恶意写入并运行某些恶意程序,抢占CPU资源,影响其他程序如系统的正常运行



五、进程的并行与并发


可以通过本篇博客先了解一下进程的并行和并发:【Linux】并行与并发(含时间片)-CSDN博客

进程的并行与并发运行,是一个很好的例子证明:系统指定进程优先级来调度进程顺序的优势

例如在并发执行的场景中,操作系统通过调度算法来决定哪个进程何时获得 CPU 时间。进程优先级在此过程中起到了关键作用:

响应时间优化:通过优先级调度,系统可以优先执行关键任务或高优先级任务,从而减少响应时间。

资源公平分配:通过调整优先级,系统可以在多个任务之间实现资源的公平分配。

防止饥饿现象:优先级调度可以防止某些进程长时间得不到执行的机会,从而避免饥饿现象。

什么是进程饥饿:简单来说,若某些进程优先级过低,进程调度器只会先调用优先级高的进程,若优先级高的进程有很多,特别是用户恶意不停将某些进程调高,将导致低优先级进程迟迟得不到调用,造成进程饥饿(饭堂打饭排队,前面老有人插队,导致你迟迟打不上饭,你就会饥饿)



实际上,本章节在笔试面试中不重要,但是这是我们学习过程中一个重要的拼图!


http://www.mrgr.cn/news/56065.html

相关文章:

  • 基于neo4j的糖尿病知识图谱数据
  • HCIP-HarmonyOS Application Developer 习题(十五)
  • 了解袜卡产品
  • gbn,sr和tcp的区别
  • 【STM32学习】PWM学习(四),散热风扇的控制,PWM调速调制,
  • 【SpringBoot】12 Json数据校验
  • 大模型LLM算法工程师技术面试指南
  • 如果你不幸成为家里第一个GIS专业的学生
  • Active Directory(活动目录)密码审核工具
  • Macos m系列芯片环境下安装python3以及mysqlclient流程以及遇到的一系列问题
  • 进程控制 -- 详解
  • 13.5 Linux_网络编程_域名解析
  • 代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II
  • 桌面型数控机床应用于STEAM教育
  • Vue事件处理
  • 双十一买什么东西的人比较多?盘点2024双十一爆款好物分享
  • 由云智慧发起的《数字政府统一运维 第1部分:运维平台建设指南》团标正式发布
  • shell中使用read读取控制台的输入
  • 小飞兔整站下载软件 v19.7 免费版
  • 代码随想录算法训练营第二十三天|Day23 回溯算法
  • 图纸加密软件哪个好?2024年图纸加密软件Top10排行榜最新出炉!
  • 干货分享!如何选择一个可靠的斗篷工具?
  • 海康设备视频平台/视频流协议在EasyCVR私有化视频平台中的应用
  • Java全栈经典面试题剖析4】JavaSE高级 -- 包装类,String, 类方法
  • 多线程初阶(九):线程池 ThreadPoolExecutor 工厂模式
  • 03:【HAL库】外部中断的使用