【Hello Linux】进程优先级和环境变量(一)

简介: 【Hello Linux】进程优先级和环境变量(一)

进程的优先级

基本概念

  1. 什么是进程优先级?

cpu资源分配的先后顺序 就是指进程的优先权(priority)

  1. 优先级存在的原因?

优先级存在的原因本质上是因为资源的不足 在系统中表现为有多个进程却只有一个cpu

如何查看优先级

我们可以使用ps -l指令来查看进程

其中有五个进程是比较重要的 我们这里拿出来单独解释下

  • UID 代表执行者的身份
  • PID 代表进程的代号
  • PPID 代表父进程的代号
  • PRI 代表进程的优先级
  • NI 代表这个进程的nice值 用来修正进程的优先级

PRI与NI

  • PRI是进程的优先级 通俗点说就是程序被CPU执行的先后顺序 此值越小进程的优先级别越高
  • NI值就是我们所要说的nice值了 其表示进程可被执行的优先级的修正数值
  • PRI和NI值的关系符合下面的公式 PRI(new) = PRI (old)+ NI
  • 当NI值为负值的时候 那么该程序将会优先级值将变小 优先级会变高
  • 调整进程优先级 就是调整进程的nice值
  • nice的取值范围是-20~19 一共四十个值

在Linux系统中 PRI(old)值默认为80 所以说Linux中的优先级为 PRI(new) = 80 + NI

NI值的设置范围

NI的设置范围是固定的 必须是-20~19 如果超出这个值 则设定的nice值会变为最接近这个区间的值

比如说我们设定NI值为-100 则它的值会被设置为-20

如果我们设定NI值为100 则它的值会被设置为19

为什么NI值的范围被设置成这样子

因为操作系统要尽量的保证每个进程的公平运行 如果我们可以随意将进程的优先级设置的很低那么操作系统就会倾向于执行这个进程 从而导致其他进程不能被很好的被cpu执行 所以说PRI值最好是在一个范围中

NI值如何修改

修改NI值实际上就是进程的优先级

对于NI值的修改 我们有两种方式

修改方式一 : 通过top指令修改优先级

top命令就相当于Windows操作系统中的任务管理器

我们调用top命令之后会出来这样子的界面

接下来我们按住 r 键 就可以它就会要求你输入需要调整NI值的进程PID

接下来我们输入PID之后回车 它就会让我们输入NI值

我们这里输入修改的NI值为15之后回车 按住q键 退出top

之后我们再次使用ps指令查看9188进程的优先级

我们可以看到 9188号进程的优先级确实变为75了 但是为什么进程号为 20236的优先级也变为95了呢?

这是因为20236是9188的子进程 会继承父进程的代码和数据

修改方式二 : 通过renice指令修改优先级

具体指令为renice + NI值 + 进程号

最后我们通过ps指令可以发现nice值被修改为了-20 最终的PRI值为60

此外需要注意的是 普通用户如果想要renice需要使用sudo指令 临时提升权限

进程优先级思维导图

进程的四个重要概念

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

环境变量

引出

下面我们会有两段命令的执行来验证环境变量的存在

我们首先写出了ls命令 系统给我们列出来当前目录下的所有文件

我们在这里发现了一个可执行文件test

我们如果想要执行这个可执行文件的话必须要使用这样子的指令

现在的我们很容易理解 . 是代表当前目录的意思 / 是目录分隔符

所以说./代表的就是当前目录下 实际上就是给出了一个相对路径

让在这个相对路径中寻找一个名叫test的可执行文件

也就是说如果我们直接输入test命令 系统会不知道我们要干什么

通过前面的学习我们知道了指令实际上也是一个可执行文件

那为什么我们直接输入文件名就可以执行该文件呢?

这就是因为环境变量的存在

相关文章
|
1月前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
82 1
|
13天前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
75 20
|
11天前
|
Shell Linux
Linux-环境变量
通过合理设置和管理环境变量,可以显著提高工作效率和系统管理能力。理解并掌握这些基本操作,是每个Linux用户和管理员的必备技能。
33 13
|
1月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
105 13
|
1月前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
1月前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
2月前
|
缓存 算法 Linux
Linux内核的心脏:深入理解进程调度器
本文探讨了Linux操作系统中至关重要的组成部分——进程调度器。通过分析其工作原理、调度算法以及在不同场景下的表现,揭示它是如何高效管理CPU资源,确保系统响应性和公平性的。本文旨在为读者提供一个清晰的视图,了解在多任务环境下,Linux是如何智能地分配处理器时间给各个进程的。
|
2月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
121 4
|
2月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
277 1
|
2月前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?

热门文章

最新文章