文章目录
- 🌈 Ⅰ 什么是优先级
- 🌈 Ⅱ 为什么存在优先级
- 🌈 Ⅲ 查看进程优先级
- 🌈 Ⅳ 修改进程优先级
🌈 Ⅰ 什么是优先级
优先级本质
- 指定进程获取某种资源的先后顺序。
- 在 Linux 中,使用 task_struct 进程控制块这个结构体来负责管理进程,在该结构体内部有很多的字段,而在结构体中就用一个整数或若干个整数来描述优先级。
- 优先级本质上就是个数字, Linux 中优先级数字越小,优先级越高。
优先级 vs 权限
- 权限:表示能不能去获取某种资源。
- 优先级:只要有了优先级,就表示已经能获取某种资源,看的就是获取资源的顺序。
🌈 Ⅱ 为什么存在优先级
资源有限
- 系统中进程大部分情况下有很多个,但是进程能够访问的资源始终是有限的。
- 个人电脑上的硬件大多数都只有一套,不同的进程都需要使用这些硬件资源。
🌈 Ⅲ 查看进程优先级
1. 查看指令
- ps -l:查看当前终端下启动的进程。
- ps -al:查看全部终端下启动的进程。
2. 查看示例
- 查看所有终端下启动的所有进程,当前所有终端下启动的进程就只有 myprocess.exe 和 ps 。
- PRI:表示进程优先级,PRI 值越小则优先级越高,PRI 默认为 80。
- NI:nice 值,表示进程优先级的修正值,取值范围为 -20 ~ 19,新PRI = 默认PRI (80) + NI。
🌈 Ⅳ 修改进程优先级
- 想要调整优先级 PRI 的值只需修改 nice 值即可,每次调整优先级都会自动用默认 PRI (80) 与修改后的 nice 值相加,形成新的 PRI 值。
1. 调整指令:top
2. 使用方式
- 在命令框输入 top 进入 top 模式.
- 按下 r 表示要进行 renice 操作调整 nice 值。
- 输入对应进程 pid。
- 输入要修改的 nice 值。
- 最后按 q 退出 top 模式。
3. 使用示例
- 使用如下代码生成的 .exe 可执行程序进程演示。
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main()
{
while (1)
{
cout << "I am a process, pid: " << getpid() << endl;
sleep(1);
}
return 0;
}