当前位置: 首页 > news >正文

Linux-进程优先级

🌈个人主页:Yui_
🌈Linux专栏:Linux
🌈C语言笔记专栏:C语言笔记
🌈数据结构专栏:数据结构
🌈C++专栏:C++

文章目录

  • 1. 为什么要有优先级的概念
  • 2.进程优先级的基本概念
  • 3.查看系统进程
    • 3.1 介绍PRI和NI
      • 3.1.1 调整进程的优先级
  • 4. Linux的调度与切换

1. 为什么要有优先级的概念

大多数人的电脑都是一个CPU,一次只能处理一个进程任务,但是进程又有很多个。这也就导致的CPU的资源不足,为了更合理的利用CPU资源,就存在进程优先级来确定进程获取CPU资源的顺序。
就要生活中的排队,进程在CPU中也是需要排队的,除了遵循先来后到的排队原理,还存在优先级更高的进程是可以进行插队的,这也可以理解,在医院排队时,如果碰到急诊病人是可以优先挂号的。
提问:有没有可能因为大量的优先级更高的进程插队导致低优先级的进程迟迟得不到执行。
回答:这就涉及到了进程饥饿的问题了,在Linux下是有相关解决方法的,Linux会维护两个队列,一个为活跃队列,另一个为过期队列,这里就不细讲了。

2.进程优先级的基本概念

  • CPU资源分配的先后顺序,就是指进程的优先级(priority)
  • 优先权高的进程有优先执行权力。配置进程优先级对多任务环境的Linux很有用,可以改善系统的性能。
  • 把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
    进程要访问某种资源,就必须通过一定的方式,确定享受资源的先后顺序。

可能有人会把进程的优先级和权限进行类比,其实两者还是很不同的:

优先级决定的是顺序问题。
权限决定的能不能的问题。

3.查看系统进程

在Linux或者unix系统中,输入ps -l 会出现以下内容:
进程优先级

下面我们来介绍各个符号的意义

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

3.1 介绍PRI和NI

  1. PRI就是进程的优先级,通俗点就是程序被CPU执行的先后顺序,此值越小进程的优先级越高。优先值范围[60,99],一般默认的优先级为80
  2. 那NI就是我们要说明的nice值,表示进程可被执行的优先级的修正数值。
  3. PRI越小越快被执行,那么加入nice值后,就会得到新的PRI:PRI(NEW) = PRI(OLD)+nice.
    如此一来的话,当nice值为负值的时候,那么该程序就会优先值变小,其优先级会变高。则越快被执行。
    nice的取值范围为[-20,19],一共40个级别,这也就对于了第一点。

3.1.1 调整进程的优先级

通过公式PRI(NEW) = PRI(OLD)+nice。我们知道,调整进程的优先级的本质就是调整nice的值。
指令:top

进入top后按“r”->输入进程PID->输入nice值

演示:修改niec值为100.
修改niec值为100.

通过演示我们可以发现,尽管nice的值被修改为100,PRI的值就值变成了99.由此也可以证明PRI的范围。
值得注意的是,每次都是直接给nice赋值,而不是在原有nice的基础上加减。
提问:为什么调整优先级是要受限制的?
回答:如果不加限制,将自己进程的优先级调整的非常高,别人的优先级调整的非常低,优先级较高的进程,优先得到资源,后续源源不断的进程产生。常规进程很难享受到CPU的资源,也就造成的进程饥饿问题。

4. Linux的调度与切换

提问:在进程运行时,CPU会直接把进程代码跑完吗?
答案:是不会的,现代操作系统就是基于时间篇进行轮流执行的,假设每个进程执行1ms,那么CPU在每1ms都会切换进程来执行。
一些其他概念

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

http://www.mrgr.cn/news/28090.html

相关文章:

  • 【星海随笔】ZooKeeper-Mesos
  • 计算机网络学习笔记-3.3以太网和局域网
  • VRRP HSRP GLBP 三者区别
  • docker镜像源,亲测可用,时间2024-11-14
  • 038 进程线程
  • VUE3+Three.js搭建教程
  • 02 信念·组织力·战略 - 目标管理
  • AJAX 入门 day3
  • Pytorch详解-Pytorch核心模块
  • Mixtral 8x7B:开源稀疏混合专家模型的新里程碑
  • django实现开发、测试、生产环境配置区分
  • 不容错过!【寻找散落的Mar力】活动,赢取RTX4090金条超值大奖!
  • HashMap 详解
  • python-素数中的等差数列
  • AI读书-领导人选集-关于个人主义与公司个人管理经验
  • 中级练习[10]:Hive SQL
  • EMT-DAVT--基于子空间分布对齐和决策变量转移的多目标多任务优化
  • UART协议
  • 7-16 一元多项式求导(vector)
  • 笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
  • pip安装包、卸载包、更新包命令
  • 8.JMeter+Ant(基于工具的实现接口自动化,命令行方式)
  • CF 231 E Cactus 题解(仙人掌图上找环)
  • C Primer Plus 第5章习题
  • 数据清洗-缺失值填充-K-NN算法(K-Nearest Neighbors, K-NN算法)
  • 尚品汇-秒杀商品存入缓存、Redis发布订阅实现状态位(五十一)