Linux中的进程优先级

news2024/10/6 8:32:56

Linux中的进程优先级

目录

  • Linux中的进程优先级
    • 引入
    • 1、基本概念
    • 2、查看进程
    • 3、PRI和NI
    • 4、修改进程优先级
    • 5、进程切换
    • One more thing

引入

在Linux操作系统中,进程的优先级对于系统的性能和响应时间至关重要。进程的优先级决定了该进程在系统资源分配中所占的比例。Linux中的进程调度器根据进程的优先级来决定何时运行哪个进程。因此,理解Linux进程的优先级非常重要,可以帮助我们更好地管理和优化系统性能。

在本文中,我们将深入探讨Linux进程的优先级。首先,我们将介绍进程的基本概念,然后深入了解Linux进程的优先级如何工作,包括如何设置和修改进程的优先级。最后,我们将讨论如何使用Linux进程优先级来优化系统性能。

1、基本概念

由于系统资源是优先的,因此CPU需要以一定的顺序分配资源,优先级即是进程获取资源的先后顺序,优先权高的进程有优先执行权,配置进程优先权对多任务环境的Linux很有用,可以改善系统性能

优先级与权限:能还是不能—>能,先做还是后做的问题

为什么存在优先级?——因为资源太少了

Linux优先级特点:很快,优先级的本质是PCB里面的一个整数数字(也有可能是几个)

2、查看进程

我们通过以下指令来得到当前中断进程的信息:

ps -l

image-20230420145447827

其中包含了:

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

我们此时运行一个睡眠程序:

image-20230420165646905

此时我们查看进程信息(ps -l通常看不到该进程,我们加上-a选项即可看到)

ps -la

image-20230420165903700

3、PRI和NI

PRI(priority)&&NI(nice)

PRI是进程的实时优先级,值越小,优先级越高,表示进程越重要,应该更早地获得CPU时间片;NI是进程的优先级偏移值(nice),范围是-20~+19,NI的默认值是0,可以通过nice命令来改变它。

进程的总优先级 = PRI + NI。例如,一个PRI为80,NI为-5的进程的总优先级为75。当进程需要获得CPU时间片时,调度器会根据进程的总优先级来进行调度,总优先级越高的进程会更早地获得CPU时间片。

需要注意的是,NI的取值范围是有限制的,只能在-20到+19之间,而且只有超级用户(root)才能将NI设置为负数。这是为了避免普通用户通过提高进程优先级来影响系统的稳定性。

4、修改进程优先级

top指令是一款常用的系统监控工具,它可以实时地查看系统的运行状态,包括CPU占用率、内存占用率、进程运行情况等等

top指令修改nice值:

输入top指令—>按R键—>输入要更改进程的PID—>输入修改后的nice值

例如我们运行如下程序,使得它一直打印输出该进程与其父进程的PID

我们在另一个终端监视并查看该进程信息,并更改其nice值:

image-20230420184353502

按回车之后再输入要修改的nice值,即可实现对进程优先级的修改:

image-20230420184627664

此时我们再通过ps指令查看该进程优先级:

ps -la

image-20230420184711145

此时由于nice值由0更改到了5,因此进程总优先级PRI即被更改成了85;

前面介绍到,PRI初始值为80,而允许修改的NI值在-20到+19之间,为什么要限定NI值的修改范围呢?

Linux系统一共有140个优先级,很多优先级不是给普通的进程使用的,60~99这40个优先级是给用户使用的;因为操作系统存在多个系统进程,用户随意修改NI值会导致系统进程优先级过低,从而降低系统的稳定性和响应性能

5、进程切换

CPU永远在做三件事情:

1、取指令

2、分析指令

3、执行指令

CPU中有一个名为PC寄存器,其作用是存储当前正在执行指令的下一条指令的地址;当我们的进程在运行的时候,一定会产生非常多的临时数据,这份数据属于当前进程!

而对于CPU而言,CPU内部虽然只有一套寄存器硬件,寄存器里面保存的数据,是属于当前进程的(寄存器硬件!=寄存器内的数据);上下文数据存放在进程PCB(tast_struct)当中

在进程运行的时候,都有进程的时间片;当进程发生切换的时候,要进行进程的上下文保护,当进程在恢复运行的时候,要进行上下文的恢复

One more thing

1、竞争性:系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级

2、独立性:多进程运行,需要独享各种资源,多进程运行期间互不干扰;进具有独立性,不会因为一个进程挂掉或者异常,而导致其他进程出现问题

3、并行::多个进程在多个CPU下分别,同时进行运行,这称之为并行

4、并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发;

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

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

相关文章

说PHP不适合做爬虫的人,看这里

文章目录 一、关于PHP爬虫框架—Goutte1.1 什么是Goutte1.2 Goutte的优点1.3 Goutte的安装 二、Goutte的使用2.1 基本用法2.2 获取页面内容2.3 表单提交2.4 AJAX请求2.5 登录并抓取数据 三、15个Goutte爬虫示例3.1 简单示例3.2 获取表格内容3.3 登录并获取数据3.4 处理JavaScri…

遇到Spring事务失效,你该怎么办?

Spring 事务场景失效是一个常见的问题。今天来分析这个问题。 1、事务方法被final、static关键字修饰,方法访问权限不是public Service public class UserService {Autowiredprivate UserDao userDao;// final修饰的事务方法Transactionalpublic final void addUse…

实时分布式低延迟OLAP数据库Apache Pinot探索实操

文章目录 概述定义特性何时使用 部署Local安装快速启动手动设置集群 Docker安装快速启动手动启动集群Docker Compose 实操批导入数据流式导入数据 概述 定义 Apache Pinot 官网地址 https://pinot.apache.org/ 最新版本0.12.1 Apache Pinot 官网文档地址 https://docs.pinot.a…

Vivado如何清理工程,并避免缺失必要的文件?

FPGA开发是一项非常复杂的工作,需要处理大量的代码、约束和仿真文件。在开发过程中,由于文件数量庞大,很容易导致工程变得混乱不堪。Vivado是Xilinx公司推出的一款FPGA开发工具,能够帮助开发人员处理这种复杂性,提高开…

【FPGA-DSP】第七期:Mcode调用

目录 1. 有限状态机设计 1.1 FSM代码编写 1.2 输入序列代码编写 1.3. mcode概念 2. Simulink 2.1. 输入部分 2.2. Mcode模块 2.3. 完整模块 总结 参考博客【R1】,参考视频资料【R2】 设计中经常用到一些控制逻辑,如有限状态机(FS…

语音特征参数MFCC提取过程详解

一、MFCC概述 在语音识别(SpeechRecognition)和话者识别(SpeakerRecognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC)。根据…

IntelliJ IDEA全新发布v2023.1——全面增强UI体验和性能!

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 I…

javaSwingrsa和aes混合加密文件传输系统

RSA和AES加密混合文件传输系统 环境要求: 1、java1.8 2、socket 3、mysql 4、io流 5、swing 登录界面 客户端登录: 1.用户注册的账号保存到数据库中,用户的密码经过md5后保存到数据库中。 2.用户输入正确的账号和密码可以进入 “ …

Gulp 打包压缩 js 文件到指定目录详细流程(修改文件名与后缀)

主篇 前端 Gulp 详细介绍与案例使用。 打包 index.js 测试内容 js 包内容文件: // 测试属性 export const dzmName dzm export const dzmAge 18// 测试方法 export function dzmFunc (name, age) {return 名字:${name},年龄:${…

Chat的提问工程师,要上线了你慌不慌?

一、什么是Prompt? (1)Prompt的概念 我们在使用GPT的时候,给GPT发送的消息就是Prompt. 例如,当我们问ChatGPT"WPS是什么软件?"时: 其中,"WPS是什么软件?"这句话就是Prompt. (2)为什么要学习Prompt? Prompt是我们和GPT交流的方式,我们需要让GPT了解…

微信小程序从零开始经验贴(含详细资料及链接)

背景: 从事微信小程序开发近3年,现在几乎能独当一面,对后台程序也有一定研究。      我学习的基础是c编程经验,对前端、后端没有太多涉及。微信小程序相关资料都是自己找的,然后在项目中看别人的代码,摸着石头过河…

什么是单例模式?

文章目录 01 | 什么是单例模式?02 | 实现懒汉式饿汉式 03 | 总结 每一次实验课都要把上一节课的实验报告打印出来,交作业,这个时候的打印店总是很多人,这时候打印机就那么几台,粥少僧多的情况下,打印机怎么…

动态路由的原理与配置

一.动态路由介绍 1.动态路由选择 指路由器使用路由选择协议来获悉网络并更新路由选择表。 2.路由协议分类 3.管理距离介绍 管理距离(AD)用于判断从邻接路由器收到的路由选择信息的可信度,它是 0-255的整数,0 表示可信度最大&#…

Android9 Settings源码导入Android Studio查看并调试

Android9 Settings源码导入Android Studio查看并调试 本次调试在已编译的工程下 1. 导入packages/app/settings 不要直接导入这个模块,导入上一级app目录 在选择时选择Settings相关所有目录,如下 如下这里的sdk配置是我已经添加的,后面可…

用了这几个方法,Facebook广告转化真上去了!

随着全球电商市值的猛涨,Facebook广告的价值再次被放大。然而,在Facebook上的广告资源竞争日益激烈的情况下,即使你有最好的广告策略和投放预算,如果你的广告创意不能吸引潜在客户的注意,那么你的广告投放也可能失败。…

at单一次任务,crontab周期性任务 rhce(21)

目录 1.atd和crond两个任务管理程序的区别 2.指定在2023/08/26 09:00将时间写入testmail.txt文件中 3.指定在每天凌晨4:00将该时间点之前的系统日志信息备份到个目录下(/var/log/messages),备份后日志文件名显示格式logfileYY-MM-DD HH-MM…

08-java之io流基础

io流学习流程 说白了,本节的目的就是对 文件增删改查,先说一下学习顺序吧 定位文件 File类可以定位文件:可以进行删除文件内容,读取文件本身信息等操作,但是不能读写文件内容 字符集 想要读取文件中的数据&#xff0…

Nginx+Tomcat负载均衡、动静分离

1.Tomcat多实例部署 Tomcat的多实例部署简单的讲就是基于端口的虚拟主机设置 步骤一:安装jdk (1)关闭防火墙和selinux,防止其对安装过程的干扰 (2)将准备好的软件包拖入/opt目录下,进行安装 #某rpm包尚未…

【HCIP】BGP实验(联邦,路由反射器,手工汇总)

目录 需求: Ⅰ、IP规划 Ⅱ、配置IP与做通IGP(用的ospf) Ⅲ、开启BGP协议 Ⅳ、AS1、AS3的10...环回互相通讯 Ⅴ、对路由表进行汇总 Ⅵ、回望需求 需求: 1.AS1存在两个环回,一个地址为192.168.1.0/24该地址不能在任何协议中宣告 AS3存在两…

马斯克的Starship,除了“大”还有什么呢?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 种种迹象表明,由ChatGPT引发的算力军备竞赛已经悄然而至了。 终于,到了检验人类最大火箭发射的时候了。 2023年4月17日,SpaceX将其大型深空火箭Starship发射升空,发射地点为Sp…