Linux基础之进程的优先级

目录

一、进程优先级的概念

二、进程优先级的查看

三、怎么修改进程优先级 

四、进程饥饿


一、进程优先级的概念

  • cpu资源分配的先后顺序,就是指进程的优先权(priority)。
  • 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
  • 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能

       那为什么要设置一个优先级的概念呢,其实本质上就是因为我们资源不够,不能一次性满足我所有进程的需求。

       这里我们来拿我们的优先级和我们的权限来对比一下(其实这两本质上搭不上关系,这里是来促进我们对一些概念的理解)。

优先级:其保证是可以获得一定的资源的,什么时候取得资源主要关注的是时间问题
权限:其主要关注的是能不能得到某中资源的问题

二、进程优先级的查看

在我们的Linux或者我们的unix系统中,我们可以使用一些指令来查看我们进程的优先级:

ps -l 或者 ps  -al 

 这里给大家演示一下:

其中:

  • UID : 代表执行者的身份
  • PID : 代表这个进程的代号
  • PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
  • PRI :代表这个进程可被执行的优先级,其值越小越早被执行
  • NI :代表这个进程的nice值

三、怎么修改进程优先级 

       要想修改我们的进程优先级,我们首先就要先理解两个概念:RAI 和 NI ,那么接下来就来先给大家介绍一下这两个概念:

  • PRI也还是比较好理解的,即进程的优先级(priority),或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高,其范围是 60 到 99,共40个等级。在OS中,我们的系统的默认优先级是80,可以从我们刚才的图片中看出。
  • 那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值
  • PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:

                                                    PRI(new)=PRI(old)+nice                                                           
     
  • 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行所以,调整进程优先级,在Linux下,就是调整进程nice值。
  • nice其取值范围是-20至19,一共40个级别。

 那到底要怎么修改我们的优先级呢?首先先写一段简单的代码:

我们再来讲讲我们修改进程优先级的流程:

  • 先使用我们的top指令
  • 进入top后按 r 
  • 输入我们想要修改的进度的PID
  • 输入NICE值

给大家演示一下:
先让我们的程序跑起来,然后进入我们的top,并输入我们的 r 后,输入想要修改进程的PID  

输入我们的Nice值 (若我们输入的值大于19,则会被修正为19,若小于-20则会被修正为-20)

修改完成 用ps -al 进行查看

       这样我们一个进程的优先级就被修改成功了,但是我们这是让我们的优先级变小了,如果想让我们的优先级变大,普通用户的权限是不够的,要使用我们的sudo 指令 或者 切换成我们的root权限去修改。

四、进程饥饿

       为什么我们的优先级要被限制在60至99间呢?
       我相信大家都很好奇这个问题,为什么我们的优先级不能被设置成无限大或者无限小呢,这是为什么呢?
       这是因为我们的OS在调度进程时,为了去实现一个平衡,如果随意的让用户去设置我们进程的优先级的话,就会很有可能导致一些优先级的进程一直被调度不到,长时间的得不到CPU的资源,那这种现象我们就称为进程饥饿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/706529.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState ,其强大之处在于,可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数(必要): 自定义的 reducer 函数(详见下文介绍&#xff…

【算法】网络图中的dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、单词搜索二、黄金矿工三、不同路径 |||四、图像渲染五、岛屿数量六、岛屿的最大面积七、被围绕的区域…

从零入门激光SLAM(十七)——SLAM中为什么用ESKF误差卡尔曼滤波器

上一节,介绍了卡尔曼滤波的基本原理,但在SLAM中却使用ESKF,让我们一起看看具体的原因是什么吧 一、误差卡尔曼滤波器ESKF(Error State Kalman Filter) 1.1动机 在常规的卡尔曼滤波器中,需要假定系统的状态服从高斯分布&#xf…

3D Slicer:从入门到精通(六)——图像分割

图像分割 文章目录 图像分割基本概念分割和段表示方式二进制标签图表示 分割模块教程 基本概念 图像分割(也称为轮廓绘制或注释)是一种在图像中划定区域的程序,通常对应于解剖结构、病变和各种其他对象空间。它是医学图像计算中非常常见的程…

衡量代理IP的因素

当你随便点开百度搜索IP代理,然后你就会看到,五花八门的IP代理商出现在视线中。再点进去链接,我们会发现,大多数IP代理商提供的基础IP服务都大差不差,东家这样说,西家又那样说,尽管我们看的头昏…

二进制部署Kubernetes集群——单Master和Node组件

前言 本文将介绍如何使用二进制文件手动搭建 Kubernetes v1.20 集群。通过这种方法,我们可以更好地理解 Kubernetes 的内部工作原理,并具备更大的灵活性和控制权。下面将逐步构建 Kubernetes 集群,并进一步了解其各个组件之间的交互和配置。…

Chirpstack配合网关与lora设备通信

之前的章节讲过chirpstack的下载和安装部署,这节算是后续,利用chirpstack和lora设备做通信, 首先开启chirpstack,并登录,登录完成之后需要添加网关和设备,添加网关也就是Gatway,所以点开左侧的G…

路由交换技术-静态路由 + 动态路由

实验目的与要求 1、掌握单臂路由配置直连路由 2、掌握静态路由配置方法 3、掌握动态路由配置方法 4、理解OSPF链路状态算法的含义 5、掌握DNS、web等网络服务的配置 实验原理与内容 原理: 1、静态路由与默认静态路由 路由器可通过两种方式获知远程网络: 手动 - 远程…

Springboot+Vue项目-基于Java+MySQL的高校专业实习管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 AB路线

//bfs 1000100010不会超时 #include<bits/stdc.h> using namespace std; #define int long long const int n1e311; int a,b,c,h[n][n][12],k[4][2]{0,1,0,-1,1,0,-1,0}; char t[n][n]; struct s {int x,y,z,w; }; signed main() {ios::sync_with_stdio(false);cin.t…

iOS 主要语言切换问题

前言 上架时需要把主要语言切换成英文&#xff0c;存储时一直提示“因为您必须先为使用这种语言的每个版本提供所有必需的截屏”错误。 错误截图 解决方案&#xff1a; 1、增加英文的截图去审核&#xff0c;审核过了再切换主要语言 官方文档出处 END.

PhpStorm 激活

1、更改Hosts文件 Mac文件位置&#xff1a;/etc/host Windows文件位置&#xff1a;C:\Windows\System32\drivers\etc 将 0.0.0.0 www.jetbrains.com 添加到hosts文件末尾。 2、左下角Proxy settings 添加本地80端口代理 附一个激活码 UX394X3HLT-eyJsaWNlbnNlSWQiOiJVWDM…