Linux->进程优先级

news2024/11/6 7:25:54

目录

1. 优先级的概念

2. 优先级的运作方式

3. Linux下查看进程优先级以及调整

3.1 查看进程优先级

3.2 修改进程优先级


1. 优先级的概念

1. cpu资源分配的先后顺序,就是指进程的优先权(priority)。
2. 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。

3. 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

         对于上面的概念想必大家都是能够理解的,我也不多做解释,但是我想提一个问题:为什么要出现优先级,所有的进程都规规矩矩的排队等资源不好吗?就像是我们现实当中排队一样,谁都不喜欢被插队。

        我以我们吃食堂为例:因为上面问题中提出需要所有人乖乖排队,那么证明了什么?我们都是同样的重要,那我们吃饭这一件事情上都是处于同一量级,平时我们都是乖乖的排队,但是某一天,排队的人特别多,多到要等待一个多小时才能吃到饭,然后你呢有快要被饿死了,此时我们就会抱怨,为什么食堂不给我们每一个人单独开一个窗口?这样我们就不用排队了,效率也上去了。

        可实际上不是说食堂不想,而是口袋里的资金有点紧缺,导致了只能开这么多个窗口,没办法,拿资源只有这么多,想要先吃饭应该怎么办呢?这个时候你就想到我可是食堂老板的好大儿,我排什么队,所以你直接冲进后厨,让厨师先给你做,厨师想到要是不满足你,你就要把厨房给他砸了,其他人也都吃不到了,就给你先做了饭,于是你也如愿以偿的吃到了饭。

        上面的你就代表优先级特别高的进程,食堂就是操作系统,其它人就是普通进程。其实也可以想到,这个进程的运行是为了维持操作系统不崩溃,操作系统肯定得让你先得到资源呗,否则其它进程都别想被执行了。也就表示优先级的出现是为了维护操作系统的稳定,让资源分别更好合理。

2. 优先级的运作方式

        通过对于我前几篇对于操作系统的讲解,相信大家也是能知道一个进程等于内核相关的数据结构加上代码和数据组成。没看过也没关系请看下方链接:

http://t.csdn.cn/4OSht        

http://t.csdn.cn/Q1GwT

http://t.csdn.cn/WJ2HF

         也就是说,当我们的CPU要执行某一个进程,一定是先拿到它的PCB结构体,而很多的PCB结构体是通过特定的数据结构而连接起来的。

         

         上面的两张图就是进程在操作系统中的运作方式。

3. Linux下查看进程优先级以及调整

3.1 查看进程优先级

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

         PRI对于我们来说是很好理解的,也就是进程的优先级,也就是进程执行的先后顺序,注意:进程优先级的值越小表示优先级越高。

        NI是什么?NI就是nice,表示我们的进程优先级的修正值,也就是我们只能通过改变NI来改变进程的优先级。计算公式为:PRI(new) = PRI(old)+NI。还有一点,这里的PRI(old)表示这个进程一开始是多少,那就是多少,不会随之而改变。

        基于这一点其实有一个原因,那就是nice值是有一个范围的,它的取值范围是-20~19之间,也就表示操作系统不会让我们胡乱调整进程之间的优先级的。那么PRI(old)一直是一个值也能理解了,如果我们先将PIR更改称为60,然后又在这个基础上-20,这不就失去了nice值范围的意义了吗。

3.2 修改进程优先级

        通过输入top进入Linux内部的任务管理器,然后按下‘r’键,输入进程的PID,最后输入需要修改的nice值。

进入top后按“r”–>输入进程PID–>输入nice值

         先在Linux下写一段简单的无线循环代码,表示我们的进程正在运行。

  1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<unistd.h>
  4 
  5 int main()
  6 {
  7   while(1)
  8   {
  9     printf("我的PID是%d,PPID是%d\n",getpid(),getppid());
 10     sleep(1);                                              
 11   }
 12 
 13   return 0;
 14 }

         通过运行得到PID值。

        通过ps -al 看到正在运行。

         进入top,按下r,输入PID

         然后输入nice值,然后再查看它的优先级已经被更改。 

        还有一点值得一提,当我们处于普通用户下,NI值得范围只有0~19,小于这个值都会提示权限不足这个情况,所以,如果有一个进程我们想要提高它的优先级必须切换成为root用户才行。


        以上就是我对进程优先级的全部理解了,希望大家多多支持咯。 

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

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

相关文章

数据结构:二叉树概念篇(算法基础)

目录 一.有向树的图论基础 1.有向树的相关基本概念 有向树的基本定义: 有向树的结点的度&#xff1a; 有向树的度: 有向树的根结点,分枝结点,叶结点: 树的子树: 树结点的层次: 树的高度: 2.一个基本的数学结论 3.有序有向树 二.数据结构中树的顺序存储结构与链式存…

【华为OD机试模拟题】用 C++ 实现 - 星际篮球争霸赛(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

【log】操作类日志处理 与 报错类日志处理logback

文章目录一、操作类日志处理【环绕增强】aop环绕增强导包第一步&#xff1a;自定义注解interface第二步&#xff1a;在Controller写一个测试的方法&#xff1a;第三步&#xff1a;编写LogAspect增强类与增强方法日志写入数据库&#xff08;使用mybatis&#xff09;第一步&#…

C/C++每日一练(20230225)

目录 1. 工龄问题求解 ★ 2. 字符图形输出 ★★ 3. LRU 缓存机制 ★★★ 1. 工龄问题求解 给定公司N名员工的工龄&#xff0c;要求按工龄增序输出每个工龄段有多少员工。输入首先给出正整数N&#xff0c;即员工总人数&#xff1b; 随后给出N个整数&#xff0c;即每个员工…

图像分割评价指标:Dice和MIoU

目录Dice理论代码MIou理论查准率 precison查全率 recallMIoU 平均交并比代码高效的矩阵运算低效的好理解的计算混淆矩阵Dice和MIoU两者的关系参考链接Dice 理论 Dice用来衡量预测结果pred和标签label的相似度&#xff0c;公式如下图所示&#xff0c;即两个集合的交集/并集。 …

Java-多线程-增强篇-锁强化第3篇

Java集合框架中的锁 今天我们继续来学习锁 字符串操作中的锁 String是线程安全的&#xff0c;因为使用final修饰Stringbuilder 是线程不安全的&#xff0c;其方法没有使用synchronized修饰StringBuffer 是线程安全的&#xff0c;其方法使用synchronized修饰 List集合中的锁 …

【人工智能 AI】可以从 RPA 中受益的 10 个行业 10 Industries That Can Benefit From RPA

目录 RPA技术介绍 Which industries can use robotic process automation?哪些行业可以使用机器人过程自动化? Robotic process automation in the retail industry零售业中的机器人过程自动化 Robotic process automation in the construction industry建筑行业的机器人…

RebbitMQ 消息队列(高级应用)

RabbitMQ 高级特性 消息可靠性投递&#xff0c;consumer ACK&#xff0c;消费端限流&#xff0c;TTL&#xff0c;死信队列&#xff0c;延迟队列&#xff0c;日志与监控&#xff0c;消息可靠性与追踪&#xff0c;管理 RabbitMQ 应用问题 消息可靠性保障&#xff0c;消息幂等性…

JavaScript 基础【快速掌握知识点】

目录 为什么要学JavaScript? 什么是JavaScript 特点&#xff1a; 组成&#xff1a; JavaScript的基本结构 基本结构 内部引用 外部引用 console对象进行输出 JavaScript核心语法 1、变量声明 2、数据类型 3、运算符 4、条件语句 5、循环语句 6、数组 7…

【shell】for while 循环的例子,快速了解

for 循环读一个文件的每一行 for i in cat temp.list;do echo $i;done for ip in $(cat ip.list);do ping -c 2 $ip;done循环打印数字 for a in {1…5};do echo $a;done for a in {1…5…2};do echo $a;done #等差 for a in $(seq 1 5);do echo $a;done for a in $(seq 1 2 5)…

内网穿透常用方法系列总结

前言在内网渗透时&#xff0c;一个WebShell或CobaltStrike、Metasploit上线等&#xff0c;只是开端&#xff0c;更多是要内网横向移动&#xff0c;扩大战果&#xff0c;打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”&#xff0c;才能进一步攻击。可实战中…

【华为OD机试模拟题】用 C++ 实现 - 找出重复代码(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

C语言static关键字

目录static修饰局部变量static修饰全局变量static修饰函数static是C语言的关键字&#xff0c;它有静态的意思static的三种用法&#xff1a;修饰局部变量修饰全局变量修饰函数 static修饰局部变量 我们先看一个程序&#xff1a; void print() {int a 0;a;printf("%d\n&…

【华为OD机试模拟题】用 C++ 实现 - 数组组成的最小数字(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

更改tomcat访问端口()

1Centos7开启端口 查看防火墙状态命令&#xff1a; systemctl status firewalld 启动防火墙命令&#xff1a; systemctl start firewalld 关闭防火墙命令&#xff1a; systemctl stop firewalld 开放端口命令&#xff1a; firewall-cmd --zonepublic --add-port5011/tcp --pe…

23、高自由度下的E类波形理论计算(附Matlab代码)

23、高自由度下的E类波形理论计算&#xff08;附Matlab代码&#xff09; 0、代码 任意占空比、电压导数条件下的E类波形与阻抗条件计算Matlab 注意修改路径&#xff0c;我这边是&#xff1a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#…

自适应池化、最大值池化和均值池化效率的比较分析

1 问题我们在深度学习的过程中&#xff0c;我们学到了自适应池化、最大值池化和均值池化。那么&#xff0c;我们想要探究一下自适应池化、最大值池化和均值池化效率&#xff0c;哪一个更高&#xff1f;2 方法在之前的学习中&#xff0c;我们学到了自适应池化、最大值池化和均值…

c++11 标准模板(STL)(std::unordered_set)(八)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…

【Rust 日报】2023-2-24 Dioxus 0.3 发布,巨大的更新

ascii-d - 画ASCII示意图的工具Rust写的画ASCII示意图的工具。支持各大平台。程序员的最爱啊。https://github.com/huytd/ascii-d/raw/master/_meta/toolbar-final.gifDioxus 0.3 发布&#xff0c;巨大的更新Dioxus 是新出的与 Yew 类似的 Rust Web 前端框架&#xff08;为什么…

【sciter】sciter数据可视化

一、柱状图 <div class="bar-chart item"></div> <!-- bar-chart --> <script type