【Linux】进程概念(四):进程优先级调整
一、基本概念优先级实际上就是获取某种资源的先后顺序而进程优先级实际上就是进程获取CPU资源分配的先后顺序就是指进程的优先权priority优先权高的进程有优先执行的权力。为什么存在进程的进程优先级呢优先级存在的主要原因就是资源是有限的而存在进程优先级的主要原因就是CPU资源是有限的一个CPU一次只能跑一个进程而进程是可以有多个的所以需要存在进程优先级来确定进程获取CPU资源的先后顺序。二、查看系统进程代码语言javascriptAI代码解释ps -l包含重要信息解读UID代表执行者的身份。PID代表这个进程的代号。PPID代表这个进程是由哪个进程发展衍生而来的亦即父进程的代号。PRI代表这个进程可被执行的优先级其值越小越早被执行。NI代表这个进程的nice值。三、优先级的改变3.1 示例查看代码语言javascriptAI代码解释#include stdio.h #include sys/types.h #include unistd.h int main() { while(1) { printf(i am process,my PID:%d,my PPID:%d\n,getpid(),getppid()); sleep(2); } return 0; }在这里插入图片描述在 Linux 中每个 SSH 连接都会被分配一个独立的伪终端如pts/0、pts/1ps -l命令默认的作用域仅限于当前终端因此具有隔离性无法看到其他 SSH 窗口的进程而当你使用ps -al时参数-a指示系统显示所有终端下的进程打破了窗口限制所以你就能在新窗口成功“跨界”查看到原窗口运行的proc了。3.2 PRI和NIPRI表示越小就越快被执行那么加入NInice值后会变成PRI新PRI旧NI注意这个旧的PRI为初始值一直不变比如初始值PRI为80NI为10那么运算后新PRI为8010为90那么下次计算时PRI仍然使用初始值进行计算比如下一次NI为-10那么运算后新PRI为80-10为70这样NInice为负数那么那么该程序优先级的值的会变小即进程优先级会变高也就越快被执行即在linux中用户调整进程优先级的方式是调整nice值既然我用户可以调整优先级那么我可不可以将nice设置的非常小然后大大提高我们进程的优先级不可以linux本身是有调整优先级的调度器的调度器决定哪一个进程被优先调度即由调度器确定进程的优先级调度器使用调度算法极为合理的安排进程的优先级提高系统性能所以linux不想让用户过多的参与优先级的调整所以限定我们在一定范围进行调正 即nice值对应[-20,19]一共40个值那么当PRI为80时那么对应优先级就为[60,99]3.3 top进程优先级的调整需要使用su将普通用户切换到root用户,因为调整进程优先级需要toot权限su root进行提权top命令就相当于Windows操作系统中的任务管理器它能够动态实时的显示系统当中进程的资源占用情况。在这里插入图片描述使用top命令后按“r”键会要求你输入待调整nice值的进程的PID。在这里插入图片描述输入进程PID并回车后会要求你输入调整后的nice值。在这里插入图片描述输入nice值后按“q”即可退出如果我们这里输入的nice值为10那么此时我们再用ps命令查看进程的优先级信息即可发现进程的NI变成了10PRI变成9080NI。在这里插入图片描述3.4 renice使用renice命令后面跟上更改后的nice值和进程的PID即可。注意那么加入NInice值后会变成PRI新PRI旧NI注意这个旧的PRI为初始值一直不变那么下次计算时PRI仍然使用初始值进行计算。四、四个重要概念竞争性 系统进程数目众多而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高效完成任务更合理竞争相关资源便有了优先级。独立性 多进程运行需要独享各种资源多进程运行期间互不干扰。并行 多个进程在多个CPU下分别同时进行运行这称之为并行。并发 多个进程在一个CPU下采用进程切换的方式在一段时间之内让多个进程都得以推进称之为并发。