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中呢还有一个关于设置优先级的系统调用接口:

相关文章:
Linux操作系统——进程(三) 进程优先级
进程优先级 首先呢,我们知道一个进程呢(或者也可以叫做一个任务),它呢有时候要在CPU的运行队列中排队,要么有时候阻塞的时候呢又要在设备的等待队列中排队,其实我们排队的本质就是:确认优先级。…...
插入排序详解(C语言)
前言 插入排序是一种简单直观的排序算法,在小规模数据排序或部分有序的情况下插入排序的表现十分良好,今天我将带大家学习插入排序的使用。let’s go ! ! ! 插入排序 插入排序的基本思想是将待排序的序列分为已排序和未排序两部分。初始时,…...
Json和Xml
一、前言 学习心得:C# 入门经典第8版书中的第21章《Json和Xml》 二、Xml的介绍 Xml的含义: 可标记性语言,它将数据以一种特别简单文本格式储存。让所有人和几乎所有的计算机都能理解。 XML文件示例: <?xml version"1.…...
STM32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件
资料下载: https://download.csdn.net/download/vvoennvv/88658447 一、概述 关于IAP的原理和Ymodem协议,本文不做任何论述,本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级,以及bootloader和主程序两个工程的配置…...
【SVN】centos7搭建svn--亲测能通
centos7.6搭建svn 1 知识小课堂1.1 CentOS1.2 SVN 2 搭建过程2.1 前期准备2.2 通过yum命令安装svnserve2.3 创建版本库目录2.4 创建svn版本库2.5 配置修改2.5 防火墙配置2.6 启动或关闭svn服务器2.6.1 进程守护2.6.2 检测svn端口3690是否已经监听:2.6.3 关闭SVN 2.7…...
MY FILE SERVER: 1
下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 首先我们需要发现ip 我的kali是59.162所以167就是靶机的 然后我们拿nmap扫一下端口 nmap -sV -p- 192.168.59.167 扫完发现有七个端口开放 按照习惯先看80 没看到有啥有用信息,用nikto扫一下 nik…...
Day70力扣打卡
打卡记录 收集足够苹果的最小花园周长(找规律 二分) 链接 class Solution:def minimumPerimeter(self, neededApples: int) -> int:l, r 1, 10 ** 5while l < r:mid (l r) >> 1if 2 * (2 * (mid ** 3) 3 * (mid ** 2) mid) > nee…...
3. 行为模式 - 迭代器模式
亦称: Iterator 意图 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此, 集合只是一组对象的…...
rsync文件同步
场景:主要是用来发布文件。 一、rsync服务器端架设 1、安装 wget https://download.samba.org/pub/rsync/src/rsync-3.0.6.tar.gz tar -zxvf rsync-3.0.6.tar.gz ./configure --prefix/usr/local/rsync make make install 2、配置 2.1、配置rsyncd.conf 不存在…...
docker 安装mysql 8.0.35
1.拉取镜像 docker pull mysql:8.0.35 2.创建相关挂载目录与文件 mkdir -p /opt/mysql8/conf mkdir -p /opt/mysql8/data mkdir -p /opt/mysql8/logs 或者:mkdir -p /opt/mysql8/{data,conf,logs,mysqld,mysql-files} 文件与文件夹授权:chmod -R 775 /opt/mysql8/* 3.运…...
力扣labuladong一刷day46天并查集
力扣labuladong一刷day46天并查集 文章目录 力扣labuladong一刷day46天并查集一、323. 无向图中连通分量的数目二、130. 被围绕的区域三、990. 等式方程的可满足性 一、323. 无向图中连通分量的数目 题目链接:https://leetcode.cn/problems/number-of-connected-co…...
C++11(上):新特性讲解
C11新特性讲解 前言1.列表初始化1.1{ }初始化1.2std::initializer_list 2.类型推导2.1 auto2.2 typeid2.3 decltype 3.范围for4.STL的变化4.1新容器4.2容器的新方法 5.右值引用和移动语义5.1 左值引用和右值引用5.2 左值引用与右值引用比较5.3 右值引用的使用场景5.4 右值、左值…...
将mapper.xml保存为idea的文件模板
将mapper.xml保存为idea的文件模板 在idea的File and Code Templates中将需要使用模板的内容添加为模板文件。 那么接下来请看图,跟着步骤操作吧。 mapper.xml文件内容 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper P…...
LabVIEW在横向辅助驾驶系统开发中的应用
LabVIEW在横向辅助驾驶系统开发中的应用 随着横向辅助驾驶技术的快速发展,越来越多的研究致力于提高该系统的效率和安全性。项目针对先进驾驶辅助系统(ADAS)中的横向辅助驾驶进行深入研究。在这项研究中,LabVIEW作为一个强大的系…...
STM32移植LVGL图形库
1、问题1:中文字符keil编译错误 解决方法:在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。 问题2:LVGL中显示中文字符 使用 LVGL 官方的在线字体转换工具: Online font converter -…...
迪文屏开发保姆级教程5—表盘时钟和文本RTC显示
这篇文章要讲啥事呢? 本篇文章主要介绍了在DGBUS平台上使用表盘时钟和文本时钟RTC显示功能的方法。 文哥悄悄话: 官方开发指南PDF:(不方便下载的私聊我发给你) https://download.csdn.net/download/qq_21370051/8864…...
免费IDEA插件推荐-Apipost-Helper
IDEA插件市场中的API调试插件不是收费(Fast Request )就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用! 这款插件由Apipost团队开发的…...
Django(二)
1.django框架 1.1 安装 pip install django3.21.2 命令行 创建项目 cd 指定目录 django-admin startproject 项目名mysite ├── manage.py [项目的管理工具] └── mysite├── __init__.py├── settings.py 【配置文件,只有一部分…...
Kafka集群架构服务端核心概念
目录 Kafka集群选举 controller选举机制 Leader partition选举 leader partition自平衡 partition故障恢复机制 follower故障 leader故障 HW一致性保障 HW同步过程 Epoch Kafka集群选举 1. 在多个broker中, 需要选举出一个broker, 担任controller. 由controller来管理…...
【vscode插件】之插件图标设置
ChatgGPT4.0国内站点: 海鲸AI-支持GPT(3.5/4.0),文件分析,AI绘图 在Visual Studio Code中创建插件时,你可以为你的插件设置一个图标,这个图标会在VS Code的插件市场和插件侧边栏中显示。以下是设置插件图标的步骤: 准备…...
OdinSerializer扩展开发完全手册:创建自定义序列化组件
OdinSerializer扩展开发完全手册:创建自定义序列化组件 【免费下载链接】odin-serializer Fast, robust, powerful and extendible .NET serializer built for Unity 项目地址: https://gitcode.com/gh_mirrors/od/odin-serializer OdinSerializer是一款专为…...
ThinkPad风扇控制终极指南:5分钟告别噪音与过热烦恼
ThinkPad风扇控制终极指南:5分钟告别噪音与过热烦恼 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否曾因ThinkPad风扇的"直升机起飞"声而烦…...
XXMI启动器终极指南:一站式游戏模组管理平台,轻松实现二次元游戏个性化
XXMI启动器终极指南:一站式游戏模组管理平台,轻松实现二次元游戏个性化 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款功能强大的开源游…...
研扬EPIC-RPS9工控主板解析:4英寸板载13代酷睿,赋能边缘AI与机器视觉
1. 项目概述:当“小钢炮”遇上工业严苛环境在工业自动化、边缘计算和嵌入式视觉这些领域里,我们常常面临一个经典矛盾:既要强大的算力来处理海量数据、运行复杂算法,又要设备足够紧凑、坚固,能塞进各种空间受限、环境恶…...
大语言模型智能体长期记忆解决方案:LightMem架构解析与LangChain实战
1. 项目概述:轻量化记忆增强的智能体新范式最近在探索大语言模型智能体应用时,一个核心痛点始终绕不开:如何让智能体在长对话或多轮任务中,记住关键信息,并做出连贯、精准的决策?传统的做法要么是将整个对话…...
提供充电桩运维托管的服务商:选择标准与服务内容解析
一、引言据中国电动汽车充电基础设施促进联盟(EVCIPA)数据显示,截截至2026年2月底,我国电动汽车充电基础设施(枪)总数达到2101.0万个,同比增长47.8%。其中,公共充电设施(…...
Adafruit Bluefruit LE模块AT命令实战:从BLE透传到Eddystone信标与HID设备开发
1. 项目概述与核心价值如果你正在开发一个需要无线连接功能的物联网设备、可穿戴设备或者创意交互项目,那么蓝牙低功耗(BLE)技术几乎是一个绕不开的选择。它功耗低、连接快,并且被现代智能手机和电脑广泛支持。然而,直…...
Arm MPS3 FPGA开发板LED闪烁控制实战
1. 项目概述在嵌入式系统开发领域,FPGA(现场可编程门阵列)因其可重构特性成为硬件原型设计的首选平台。Arm MPS3 FPGA开发板作为一款功能强大的原型验证工具,为开发者提供了从算法验证到系统集成的完整解决方案。本次我们将通过经…...
【DeepSeek偏见测试权威报告】:20位AI伦理专家联合验证的5大隐性偏差漏洞及规避指南
更多请点击: https://intelliparadigm.com 第一章:DeepSeek偏见测试的权威性与方法论基石 DeepSeek系列模型在开源社区引发广泛关注,其偏见评估并非依赖单一指标,而是构建于多维度、可复现的方法论体系之上。权威性源于三重验证机…...
LSMO薄膜金属-绝缘体相变及其随机性应用研究
1. 理解LSMO薄膜中的随机性现象La0.67Sr0.33MnO3(LSMO)是一种典型的强关联电子体系材料,其独特的金属-绝缘体相变(MIT)特性为开发新型计算范式提供了物理基础。这种材料在相变临界区域表现出的随机性行为,源…...
