Linux学习之路 -- PCB介绍 -- 进程优先级

news/2024/5/2 18:40:51

1、什么是优先级?

进程需要某一种资源,而系统要通过特定的方式来决定谁先获得这些资源,而系统的做法就是给不同的进程安排不同的优先级。让优先级高的进程先享有一些资源。

2、为什么要有优先级

因为资源的缺乏,所以系统的才会设置优先级来安排哪一个进程先享有某些资源。在我们的电脑上可能只有一块cpu。但是,我们可能有上百个进程需要运行,这时候cpu资源就变得很紧缺了,所以我们就需要用优先来确定哪些进程可以先享有这些资源。

3、在Linux中的优先级

这里我们可以用一段简单的代码看看liunx系统中的优先级。

运行这段代码,并用ps -al 命令查看进程状态(这里ps -al 命令其实就是显示该用户运行的进程的情况)

这里右侧就是ps命令的执行结果,其中,我们可以看到一列PRI,这个就一般就可以看作linux系统下的优先级,而在我们的进程的task_struct里面,PRI其实就是一个整数。而这个整数默认一般都是80。(在其他操作系统中,默认值可能略有不同)。

在linux系统中,这个优先级是可以被修改,而linux的优先级的范围区间是[ 60 , 99 ],这里面有40个优先级,而这个表示优先级的数字越小,优先级越高。而在linux默认的优先级值是80(这里的PRI是内核调度器根据nice值来计算的,nice值的取值范围是[-20,19],这个nice是优先级的修正值。但是需要注意的,系统的PRI不一定是80,不同系统的PRI可能不同,这个值的计算也受多种因素的影响,主要分为这几个:

  1. nice值:这是用户可以通过nice命令设置的一个值,用于调整进程的优先级。nice值的范围是从-20到19,其中-20表示最高优先级(对于普通用户),19表示最低优先级。nice值越高,进程的优先级越低。

  2. 进程的调度类:Linux支持实时(RT)和标准(SCHED_OTHER)两种调度类。实时进程通常具有较高的优先级,可以抢占标准进程的CPU时间。

  3. 进程的状态:如等待(sleeping)、运行(running)、阻塞(blocked)等。不同的状态可能会影响进程的调度优先级。

  4. 进程的调度策略:Linux有多种调度策略,如CFS(Completely Fair Scheduler)、RR(Round Robin)等。不同的策略会对进程的优先级有不同的处理方式。(CFS其实算一个进程调度器,其调度策略是公平的,每个进程都可以得到公平的CPU时间)

  5. CPU亲和性:进程可以绑定到特定的CPU核心上,这可能会影响其优先级。绑定到高优先级核心的进程可能会获得更多的CPU时间。

  6. 进程的优先级队列:在某些调度策略中,如CFS,进程会被分配到一个优先级队列中。队列的优先级会影响进程的调度顺序。

  7. 进程的调度权重:在某些调度策略中,如CFS,每个进程都有一个调度权重,这会影响进程的调度优先级。

  8. CPU负载:如果系统处于高负载状态,调度器可能会调整进程的优先级以保证系统的稳定性和响应性。

  9. 系统配置:系统管理员可以通过修改系统配置文件(如/etc/sysctl.conf)来全局性地调整进程的优先级。

)

如果我们需要修改修改优先级,我们就可以根据上面的影响因素来对优先级进行调整(这里一般不建议随意调整),这里只介绍通过nice值调整优先级,其他方法可自行查阅(通过将进程调整为实时调度策略,cpu亲和性,修改系统文件改变进程调度权重等等)

这里我们可以先运行一个程序

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>int main()
{while(1){printf("I am a process, pid:%d\n,",getpid());sleep(1);}return 0; 
}

然后打开top监视窗口,按R键,此时光标闪动的地方就是需要输入我们想要修改的进程的PID.

然后修改我们的nice值,输入10(意思就是让这个进程的优先级增加10)

此时我们就会发现,修改完后的PRI变成了90,NI(nice值)变成了10。这里的PRI = PRI(old) + nice ,需要注意的是,这里的nice值是覆盖式写入,意思就是第二次假如我输入的是-10,那这里的NI,就会变成-10,而不是0。同时,这里old也一直是80,所以第二次修正nice值后,PRI是变成了70,而不是由第一次的90变为80。

测试优先级的极值:我们可以测试一下当前进程的最大和最小优先级,这里我们直接把nice值输入成100,然后观察结果

这里我们可以看见,PRI最多就增长到99就停止了,而NI也没有变成100,而是变成19。同理,我们可以测出PRI最小减少到60就停止了,NI最小也就是-20。那这里为什么我们要对这些进程的优先级做一个限制呢? 如果我们的优先级不被限制的话,有人为了让自己的优先级更高,会无限制地调低优先级。而优先级更高地进程是能更快地享受CPU资源的,如果把用户把个人的进程优先级设置太高,就会造成常规进程迟迟无法享有CPU进程,这也叫做进程饥饿状态。

希望文章内容能对你有些许帮助,文中如有不当之处,还望各位大佬指正,谢谢!!!


http://www.mrgr.cn/p/21478171

相关文章

linux进程与计划(2)

五大性能性能 命令内存使用率 free,topCPU使用率 top,ps,w硬盘使用率 df硬盘读写性能 dd,iostat网络带宽 iftopps -ef 命令输出信息 如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令就足够了 CPU 在运算数据时,不是把一个集成…

软件产品许可证书 Licence 全流程研发(使用非对称加密技术,既安全又简单)

本篇博客对应的代码地址&#xff1a; Gitee 仓库地址&#xff1a;https://gitee.com/biandanLoveyou/licence 1、背景介绍 公司是做软件 SAAS 服务的&#xff0c;一般来说软件部署有以下几种常见的模式&#xff1a; 1、自己研发和部署到自己的云服务器&#xff0c;然后有偿提供…

ts中的dom元素和event事件类型声明

1, HTMLElement 和 Element<div id="divClick"></div>const docu = document.getElementById(divClick);const docu1 = document.querySelector(#divClick);把鼠标分别放在docu和docu1上:HTMLElement HTMLElement 是 HTML 文档中某个元素的具体类型,该…

debian安装和基本使用

debian安装和基本使用 文章目录 debian安装和基本使用1. 为什么选择debian2. 如何下载Debian2.1 小型安装镜像2.2 完整安装镜像 3. Debian操作系统安装3.1 创建Debian虚拟机3.2 安装操作系统 4. Debian系统的初始设置4.1 桌面环境的配置4.2 配置网络4.3 生效网络配置4.4 配置de…

大模型日报|今日必读的6篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 新研究&#xff1a;多样本上下文学习 目前&#xff0c;大型语言模型&#xff08;LLMs&#xff09;最擅长的是 “少样本上下文学习”&#xff08;ICL&#xff09;—— 即在推理时从上下文中提供的少…

反转二叉树(力扣226)

解题思路&#xff1a;用队列进行前序遍历的同时把节点的左节点和右节点交换 具体代码如下&#xff1a; class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root NULL) return root;swap(root->left, root->right); // 中invertTree(root->left)…

C# Lock锁对象的理解

我们lock的一般是对象,不是值类型和字符串。1、为什么不能lock值类型比如lock(1)呢?lock本质上Monitor.Enter,Monitor.Enter会使值类型装箱,每次lock的是装箱后的对象。lock 其实是类似编译器的语法糖,因此编译器直接限制住不能lock值类型。退一万步说,就算能编译器允许你…

GPT国内怎么用?4月最新版本来了

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

腾讯云APP备案指南:一站式完成备案手续,助您顺利上线

工信部最新通知要求所有互联网信息服务提供者完成移动互联网应用程序备案手续。腾讯云为开发者提供了简单易行的备案流程,本文详细解答如何在腾讯云平台完成备案,帮助开发者快速上线自己的APP。从验证备案域名到腾讯云审核,一步步指导您完成备案流程,让您的APP合法合规地运…

windows系统添加自启动服务

windows 添加程序自动启动:shell:startup将需要启动的应用的启动入口,创建一个快捷键,然后将其放入该文件夹中

VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC: 分贝仪、测光仪、测厚仪可驱动36SEGx4COM

VKL144C/D概述: VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的 LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通 过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表 类产…

链表4: 循环链表

链表4-循环链表循环链表的特点: 链表的尾结点后继指向头结点循环链表的结构 typedef struct Node{int data; //数据域struct Node *nextNode; //后继 } Node;循环链表的初始化 Node* initHeader(){//创建头结点Node *header = (Node*)malloc(sizeof(Node));//头结点的数据(用于…

Meta因露骨AI图片陷入困境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于SSM的计算机课程实验管理系统的设计与实现(内附设计LW + PPT+ 源码下载)

基于SSM的计算机课程实验管理系统的设计与实现 项目名称&#xff1a; 基于SSM的计算机课程实验管理系统的设计与实现 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; SSM (Spring Spring MVC MyBatis)数据库&#xff1a; MySQL前端技术&…

发挥自定义表单开发优势,实现降本增效!

想要了解自定义表单开发的相关优势特点,可以在本篇文章中获取更多答案信息。在数字化发展趋势下,流程化办公深入职场人心,因为它能助力企业降本、增效、提产。那么,如何实现流程化办公?如何让企业高效步入数字化转型新时代?这就需要发扬低代码技术平台、自定义表单开发的…

SQL存储引擎

一、MySQL体系结构 连接层 最上层是一些客户端和链接任务&#xff0c;主要完成一些类似于连接处理、授权认证以及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能&#xff0c;如SQL接口&#xff…

达梦数据库(DM8)安装

达梦数据库(DM8)安装 一、安装部署 1.1 下载 本手册版本选择“DM8开发板”,CPU平台选择“X86”,操作系统选择“RedHat7” 下载地址:https://www.dameng.com/DM8.html ~]# wget https://download.dameng.com/eco/adapter/DM8/202401END/dm8_20240116_x86_rh7_64.zip1.2 创建…