【Linux】进程优先级 | 环境变量

目录

[Ⅰ. 进程优先级(Process Priority)](#Ⅰ. 进程优先级(Process Priority))

[1. 什么是进程优先级?](#1. 什么是进程优先级?)

[2. 查看系统进程](#2. 查看系统进程)

[3. 修改进程优先级](#3. 修改进程优先级)

4.优先级调度原理

[Ⅱ. 进程的切换(Process Switch)](#Ⅱ. 进程的切换(Process Switch))

[1. 竞争与独立](#1. 竞争与独立)

[2. 并行与并发](#2. 并行与并发)

[3. 进程抢占](#3. 进程抢占)

4.实现切换

[Ⅲ. 环境变量(Environment Variables)](#Ⅲ. 环境变量(Environment Variables))

[1. 什么是环境变量?](#1. 什么是环境变量?)

[2. 常见的环境变量](#2. 常见的环境变量)

[3. 设置环境变量](#3. 设置环境变量)

​编辑

文章手稿


文章手稿可见文末

Ⅰ. 进程优先级(Process Priority)

1. 什么是进程优先级?

  • cpu资源分配的先后顺序,就是指进程的优先级(priority)。
  • 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
  • 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

2. 查看系统进程

在Linux或Unix系统中,可以使用ps -l命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。PRI代表进程的优先级,NI代表进程的nice值。PRI值越小,进程的优先级越高。

查看一下:

3. 修改进程优先级

修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,数值越小,优先级越高。可以使用nicerenice命令或通过top命令进行修改。

复制代码
$ sudo top
# 在top命令界面按"r"键,输入进程PID和新的nice值

就可以发现修改成功啦

4.优先级调度原理

底层原理:

Ⅱ. 进程的切换(Process Switch)

1. 竞争与独立

  • 进程之间存在竞争性,因为系统资源有限。
  • 多进程运行期间,每个进程需要独享资源,不会互相干扰,这体现了进程的独立性。

2. 并行与并发

  • 并行是指多个进程在多个CPU下同时运行;
  • 并发是指多个进程在单个CPU下通过进程切换的方式,在一段时间内推进多个进程的执行。

3. 进程抢占

抢占式内核允许优先级高的进程抢占CPU资源。当一个低优先级进程正在运行时,如果来了一个高优先级的进程,调度器会将低优先级进程剥离CPU,切换到高优先级进程。

4.实现切换

当进程在被执行的过程中,一定会存在大量的临时数据,会暂存在 CPU 内的寄存器中。

我们把进程在运行中产生的各种寄存器数据,我们叫进程的硬件上下文数据。

  • 当进程被剥离:需要保存上下文数据
  • 当进程恢复时:需要将曾经保存的上下文数据恢复到寄存器中。

调度器根据保存的进程上下文,就可以实现进程切换啦

上下文在哪里保存?task_struct !


Ⅲ. 环境变量(Environment Variables)

1. 什么是环境变量?

环境变量是操作系统中用来指定运行环境的一些参数。它们通常具有全局特性,可以影响系统和应用程序的行为。

**❓ 思考:**为什么我们的代码运行要带路径,而系统的指令不用带路径?

系统中是存在相关的 环境变量,保存了程序的搜索路径的!

为什么我们的代码运行要带路径,而系统的指令不用带?其本质是由环境变量 PATH 引起的!

2. 常见的环境变量

我们可以通过 env 指令查看环境变量:

  • PATH: 指定命令的搜索路径

如何查看环境变量的内容?我们可以使用 echo 去显示:

环境变量 PATH 中会承载多种路径,中间用冒号 ( : ) 作为分隔符。

  • HOME: 指定用户的主工作目录
  • SHELL: 当前Shell的位置

3. 设置环境变量

可以使用echo命令查看环境变量的值,使用export命令设置新的环境变量。

复制代码
$ echo $PATH
$ export PATH=$PATH:/my/custom/path

为了使自定义的可执行程序不带路径也能执行,可以将程序所在路径加入到PATH环境变量中。

复制代码
$ export PATH=$PATH:/path/to/your/program

创建与删除:

复制代码
$ export MYENV="hello world"
$ unset MYENV

一些常见环境变量的查看:


文章手稿

相关推荐
偶像你挑的噻几秒前
5-Linux驱动开发-关于LED的字符设备
linux·运维·驱动开发·stm32·嵌入式硬件
mit6.8245 分钟前
dfs|bfs|定长栈|栈+双指针
算法
i***48611 小时前
【漏洞复现】CVE-2019-11043(PHP远程代码执行漏洞)信息安全论文_含漏洞复现完整过程_含Linux环境go语言编译环境安装
linux·golang·php
r***99821 小时前
使用 Certbot 为 Nginx 自动配置 SSL 证书
运维·nginx·ssl
普通网友1 小时前
基于C++的操作系统开发
开发语言·c++·算法
2501_941111342 小时前
C++中的策略模式高级应用
开发语言·c++·算法
wearegogog1234 小时前
时间分数阶微分方程数值求解
算法
CoderYanger4 小时前
A.每日一题——2536. 子矩阵元素加 1
java·线性代数·算法·leetcode·矩阵
普通网友4 小时前
C++与Qt图形开发
开发语言·c++·算法
KG_LLM图谱增强大模型5 小时前
Vgent:基于图的多模态检索推理增强生成框架GraphRAG,突破长视频理解瓶颈
大数据·人工智能·算法·大模型·知识图谱·多模态