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的插件市场和插件侧边栏中显示。以下是设置插件图标的步骤: 准备…...
反激式电源设计避坑指南:如何优化5V/2A方案的EMI和效率
反激式电源设计避坑指南:如何优化5V/2A方案的EMI和效率 在中小功率电源设计中,反激式拓扑凭借结构简单、成本低廉的优势占据主流地位。但当工程师面对5V/2A这类常见规格时,往往会陷入效率卡在65%难以提升、EMI测试屡次失败的困境。本文将从实…...
终极指南:在PC上完美运行PS4游戏的秘密武器
终极指南:在PC上完美运行PS4游戏的秘密武器 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 你是否曾经梦想过在电脑上畅玩那些只能在PS4上体验的独占大作?今天ÿ…...
YOLOE官版镜像案例分享:文本提示检测自定义物体实战
YOLOE官版镜像案例分享:文本提示检测自定义物体实战 1. 引言:开放词汇表检测的挑战与突破 在传统计算机视觉应用中,目标检测模型往往受限于预定义的类别集合。当需要检测训练数据中未出现的新物体时,开发者不得不重新收集数据、…...
GLM-4v-9b行业落地:跨境电商商品图多语言描述生成自动化方案
GLM-4v-9b行业落地:跨境电商商品图多语言描述生成自动化方案 1. 引言:跨境电商卖家的共同痛点 如果你是做跨境电商的,下面这个场景你一定不陌生:仓库里堆满了新品,运营同事催着要上架,但每个商品都需要准…...
应对维普AIGC史诗级升级:2026降重急救包!5款工具基准测试 x 4大手改重构技巧
论文初稿快要交了,维普却突然搞了个大动作,把系统给升级了。说实话,这事真挺让人头疼的,有人前两天查还是绿的,以为稳了,结果升级完再一测,AI率直接飙红。 但别慌,也别怀疑自己是不…...
PingFangSC跨平台字体解决方案:企业级部署与性能优化指南
PingFangSC跨平台字体解决方案:企业级部署与性能优化指南 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在数字化转型浪潮中,企业…...
APK Studio安全最佳实践:合规使用逆向工程工具
APK Studio安全最佳实践:合规使用逆向工程工具 【免费下载链接】apkstudio Open-source, cross platform Qt based IDE for reverse-engineering Android application packages. 项目地址: https://gitcode.com/gh_mirrors/ap/apkstudio 在移动应用开发与安全…...
从Tcl脚本到实战:用Innovus自动化完成数字IC后端设计的5个高效技巧
从Tcl脚本到实战:用Innovus自动化完成数字IC后端设计的5个高效技巧 在数字IC后端设计领域,效率提升往往意味着项目周期的缩短和设计质量的提高。对于已经掌握Innovus基础操作的中级工程师而言,如何从手动点击界面过渡到自动化脚本驱动的工作流…...
16-Kotlin高阶特性-Lambda详解
Kotlin Lambda 表达式完全指南Lambda 表达式是 Kotlin 函数式编程的核心特性之一,它让代码更简洁、表达力更强。无论是集合操作、协程、还是 Jetpack Compose 中的 UI 回调,都大量使用 lambda。本文将系统讲解 Kotlin lambda 的语法形式、含义、各种语法…...
3个步骤掌握163MusicLyrics:多平台歌词提取与管理完全指南
3个步骤掌握163MusicLyrics:多平台歌词提取与管理完全指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾为找不到老歌的歌词而翻遍全网?…...
