信息发布→ 登录 注册 退出

Linux-进程优先级

发布时间:2025-06-20

点击量:
  1. 为什么要有优先级的概念

在大多数计算机中,cpu一次只能处理一个进程任务,但通常有多个进程需要运行。为了更有效地利用cpu资源,引入了进程优先级的概念,以决定进程获取cpu资源的顺序。这类似于生活中的排队情况,除了遵循先来后到的原则,优先级高的进程可以插队,就像在医院急诊病人可以优先挂号一样。提问:有没有可能因为大量的优先级更高的进程插队导致低优先级的进程迟迟得不到执行?回答:这涉及到进程饥饿的问题。在linux中,有相关的解决方法,linux会维护两个队列,一个为活跃队列,另一个为过期队列,这里就不详细讲解了。

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

CPU资源分配的先后顺序,就是指进程的优先级(priority)。优先级高的进程有优先执行的权力。在多任务环境的Linux中,配置进程优先级可以改善系统性能。通过将不重要的进程分配到特定的CPU上,可以大大提升系统的整体性能。进程要访问某种资源,必须通过一定的方式确定享受资源的先后顺序。有人可能会将进程的优先级与权限进行类比,但两者其实是不同的:

  1. 查看系统进程

在Linux或Unix系统中,输入ps -l会显示以下内容:

进程优先级下面我们来介绍各个符号的意义:

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

3.1 介绍PRI和NI

PRI就是进程的优先级,通俗地说就是程序被CPU执行的先后顺序,此值越小进程的优先级越高。优先值范围为[60,99],一般默认的优先级为80。NI就是我们要说明的nice值,表示进程可被执行的优先级的修正数值。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值

演示:修改nice值为100。

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

  1. Linux的调度与切换

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

一些其他概念

  • 竞争性:系统进程数目众多而CPU资源有限,甚至只有一个,所以进程间具有竞争属性。为了高效完成任务,更合理地竞争相关资源,便有了优先级。
  • 独立性:多进程运行,需要独享各种资源,多进程运行期间,互不干扰。
  • 并行:多个进程在多个CPU下分别、同时进行运行,这称之为并行。
  • 并发:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程得以推进,称之为并发。
标签:# linux  # 操作系统  # 解决方法  # 为什么  # 并发  # unix  # 多个  # 值为  # 越小  # 这也  # 越高  # 称之为  # 的是  # 都是  # 就会  # 先来后到  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!