Linux:进程优先级

news2024/10/6 18:23:59

文章目录

  • 基本概念
  • 查看进程优先级
    • PRI & NI
  • 更改优先级
  • Linux中进程优先级的实现原理
    • 上下文

基本概念

CPU资源分配的先后顺序,就是指进程的优先权(priority)。

优先权高的进程有优先执行权利。配置进程优先权对多任务环境的Linux很有用,可以改善系统性能。

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

查看进程优先级

我们可以使用ps -l查看进程信息:
在这里插入图片描述

我们很容易注意到其中的几个重要信息,有下:

UID : 代表执行者的身份

PID : 代表这个进程的代号

PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号

PRI :代表这个进程可被执行的优先级,其值越小越早被执行

NI :代表这个进程的nice值

PRI & NI

PRI是比较好理解的,即进程的优先级,或者说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高。

NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new) = PRI(old) + nice

这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行

所以,调整进程优先级,在Linux下,就是调整进程nice

nice其取值范围是[-20,19),一共40个级别。

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

更改优先级

我们可以使用top命令更改已存在进程的nice值,来更改程序的优先级。

我们编写以下程序:

在这里插入图片描述

编译并执行:
在这里插入图片描述

然后我们在另一个账户查看此进程信息:

在这里插入图片描述

我们可以看到该进程的PRI是80,NI是0。

我们执行top指令,打开资源管理器:

在这里插入图片描述

然后按r,会提醒我们输入想要改变优先级的进程的PID

在这里插入图片描述

输入PID后,回车,输入想要修改的NI值,回车并q退出。

这时我们再查看进程的优先级信息:

在这里插入图片描述

可以看到PID变成了 80 + NI

需要注意:我们每一此调整程序的优先级,都会从默认优先级调整,而不是当前优先级。

比如,我们像这样再修改该进程的优先级:

在这里插入图片描述

进程的优先级会被调整为 80 + 5 ,而不是 90 + 5:

在这里插入图片描述

另外一个需要注意的是:如果我们输入的NI值大于19或小于-20,会按照19或-20来调整。

Linux中进程优先级的实现原理

在之前我们提到,处于运行状态的进程的PCB会进入运行队列,链接在CPU结构体对象中,CPU挨个执行进程。

下图是Linux2.6内核中进程队列的数据结构:

在这里插入图片描述

一个CPU有一个runqueue,如果有多个CPU就要考虑进程个数的负载均衡问题。

在这里插入图片描述

我们所对应的优先级[60,99]在运行时会转换成[100,139]。

进程在进程优先级队列当中是从上往下,从左往右进行调度的,当runing中的进程被调度完之后,通过指针交换来继续调度waiting中的进程,以此循环,就构成了我们所看到的优先级队列。

其中还有一个位图bitmap,大小为五个整形元素,占有160个比特位,用来表示队列中140个位置上还有没有进程。这样可以快速判断某个优先级的进程是否运行完。

运行完的进程会进入等待队列,等全部进程都进入等待队列后,等待队列会变为活跃队列,原来的活跃队列变为等待队列。

上下文

CUP中有大量寄存器,进程会将数据交给寄存器进行计算,如果程序运行结束或时间片到了,该运行其他程序了,那么寄存器中的数据就会被全部写入该进程的PCB中,等再次运行到此进程时,再将PCB中存储的寄存器数据覆盖寄存器原来的数据进行计算。

CPU中存储的所有临时数据,叫做硬件上下文

当一个进程从CPU中离开,会把所有的硬件上下文都拷贝走,存储在PCB中,这个过程叫做保护上下文

`中存储的寄存器数据覆盖寄存器原来的数据进行计算。

CPU中存储的所有临时数据,叫做硬件上下文

当一个进程从CPU中离开,会把所有的硬件上下文都拷贝走,存储在PCB中,这个过程叫做保护上下文

而当一个进程被再次调度的时候,又会把自己的数据写入CPU中,覆盖原始的寄存器中的数据,这个过程叫做恢复上下文

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

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

相关文章

【ARM Cache 与 MMU 系列文章 7.4 -- ARMv8 MMU 配置 寄存器使用介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 MMU 转换控制寄存器 TCR_ELxTCR_ELx 概览TCR_ELx 寄存器字段详解TCR 使用示例Normal MemoryCacheableShareability MMU 内存属性寄存器 MAIR_ELxMAIR_ELx 寄存器结构内存属性字段Devic…

AIGC绘画设计提示词篇:MJ绘画提示词midjourney

开通账号半个多月了,把这小半个月用到的比较好的提示词分享给大家。先说两个功能点 一、Vary(Subtle) & Vary(Strong)功能: Vary(Subtle)是对图片进行微小的调整,点击“Vary(Subtle)”后新生成的图片与原图的变化差异极小,仅在细节处做了细微调整。 点击“Var…

佐西卡在美国InfoComm 2024展会上亮相投影镜头系列

6月12日至14日,2024美国视听显示与系统集成展览会将在拉斯维加斯会议中心盛大开幕。这场北美最具影响力的视听技术盛会,将汇集全球顶尖的视听解决方案,展现专业视听电子系统集成、灯光音响等领域的最新技术动态。 在这场科技盛宴中&#xff0…

UE5 Sequencer 使用指导 - 学习笔记

https://www.bilibili.com/video/BV1jG411L7r7/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer 01 1.1 调整视口 调整窗口数量 调整视口类型为Cinematic视口 视口显示网格,或者条件参考线 1.2 关卡动画与…

Ubuntu22.04之解决:emacs无法输入中文问题(二百四十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

全域推广是什么意思?业务范围有哪些?

随着全域时代的到来,与全域相关的各种概念不断涌现,引发了一轮又一轮的热议。在此背景下,全域推广一经出现便一跃成为了互联网的有一大热词,以全域推广是什么意思为代表的相关问题也成为了多个创业者社群中的热点话题。 相关资料显…

Windows10上安装LabVIEW社区版

LabVIEW全称Laboratory Virtual Instrument Engineering Workbench(实验室虚拟仪器工作台)。LabVIEW是美国国家仪器有限公司(National Instruments, NI)最核心的软件产品。LabVIEW是图形化编程语言,与C等文本编程语言相比,它在编程过程中有更详细的提示信…

电影票小程序API接口的实现方法

电影票小程序API接口的实现方法涉及后端服务的开发和设计。以下是一些关于如何实现电影票小程序API接口的基本步骤和考虑因素: 1. 需求分析 确定需要哪些API接口来支持小程序的功能,如查询电影、影院、座位信息,购票,查看订单等…

彩虹图纸管理软件的图纸电子化管理解决方案?

彩虹图纸管理软件的图纸电子化管理解决方案为企业提供了一套全面、高效的图纸管理方案。以下是该解决方案的详细概述: 1、图纸扫描与数字化: 彩虹图纸管理软件支持将纸质图纸进行扫描,生成高质量的电子文件,如DWG、PDF等格式。 …

逻辑题 :谁是凶手?

设 : A 甲是凶手 这个是题中1的 如果甲不是凶手 我们假设A条件是甲是凶手,取反就可是甲不是凶手,B 乙是凶手 这个是题中1的 如果乙或者是凶手 我们假设B条件乙是凶手C 乙是知情人 这个是题中1的 或者是知情人 我们假设C条件乙是知情人D …

【运维自动化-配置平台】如何使用云资源同步功能(腾讯云为例)

云资源同步是通过apikey去单向同步云上的主机资源和云区域信息,目前支持腾讯云和亚马逊云。主要特性 1、蓝鲸配置平台周期性的单向只读同步云主机和vpc(对应蓝鲸云区域)信息,第一次全量,后面增量 2、默认同步到主机池…

Vue3相关语法内容,组件传值,事件监听,具名插槽。

1、Vue3相关语法内容 赋值语句(ref、reactive系列)组件传值(父子,子父)watch,watchEffect监听slot具名插槽 1、赋值语法(ref,reactive) 1.1、ref 、isRef、 shallowRef、triggerRef、customRef 支持所有的类型&…

LLVM Cpu0 新后端8 尾调用优化 Stack Overflow Exception异常

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

Matlab进阶绘图第59期—棒棒糖图

​棒棒糖图本质上是柱状图的一种变体。 棒棒糖图通过在每根柱子顶端添加圆点,以表示数据之间的相对位置。 此外,一般还会对每根棒棒糖按数值大小进行排序,从而更加方便阅读。 本文利用自制的Lollipop工具进行棒棒糖图的绘制,先…

计算机网络(2) 网络层:IP服务模型

一.Internet Protocol在TCP/IP四层模型中的作用 第三层网络层负责数据包从哪里来到哪里去的问题。传输层的数据段提交给网络层后,网络层负责添加IP段,包含数据包源地址与目的地址。将添加IP段的数据包交由数据链路层添加链路头形成最终在各节点传输中所需…

双tab 栏 实现表格高度自适应 遇到的一些问题

默认的显式的tab高度自适应无问题,但是另外的显式有问题 原因 非active的tab默认是不加载的,所以读取到的table是0,基于此计算出来的高度自适应必然会出问题 第一步解决:避免懒加载 使用el-tab中自带的lazy属性,避免懒…

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版9(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言选择植物简单绘制选择植物面板渲染卡牌数据 点击选中和移除卡牌修改UI代码控制 开始战斗源码结束语 前言 本节主要实现添加选择植物功能 选择植物 简单绘制选择植物面板 每个卡牌插槽和前面植物卡牌类似,并配置…

3D处理关键点检测之ISS(内蕴形状特征)

定义 ISS(Intrinsic Shape Signatures)是由Yu Zhong于2009年提出的一种三维形状描述子,用于描述局部或者半局部区域的点云,局部区域可以理解为以一个点云中某点为球心,以一定半径构成的可以包含多个内点的球形区域,半局部则是半个…

linux驱动学习(十)之内存管理

一、linux内核启动过程中,关于内存信息 1、内核的内存的分区 [ 0.000000] Memory: 1024MB 1024MB total ---> 1G [ 0.000000] Memory: 810820k/810820k available, 237756k reserved, 272384K highmem [ 0.000000] Virtual kernel memory layout: 内…

鸿蒙元服务未来是能一“通”多端的前端形态?

2024年,华为鸿蒙的热度只增不减。 在2023年底就有业内人士透露,华为明年将推出不兼容安卓的鸿蒙版本,未来IOS、鸿蒙、安卓将成为三个各自独立的系统。 果不其然,执行力超强的华为,与2024年1月18日的开发者&#xff0…