【Linux跬步积累】—— 进程优先级

(73)DC什么意思?Linux基本命令使用?脚本语言shell、tcl 1.1DC什么意思?Linux基本命令使用?脚本语言shell、tcl 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)DC什么意思?Linux基本命令使用?脚本语言shell、tcl; 5)结束语。 1.1.2 本节引言 “不积跬步,无以至千里;不积小流,无以成江海。就是说:不积累一步半步的行程,就没有办法达到千里之远;不积累细小的流水,就没有办法汇成江河大海。 1.1.3 FPGA简介 FPGA(Field Programmable Gate Arra. 阅读详情

🌏博客主页:PH_modest的博客主页
🚩当前专栏:Linux跬步积累
💌其他专栏:
🔴 每日一题
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!


进程优先级

基本概念

什么是优先级?

优先级实际上就是获取某种资源的先后顺序,进程要访问某种资源,进程通过一定的方式(排队),确认享受资源的先后顺序。换句话说,进程优先级就是进程获取CPU资源分配的先后顺序,就是指进程的优先权(priority),优先权高的进程有优先执行的权利。

优先级存在的原因?

优先级存在的主要原因就是资源是相对有限的,而存在进程优先级的主要原因就是CPU资源是有限的,一个CPU一次只能跑一个进程,而进程是可以有多个的,所以需要存在进程优先级,来确定进程获取CPU资源的先后顺序。

如何实现进程优先级?

struct task_struct
{
	//优先级
	int PRI;
	int nice;
}

查看系统进程

如何查看?

在Linux或则Unix操作系统中,用 ps -l 命令会类似输出一下几个内容:

[hph@hecs-345360 demo-8-8]$ ps -l

在这里插入图片描述
列出的信息当中有几个重要的信息,如下:

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

PRI 与 NI

  • PRI代表进程的优先级(priority),通俗点说就是进程被CPU执行的先后顺序,该值越小进程的优先级别越高。
  • NI代表的是nice值,其表示进程可被执行的优先级的修正数值。
  • PRI值越小,越快被执行,当加入nice值后,将会使得PRI变为:PRI(new) = PRI(old) + NI。
  • 若NI值为负值,那么该进程的PRI将变小,即其优先级会变高。
  • 调整进程优先级,在Linux下,就是调整进程的nice值。
  • NI的取值范围是-20~19,一共40个级别。

注意: 在Linux操作系统中,PRI(old)默认为80,即PRI = 80 + NI。

PRI vs NI

  • 需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。
  • 可以理解nice值是进程优先级的修正数据。

查看优先级的命令

查看进程优先级信息

当我们创建了一个进程后,我们可以使用 ps -al 命令查看该进程优先级的信息。

[hph@hecs-345360 demo-8-8]$ ps -al

在这里插入图片描述
注意: 在Linux操作系统中,初始进程一般优先级PRI默认为80,NI默认为0。

通过top命令更改进程的nice值

top命令就相当于Windows操作系统中的任务管理器,它能够动态实时的显示系统当中进程的资源占用情况。
在这里插入图片描述
使用top命令后按“r”键,会要求你输入待调整的nice值的进程的PID。
在这里插入图片描述
输入进程PID并回车后,会要求你输入调整后的nice值。
在这里插入图片描述
输入nice值后“q”即可退出,如果我们这里输入的nice值为10,那么此时我们再用ps命令查看进程的优先级信息,即可发现进程的NI变成了10,PRI变成了90(80+NI)。
在这里插入图片描述
注意: 若是想将NI值调为负值,也就是将进程的优先级提高,需要使用sudo命令提升权限。

通过renice命令更改进程的nice值

使用renice命令,后面跟上更改后的nice值和进程的PID即可。
在这里插入图片描述
这里我将PID为18990的nice值改为10,它的PRI相应的变成了90。

但是PID为19175的进程的PRI和NI值也变了,这是为什么呢?
不难看出,19175进程的父进程是18990,在某些系统中,当父进程的 nice 值被更改时,子进程的 nice 值也会被自动更新以匹配父进程的 nice 值。这是一种确保进程组内所有进程具有相同优先级的行为。

四个重要概念

  • 竞争性:系统进程数量众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便有了优先级。
  • 独立性(重要):多进程运行时,需要独享各种资源,多进程运行期间互不干扰。
  • 并行:多个进程在多个CPU下分别同时进行运行,这称之为并行。
  • 并发:多个进程在一个CPU下采用进程切换的方式,在一段时间内,让多个进程都得以推进,称之为并发。

其他知识点

(1)优先级是决定执行的顺序;权限是决定能不能执行。

(2)进程在运行的时候,放在CPU上,必须把进程代码跑完才行吗?

答:不对。现代操作系统,都是基于时间片轮转执行的。

(3)什么是硬件上下文?

答:硬件上下文(Hardware Context)通常指的是在计算机系统中,CPU 需要处理的指令和数据的物理状态和配置。当 CPU 执行程序时,它需要访问和操作内存、寄存器、输入/输出设备等硬件资源。硬件上下文切换(Hardware Context Switch)发生在操作系统调度程序从一个进程或线程切换到另一个进程或线程时。

在进行上下文切换时,操作系统需要保存当前进程的硬件状态(如寄存器值、程序计数器等),并恢复下一个要执行的进程的硬件状态。这个过程包括以下几个步骤:

  • 保存当前状态:操作系统将当前进程的寄存器、程序计数器等状态保存到它的进程控制块(PCB)或其他内存区域。

  • 更新内存映射:如果新进程需要不同的内存页面或段,操作系统将更新内存映射。

  • 加载新状态:操作系统从下一个要执行的进程的 PCB 加载寄存器值、程序计数器等信息。

  • 更新控制寄存器:操作系统可能需要更新控制寄存器,如堆栈指针、程序状态寄存器等。

  • 恢复执行:CPU 恢复执行新的进程,从它上次停止的地方继续。

硬件上下文切换是操作系统正常运行的关键部分,但这个过程是相对昂贵的,因为它涉及到大量的数据移动和可能的内存访问。频繁的上下文切换可能会降低系统性能,因为它减少了 CPU 用于实际执行指令的时间。

在多任务操作系统中,硬件上下文切换是常见的,它允许多个进程或线程看似同时运行,尽管在任何给定时刻,只有一个进程或线程在 CPU 上执行。

(4)CPU内寄存器只有一套,寄存器内部保存的数据可以有多套。

(5)寄存器!=寄存器内容

STM32入门教程:人脸识别 STM32CubeMX配置 打开STM32CubeMX,创建一个新的工程,并选择你使用的STM32系列和具体型号。根据摄像头模块的规格,将摄像头的输出引脚连接到相应的STM32引脚上。人脸识别是一种非常常见的人工智能应用,它可以通过摄像头捕捉到的图像,识别出图像中的人脸并进行相关的分析和处理。在本教程中,我们将使用STM32开发板和相关传感器,通过指导你搭建一个基于STM32的简单人脸识别系统,并编写相应的代码来实现该功能。另外,为了达到更好的人脸识别效果,可能需要使用更高性能的处理器和更复杂的算法。 阅读详情

相关推荐

NPU、CPU和GPU

NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。

m0_60697583的博客 1755

Linux —— 查看进程命令及进程优先级

ps/top命令及进程优先级;

NapoleonCoder的博客 6316

基于Android13的系统启动流程分析(三)之FirstStageMain阶段

init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init1. Bootloader 引导当按下设备电源键时,最先运行的就是 bootloader(固化在ROM的程序),bootloader 的主要作用就是硬件设备(如 CPU、flash、内存)的初始化并加载到RAM,通过建立内存空间映射,为装载 Linux 内核做好准备,。

q1210249579的博客 5496

Linux进程的环境变量

Linux进程的环境变量

分享C/C++/Linux/网络/数据库/数据结构 2379

UE5游戏逆向实战:用FModel提取.pak文件中的3D模型(附Dumper-7避坑指南)

本文详细介绍了在UE5游戏逆向工程中使用FModel提取.pak文件中3D模型的实战技巧,包括Dumper-7工具的深度配置与避坑指南。针对UE5特有的unversioned属性系统,提供了从源码编译到智能注入的全链路解决方案,帮助开发者高效获取游戏资产并优化处理流程。

weixin_30374009的博客 495

给IC设计新人的Tessent Scan入门指南:从RTL到ATPG的完整DFT流程解析

本文为IC设计新手提供Tessent Scan的完整DFT流程指南,从RTL代码检查到ATPG测试向量生成,详细解析扫描链配置、插入及验证的关键步骤。通过实战案例和工具命令示例,帮助工程师快速掌握Tessent工具链的应用技巧,提升芯片可测试性设计的效率和质量。

weixin_32541663的博客 451

【Linux初阶】进程优先级 & 进程切换

进程优先级的基本概念,查看进程优先级,top指令修改进程优先级,进程切换的相关内容,CPU功能概括,CPU查找内存代码方法,时间片概念,进程数据保护与恢复

Captain_ldx的博客 1080

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 965

[ Linux ] 进程优先级 和 环境变量

[ Linux ] 进程优先级 和 环境变量

优快云博客 1679

万字详解YOLOv8网络结构Backbone/neck/head以及Conv、Bottleneck、C2f、SPPF、Detect等模块

YOLOv8是由Ultralytics开发的最先进的目标检测模型,推升了速度、准确性和用户友好性的界限。YOLO这一缩写代表“你只看一次”(You Only Look Once),通过在一次网络传递中同时预测所有边界框,提升了算法的效率和实时处理能力。相比之下,其他一些目标检测技术需要经过多个阶段或过程来完成检测。YOLOv8在流行的YOLOv5架构上进行了扩展,在多个方面提供了改进。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 14万+

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

新时代先锋的博客 7299

进程(三)—— 查看进程状态、进程优先级

OS 调度哪个进程(或者说给哪个进程分配资源),都是有依据的,这里的依据主要有两个,一个是进程状态,一个是进程优先级

challenglistic的博客 4796

基于 YOLOv26 的校园安全监控系统:多场景应用

本文提出了一种基于YOLOv26的校园安全监控系统,采用多场景应用架构实现对校园安全的智能监测。系统核心技术包括YOLOv26目标检测、DeepSORT目标跟踪、区域安全定义和行为分析等模块,通过边缘计算平台实现实时处理。研究构建了包含多种校园场景的专业数据集,并采用数据增强技术提升模型性能。系统可检测人员、车辆和物品等目标,分析其行为轨迹,评估安全风险并触发告警。实验结果表明,该系统能有效识别校园安全隐患,为安全管理提供智能化解决方案。

一键难忘的博客 502

【Linux跬步积累】—— 环境变量、程序地址空间、进程地址空间、Linux2.6内核进程调度队列

【Linux跬步积累】—— 环境变量、程序地址空间、进程地址空间、Linux2.6内核进程调度队列。本篇主要包含:环境变量的基本概念、常见环境变量、查看环境变量的方法、测试PATH、测试HOME、测试SHELL、和环境变量有关的命令、环境变量的组织方式、通过代码获取环境变量、通过系统调用获取环境变量、环境变量通常是具有全局属性的、程序地址空间、进程地址空间、Linux2.6内核进程调度队列

PH_modest的博客 1468

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Linux】—— 进程的基本概念、PCB、fork

摘要:进程的基本概念、描述进程-PCB、组织进程、查看进程、通过系统调用获取进程标示符、通过系统调用创建进程-fork初识

PH_modest的博客 844

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

给软件测试人的一封信,全网最佳“指路明灯“

你需要有一个核心技能。这个技能至少达到远超你的同事(包括开发岗位的同事的)平均水平。最好达到业界领先水平,且这个核心技能需要不断打磨提高。比如,。这个核心技能可以到处用:a)写测试框架:我做了web图形界面测试框架、接口测试框架、自研在我工作项目中取代pytest的测试执行器以提高执行速度和降低维护成本。b)写测试工具:包括但不限于命令行工具、脚本、针对特殊需求的压测负载生成工具,比如上次做的大量1g以上文件的上传下载测试,这种是普通测试人员拿着普通压测工具如jmeter完全不知道该怎么做的测试。

huace3852的博客 220

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux-进程的优先级

一,进程的优先级 1.cpu分配资源的先后顺序就是优先级 2.优先权高的进程有优先执行的权利, 3.可以让进程运行在指定的cpu上,改善系统整体性能 二,查看进程优先级 1.使用ps-al,可以看进程的优先级 2.PRI和NI PRi代表当前进程的优先级是多少,数字越小越快被执行,进程的优先级也越高 NI代表nice值,为修正的优先级顺序, PRI值越小越快被执行,那么加入nice值后,PRI(old)不会改变,默认80,将会使得PRI变为:PRI(new)=PRI(old)+nice

c-and-c++ It*s my life 4989

【Linux进程】进程优先级和其他概念 {查看进程优先级,PRI和NI,修改进程优先级;竞争性,独立性,并发和并行,进程上下文}

【Linux进程】进程优先级和其他概念 {查看进程优先级,PRI和NI,修改进程优先级;竞争性,独立性,并发和并行,进程上下文}

52Herzt的博客 2616

Linux- 进程的优先级

这里我们将nice值设置为10,然后再看看进程的优先级变化PRI值变为了90,NI值变为了10.那么我们再讲NI值设置一次为15,PRI值会变成多少呢?这里我们可以看到 PRI值变为了95,NI值变为了15.所以这就说明 PRI(new) = PRI(old)+ NI那我们再来试一试如果nice设置为-100会怎么样?注意:我这里是用的sudo top (用了超级管理员身份)才能修改这么大的nice值。

fengjunziya的博客 612

【Linux系统】进程优先级

本文详细讲解:Linux系统中进程优先级的概念、如何通过 nice 值手动调整进程优先级、nice 值的范围与限制、进程优先级的应用:进程并发和并行

从不依靠,从不寻找,非常沉默,非常骄傲。 你必须非常努力,才能看起来毫不费力。 1844

[Linux入门]---进程优先级

竞争性:资源是有限的,而进程有很多个,注定了进程之间是竞争关系;如果我们进程长时间得不到CPU资源,进程的代码将无法推进,在用户层面,表现为该进程应用无法响应;所以操作系统必须保证进程良性竞争,确认进程的优先级。权限决定的是某进程能不能访问资源,优先级是在拥有访问某资源权限的情况下,决定访问该资源的先后顺序。:代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号。:代表这个进程可被执行的优先级,其值越小越早被执行。:代表这个进程的nice值。问题1:权限与优先级的区别。: 代表这个进程的代号。

m0_74288306的博客 478

linux下查看系统进程优先级命令,Linux 进程优先级查看及调整

首先用top或者ps -l查看进程会发现有PR(PRI) NI两个字段:NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0。进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。查看进程优...

weixin_33643727的博客 2441

Linux------进程优先级与进程切换

首先我们得知道一个进程总是需要排队的,他一会在运行队列中排队等待运行,一会在设备的等待队列中排队,。。

kkbca的博客 1760

Linux系统下进程的优先级

​ Linux操作系统是一个多用户多任务的操作系统,处理机的分配是通过时间片轮转的方式进行的。当CPU的负载过高时,进程的优先级就会起作用。NI 数值越小优先级越高,可以通过手动设置NI的数值,改变PR的数值。NI的范围是-20~19。nice命令只能调整没有运行的程序优先级。使用top 命令查看进程的优先级。PR 数值越小优先级越高。

weixin_45501045的博客 1147

Linux笔记---进程:进程优先级

将NI的范围限制在[-20,20)范围的目的是防止发生 "进程饥饿" ,即当各个进程的优先级差值过大时,优先级较低的进程就迟迟拿不到CPU资源。renice命令用于调整已经运行的进程的优先级。对于需要更高优先级的实时任务,可以使用SCHED_FIFO或SCHED_RR实时调度策略。这个命令将rsync进程的优先级降低了5个单位,确保它不会过多占用系统资源。这段代码将当前进程的调度策略设置为SCHED_FIFO,并设置优先级为10。这段代码获取当前进程的PID和Nice值,并将Nice值设置为5。

2302_80372340的博客 1848

Linux 中查看进程的优先级

Linux 中查看进程的优先级

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 2663
上一篇: 【Linux跬步积累】—— 环境变量、程序地址空间、进程地址空间、Linux2.6内核进程调度队列
下一篇: 【CF闯关练习】—— 1400分(D. Game With Array)
PH_modest
博客等级 码龄4年 833粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH_modest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值