Linux 进程调度(三)之进程的优先级


一、概述

在 Linux 中,每个进程都有一个优先级。优先级决定了进程在系统资源分配中的先后顺序。Linux 中的进程优先级范围从 -20 到 +19,其中 -20 为最高优先级,+19 为最低优先级。

二、进程的优先级

1、基础概念

Linux 中的进程优先级分为静态优先级和动态优先级。

  • 静态优先级:静态优先级是在创建进程时分配的,通常由管理员或程序员指定。静态优先级决定了进程的基本优先级,可以通过 nice 命令来设置,范围为 -20 到 +19。较低的数值表示较高的优先级。例如,如果给一个进程设置了较低的优先级值如 -10,那么这个进程将具有较高的优先级。
  • 动态优先级:动态优先级是根据进程的行为和运行情况自动调整的。在 Linux 中,使用调度算法来动态调整进程的优先级。当一个进程使用 CPU 时间较长时,系统会降低它的优先级,让其他进程有更多的执行时间。而当一个进程处于等待 IO 等待状态时,系统会提高它的优先级,以便快速完成 IO 操作。

2、优先级的意义

因为 CPU 的空间归根结底还是寄存器, 而寄存器很小, 就注定了 CPU 的资源是有限的。 而进程的个数是多个的, 这就势必会导致进程之间的竞争关系。

操作系统为了保证进程之间的良性竞争, 他就会确认进程之间的优先级。如果我们的进程长时间得不到 CPU 资源, 该进程的代码长时间得不到推进, 就会出现饥饿问题。

进程的优先级本质上是 PCB(task_struct)内部属性中的一种属性,决定了进程获取某种资源的先后顺序。进程的 task_struct 在运行队列中排队,本质上就是确定获取 CPU 资源的先后顺序。

Linux 进程的优先级也是用来确定在多个进程同时运行时,哪个进程会获得更多的 CPU 时间片。

在 CPU 正常运行中,OS 给每一个CPU都维护一个运行队列,OS 把进程以”先进先出"的方式把进程的 PCB 放到运行队列中排队,等待 CPU 按照"时间片"的调度算法去调度进程(切换进程,来回剥离和恢复)。

不同的进程对 OS 本质上都是访问 OS 中的资源的访问。本质就是通过 OS 来实现对硬件资源的共享。但是硬件资源只有一套,进程有很多套,进程的共享不在同一时间上,所以造成了优先级。总之,进程所访问的 OS 的资源是有限的,OS 中进程大部分情况是大多数,所以需要优先级。

3、查看优先级

在 Linux 系统中:

  • ps -l 命令用于查看当前终端进程的信息
  • ps -al 命令用于查看全部的进程信息

下面是几个重要字段的意义:

  • UID : 代表执行者的身份
  • PID :
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值