目录
Ⅰ. 进程优先级(Process Priority)
1. 什么是进程优先级?
2. 查看系统进程
3. 修改进程优先级
4.优先级调度原理
Ⅱ. 进程的切换(Process Switch)
1. 竞争与独立
2. 并行与并发
3. 进程抢占
4.实现切换
Ⅲ. 环境变量(Environment Variables)
1. 什么是环境变量?
2. 常见的环境变量
3. 设置环境变量
编辑
文章手稿
文章手稿可见文末
在Linux或Unix系统中,可以使用ps -l
命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。PRI代表进程的优先级,NI代表进程的nice值。PRI值越小,进程的优先级越高。
查看一下:
修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,数值越小,优先级越高。可以使用nice
和renice
命令或通过top
命令进行修改。
$ sudo top # 在top命令界面按“r”键,输入进程PID和新的nice值
就可以发现修改成功啦
底层原理:
抢占式内核允许优先级高的进程抢占CPU资源。当一个低优先级进程正在运行时,如果来了一个高优先级的进程,调度器会将低优先级进程剥离CPU,切换到高优先级进程。
当进程在被执行的过程中,一定会存在大量的临时数据,会暂存在 CPU 内的寄存器中。
我们把进程在运行中产生的各种寄存器数据,我们叫进程的硬件上下文数据。
- 当进程被剥离:需要保存上下文数据
- 当进程恢复时:需要将曾经保存的上下文数据恢复到寄存器中。
调度器根据保存的进程上下文,就可以实现进程切换啦
上下文在哪里保存?task_struct !
环境变量是操作系统中用来指定运行环境的一些参数。它们通常具有全局特性,可以影响系统和应用程序的行为。
❓ 思考:为什么我们的代码运行要带路径,而系统的指令不用带路径?
系统中是存在相关的 环境变量,保存了程序的搜索路径的!
为什么我们的代码运行要带路径,而系统的指令不用带?其本质是由环境变量 PATH 引起的!
我们可以通过 env
指令查看环境变量:
- PATH: 指定命令的搜索路径
如何查看环境变量的内容?我们可以使用 echo
去显示:
环境变量 PATH 中会承载多种路径,中间用冒号 ( : ) 作为分隔符。
- HOME: 指定用户的主工作目录
- SHELL: 当前Shell的位置
可以使用echo
命令查看环境变量的值,使用export
命令设置新的环境变量。
$ echo $PATH $ export PATH=$PATH:/my/custom/path
为了使自定义的可执行程序不带路径也能执行,可以将程序所在路径加入到PATH环境变量中。
$ export PATH=$PATH:/path/to/your/program
创建与删除:
$ export MYENV="hello world" $ unset MYENV
一些常见环境变量的查看: