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.mzph.cn/pingmian/13265.shtml

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

相关文章

Redis教程(三):Redis的五种基本数据类型

String(字符串) 字符串 String 是 Redis 最简单的数据结构,可以存储字符串、整数或者浮点数,常用于存储对象。 List(列表) 列表List相当于 Java 语言里面的 LinkedList,插入性能高&#xff0…

特征衍生-多变量交叉组合特征衍生

https://www.bilibili.com/video/BV1Kg411n7jv?p21&vd_source08e23da22e328e8950aeb24d2001d586

【LeetCode】每日一题:1953.你可以工作的最大周数

给你 n 个项目,编号从 0 到 n - 1 。同时给你一个整数数组 milestones ,其中每个 milestones[i] 表示第 i 个项目中的阶段任务数量。 你可以按下面两个规则参与项目中的工作: 每周,你将会完成 某一个 项目中的 恰好一个 阶段任务。…

用ffmpeg和EasyDARWIN实现推流

步骤: 1.配置easydarwin-ini里面的端口,打开easydarwin.exe 查看端口号是否成功,若不成功,则需要修改 2.在web网页打开 http://localhost:10008/ 看是否成功 3.用ffmpeg打开视频 ffmpeg.exe -re -i C:/22/Rec_20200903.mp4 -v…

1757. 可回收且低脂的产品

1757. 可回收且低脂的产品 题目链接:1757. 可回收且低脂的产品 代码如下: # Write your MySQL query statement below select product_id from Products where low_fatsY and recyclableY

.NET 4.8和.NET 8.0的区别和联系、以及查看本地计算机的.NET版本

文章目录 .NET 4.8和.NET 8.0的区别查看本地计算机的.NET版本 .NET 4.8和.NET 8.0的区别 .NET 8.0 和 .NET 4.8 之间的区别主要体现在它们的发展背景、目标平台、架构设计和功能特性上。下面是它们之间的一些主要区别: 发展背景: .NET 4.8 是.NET Fram…

C++(23): C++:STL中的时间库(std::chrono)

1. 简述 C STL库中的 chrono 是一个关于日期和时间的库,它提供了一套丰富、灵活且类型安全的API,用于测量和操作时间。chrono 库是C11标准的一部分,它使得我们可以进行高精度的时间测量,以及执行基于时间点的算术操作。 2. chron…

JVM中的垃圾回收器是如何工作的?

JVM(Java Virtual Machine)中的垃圾回收器负责自动管理内存,它通过识别并释放不再被程序使用的对象来回收堆内存。以下是垃圾回收器的基本工作原理: 标记-清除(Mark-Sweep)算法: 初始时&#x…

美港通正规炒股市场沪指收跌0.82% 证券板块调整

5月15日电 15日,A股三大指数集体下挫。上证指数跌0.82%,报3119.9点;深证成指跌0.88%,报9583.54点;创业板指跌0.9%,报1838.89点。沪深京三市成交额7651亿元,其中沪深两市7611亿元,较上日缩量635亿元。沪深两市超3800只个股下跌。 美港通证券以其专业的服务和较低的管理费用在市…

数字集成电路物理设计[陈春章]——知识总结与精炼02

第二章 物理设计建库与验证 2.1 集成电路工艺与版图 自行了解,关于闩锁效应可查阅小编之前的文章。 2.2 设计规则检查(DRC) 定义:晶圆代工厂对各自不同工艺参数制定出满足芯片制造良率的同一工艺层及不同工艺层之间几何尺寸的…

ROS学习笔记(15)小车巡墙驾驶

0.前提 前一章我讲解了拉氏变换和PID,这一章我来讲解一下小车巡墙驾驶的理论和部分代码。 1.前情回顾 1.拉氏变换 拉普拉斯变换是要将时域问题转换成频域问题来处理。 2.PID控制器 转向角: 误差牺牲: 3.具体参看上一篇文章 2.巡墙驾驶…

「AIGC算法」图搜索算法详解

本文主要介绍图搜索算法详解和简单实例 一、原理 图搜索算法是一组用于在图结构数据上执行搜索任务的算法。图由顶点(或称为节点)和边组成,广泛应用于表示各种关系,如网络、路径、社交关系等。图搜索算法可以分为两大类&#xff…

【半监督学习】半监督学习中的时间集合

在本文中,我们提出了一种在半监督环境下训练深度神经网络的简单而高效的方法,在这种环境下,只有一小部分训练数据是有标签的。我们引入了self-ensembling技术,即利用网络在不同历时,最重要的是在不同正则化和输入增强条…

充电桩战火重燃,特来电、星星充电上演“龙虎斗”

配图来自Canva可画 小米Su7真的太火了,上市40天锁单量超过10万供不应求,给新能源汽车行业带来了新的活力,也促进了充电桩行业的发展。 据中国汽车工业协会数据,4月份新能源汽车产销分别完成87万辆和85万辆,同比分别增…

[LeetCode #202] 快乐数

目录 题目描述: 解题思路: 解题代码: 题目描述: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变…

地表最强ChatGPT爆了!我来告诉你,它都有什么用

OpenAI刚刚发布了全新的 "GPT-4o",它不仅可以通过语音、视觉和文本进行推理,还在速度和价格上有了巨大的突破。它的速度提高了2倍,价格却降低了50%,而且生成速率比GPT-4 Turbo高出5倍。最令人惊喜的是,它将对…

【prometheus】prometheus基于consul服务发现实现监控

目录 一、consul服务发现简介 1.1 consul简介 二、prometheus配置 2.1 node-exporter服务注册到consul 2.2 修改prometheus配置文件 【Prometheus】概念和工作原理介绍_prometheus工作原理-CSDN博客 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集群部署p…

Python全栈自动化测试-Python基础07--分支结构if

目录 前言 一、单项分支 二、双向分支 三、多向分支 四、巢状分支(嵌套分支) 五、if中的判断条件 1.条件--固定值 2.条件--运算符 总结 前言 在Python编程中,分支结构是一种至关重要的控制流机制,它允许程序根据特定条件…

[前端] 深度选择器deep使用介绍(笔记)

参考文献 深度选择器 深度选择器deep使用说明 在 Vue 中,为了实现组件内部样式对组件外部元素的穿透覆盖,可以使用 CSS 的 deep 选择器(也称为 >>> 或 /deep/)或 v-deep 指令。然而,这两个方法在 Vue 3 中…

C语言之旅:动态内存管理

目录 一.为什么要有动态内存分配 二.malloc和free 2.1 malloc 2.2 free 2. 3malloc和free的使用 三. calloc 四. raelloc 4.1 代码示例: 4.2 注意事项: 4.3 对动态开辟空间的越界访问 4.4 对非动态开辟内存使⽤free释放 4.5 使用free释放⼀块…