Linux操作系统——进程(三) 进程优先级

进程优先级

首先呢,我们知道一个进程呢(或者也可以叫做一个任务),它呢有时候要在CPU的运行队列中排队,要么有时候阻塞的时候呢又要在设备的等待队列中排队,其实我们排队的本质就是:确认优先级。

关于优先级呢我们可以从以下三个方面来进行说明:

进程优先级是什么?

本质就是得到某种资源的先后顺序。

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

在Linux操作系统中其实就是PCB中的一个int字段,数值越小,优先级越大。

为什么要有进程优先级?

其实可以用我们生活中的例子来进行说明:

比如说,我们上学的时候要去食堂吃饭,人太多了那你得进行排队,去图书馆的时候你想要有一个好的座位,那你得优先于其他同学占到那个位置,也需要排队,其实要排队的原因就是资源不足!

而你想排队就是想要获得某种资源,而由于资源不足就必须遵循一个先后顺序来获取资源才能够正常运转下去。

Linux中如何操作进程优先级?

Linux进程的优先级数值范围:60~99

Linux进程的默认优先级都是:80

Linux是支持动态优先级调整的

Linux进程PCB中存在一个nice值:进程优先级的修正数据

进程新的优先级= 进程老的优先级+nice值

在linux中可以输入如下命令查看进程的优先级:

ps -la

我们很容易注意到其中的几个重要信息,有下:
UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值

如果我们想要调整一下优先级我们要怎么调整呢?

通过top命令启动任务管理器:

然后点击一个r键

当前光标所在这一行就是让我们输入要修改的优先级的进程的pid

比如我这里正在运行一个pid为5230的进程:

我通过输入5230之后,回车:

这里我们要输入的是一个nice值,我们前面说到进程新的优先级=进程老的优先级+nice值,当前进程老的优先级是80,所以我们输入的nice值在老优先级修改的范围必须保证在60-99。

下面我们输入一个10:

点击q退出任务管理器之后继续输入ps  -al命令查看优先级:

发现变成了90了。这里相当于把优先级给调低了。

下面我们把优先级调高一点:

同样的操作,打开任务管理器:

这是我们回车发现我们没有权限,然后我们sudo top提升一下权限输入一下自己的用户密码

然后我们继续进行以上操作,大家是不是会认为,他的优先级这个时候应该是回到80?

那么我们下面来看:

发现我们的这个进程myproc的优先级变成了70.

在我们的Linux当中呢,统一进程要修改优先级的时候老的进程优先级都是从80开始的,所以我们刚刚的老的优先级并不是从90开始变的,而是从80开始-10的,最后变成了70.

所以呢,你要调整优先级每次都是有一个确定的起始值。

nice值调整最小是:-20,超过部分统一当成-20

nice值调整最大是:19,超过部分统一当成19

所以才有刚刚的结论:

Linux进程的优先级数值范围:60~99

PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小
进程的优先级别越高
那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值
PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice
这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
所以,调整进程优先级,在Linux下,就是调整进程nice值
nice其取值范围是-20至19,一共40个级别。

那么我们下面来说明为什么要把优先级限定在一定的范围?

如果我们的用户恶意频繁的去修改进程的优先级,一个进程刚调度完,用户又把该进程的优先级设置成最高,一直调度那么有可能就会导致一些优先级比较低的进程就一直不能够被调度,导致一些进程长时间得不到CPU资源,那么我们把这种现象叫做进程饥饿。

OS调度的时候,较为均衡的让每一个进程都能够得到调度。这能够体现出公平性。

我们linux中呢还有一个关于设置优先级的系统调用接口:

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

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

相关文章

用水用电用燃气PSD大屏文件,电力行业可视化大数据(供水供电可视化管理后台资料)

通过对水、电、燃气等能源的使用情况进行统计和分析,可以有效地预测能源需求,为企业的能源管理提供决策依据。现分享大屏燃气大数据可视化平台、电力行业可视化大数据展示平台、大工商业用气快速报告、供水供电可视化管理后台等大屏模版的Photoshop源文件…

[Linux] Mysql数据库中的用户管理与授权

一、登录用户的管理 1.1 查看用户密码的信息 用户信息存放在 mysql 数据库下的 user 表(MySQL 服务下存在一个系统自带的 mysql 数据库)。 use mysql ; show tables; desc user; 查看密码信息的命令: 能看到密码信息:是经过加…

数据库管理-第127期 LSM Tree(202301225)

数据库管理-第127期 LSM Tree(202301225) 说起分布式数据库,绕不开的一个话题就是LSM Tree,全称为log-structured merge-tree,回到吕海波老师授权过的那句话“没搞过Oracle的,但又是数据库圈里的人&#x…

NPM的介绍和使用

NPM(Node Package Manager)是一个用于共享和管理JavaScript代码包的工具。它是Node.js的官方包管理工具,可以方便地安装、更新、卸载和发布Node.js模块。以下是NPM的一些主要功能和使用方法的介绍: 1. 安装NPM:NPM是N…

C++模板函数重载规则细说

引言 模板编程&#xff0c;指的是可以我们可以将函数或者类的数据类型抽离出来&#xff0c;做到类型无关性。我们关注的对象&#xff0c;是普通函数、普通类。如下面的这个经典的模板函数&#xff1a; template<typename T> bool compare(T t1,T t2) {return t1 >t2…

matlab设置colorbar标题的两种方式

%% 第一种 figure; A rand(3,4,3); A1 A(:,:,1); A2 A(:,:,2); A3 A(:,:,3); contourf(A1,A2,A3,30); colormap(jet);colorbar; my_handlecolorbar; my_handle.Label.String depth/km; my_handle.Label.FontSize 15;%% 第二种 figure; A rand(3,4,3); A1 A(:,:,1); A2 …

新概念英语第二册(2)

【New words and expressions】生词和短语&#xff08;5&#xff09; until prep. 直到 outside adv. 外面 ring v. &#xff08;铃、电话等&#xff09;响&#xff08;rang, rung&#x…

隔壁小孩馋哭了都要问我要的MySQL数据库攻略

1 Mysql数据库 1.1 数据库概念 数据 描述事物的符号记录 包括数字、文字、图形、图像声音、档案记录等 以“记录”形式按统一的格式进行存储 表 将不同的记录组织在一起 用来存储具体数据 数据库 标的合集&#xff0c;是存储数据的仓库 以定的组织方式存储打的相互有…

linux Systemd为裸机goLand应用保驾护航

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 线上有一个Goland的应用程序&#xff0c;goland语言和java不同&#xff0c;如果有任何异常就直接挂掉退出&#xff0c;异常处理要实现 try catch也比较麻烦…

等级保护安全的管理机构与管理制度

目录 安全管理机构的控制点 岗位设置 人员配备 授权和审批 沟通和合作 审核和检查 安全管理制度的控制点 安全管理制度 指定和发布 评审和修订 安全管理机构的控制点 岗位设置 人员配备 授权和审批 沟通和合作 审核和检查 安全管理制度的控制点 安全管理制度 指定…

云卷云舒:算力网络+云原生(中):探索构建算力网络数据库

一、导言 1、基础要求&#xff1a;算力网络时代&#xff0c;数据类型、范围充分延展和爆发&#xff0c;数据库也要适应起来&#xff0c;分布式数据库是起步要求&#xff1b; 2、近期需求&#xff1a;通过云服务的方式提供算网时代&#xff0c;尤其是智能大模型所需要的向量数…

042、文本与语言模型

之——nlp基础 目录 之——nlp基础 杂谈 正文 1.文本预处理 2.语言模型 3.语言模型实现 杂谈 在语言模型中&#xff0c;需要对文本进行预处理&#xff0c;进行数字化的一系列操作&#xff0c;而后才能进行网络的拟合。 以前的相关&#xff1a;词性判断 正文 1.文本预处…

简易的555函数信号发生器电路图

函数信号发生器是一种信号发生装置&#xff0c;能产生某些特定的周期性时间函数波形&#xff08;正弦波、方波、三角波、锯齿波和脉冲波等&#xff09;信号&#xff0c;频率范围可从几个微赫到几十兆赫。除供通信、仪表和自动控制系统测试用外&#xff0c;还广泛用于其他非电测…

基于深度学习的安全帽检测识别系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov5 yolov5主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM、CA等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主…

输入url后回车发生了什么(持续更新)

在大多数情况下&#xff0c;浏览器被认为是单线程的。也就是说&#xff0c;他们从头到尾执行一项任务&#xff0c;然后再开始另一项任务。为了实现流畅的交互&#xff0c;开发人员的目标是确保高性能的站点交互&#xff0c;从平滑滚动到触摸响应。渲染时间是关键&#xff0c;确…

Wireshark网络工具来了

Wireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包&#xff0c;并尝试显示包的尽可能详细的情况。 Wireshark是一个免费开源软件&#xff0c;不需要付费&#xff0c;免费使用&#xff0c;可以直接登陆到Wireshark的官网下载安装。 在windows环境中&#x…

FPFA.一种二倍频电路代码描述以及测量详情

一、前言 1、因为需要倍频电路所以找了个二倍频的电路&#xff0c;通过fpga实际测量发现经过倍频后的电路峰值降低。不过这个也正常&#xff0c;因为该电路只要过触发点就会开始发生波形变化&#xff0c;而电路的触发值不是峰值。​​​​​​​ 2、继续对电路做倍频后信号做二…

LeetCode_Java判断给出的字符串是否是合法的括号序列

public class BracketSequence {public static void main(String[] args) {System.out.println(isValid("([])"));}public static boolean isValid(String s) {if(snull || s.length()0){return true;}//新建栈&#xff0c;用以存储左括号Stack<Character> sta…

嵌入式开发常见的3个C语言技巧

​1.操作寄存器 在嵌入式开发中&#xff0c;常常要操作寄存器&#xff0c;对寄存器进行写入&#xff0c;读出等等操作。每个寄存器都有自己固有的地址&#xff0c;通过C语言访问这些地址就变得尤为重要。 #define GSTATUS1 (*(volatile unsigned int *)0x560000B0)在这里…

国外加固Appdome环境检测与绕过

文章目录 前言第一部分&#xff1a;定位检测逻辑的通用思路1. 通过linux“一切皆文件”思路定位2. 分析现有检测软件猜测可能检测点3. 通过正向开发思路定位4. 通过activity及弹窗定位 第二部分&#xff1a;检测结果展示整体流程1. Jni反射调用doDispath完成广播发送2. NativeB…