我某某人不允许还有人不了解《进程优先级》
Posted 做1个快乐的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我某某人不允许还有人不了解《进程优先级》相关的知识,希望对你有一定的参考价值。
困扰中国男性的一大问题:先救谁?
如上图所示,这是前几年困扰中国男性的一大难题,很多人的配偶会问出这样的疑问?在一个程序员看来,这就是一个优先级问题,你救的人在你心里的优先级肯定是高于另一个人的,那么什么是优先级呢?进程中的优先级是什么意思呢?该怎么控制优先级呢?今天小编带大家一探究竟。
进程优先级
1、什么是进程优先级
优先级本质上就是获得某种资源的优先顺序。而所谓的进程优先级就是一个进程相较于其他进程的优先级,本质就是谁先谁后的问题。
大家容易将优先级和权限混淆,这两个具有很大的差别:
权限:权限决定的是能或不能的问题。
优先级:在能的前提下,谁先谁后的问题。
所以要谈优先级,我们就默认是有权限的状态。
2、进程优先级存在的意义
我们了解了什么叫做进程优先级,那进程优先级为什么要存在呢?存在的意义又是什么?这个我们要从系统角度来具体分析:
首先,我们这里谈论的优先级是进程优先级,而进程在系统中是可能存在多个的,可是我们的计算机有可能只有一个CPU,并且大部分CPU都是单核的,这种情况下,我们的硬件资源归属于弱势资源,相反,进程则属于强势资源。我们想要做的,是要CPU执行进程,完成用户的各种任务,反过来说,我们可以看作是进程竞争式的申请CPU资源。即CPU资源有限,但申请者进程众多,所以此时操作系统对应的调度器必须得经过特殊的方式指派我们的CPU被哪个进程所拥有,这里一经指派,就会有先后的问题,那么谁先谁后就必须要有优先级的概念。
3、查看、修改、操控进程优先级
说了这么多我们对优先级有了初步的认识,那么优先级是可控的,答案是肯定的。我们用户可以决定哪一个进程优先被调用,当我们的任务众多,但是重要性和实时性都不同的情况下,我们可以优先去做一些事情,CPU也一样,我们也可以对某些进程做一些调整,此时被调整的进程就可以被CPU优先调度。
注意点:
A:优先级高的进程有优先执行权力,配置进程优先级对多任务环境的Linux很有用,可以改善系统性能;(只是改善了你的性能,可能会损害其他进程的性能)
B:还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。(如果一个进程一直被一个CPU调度,那么它的上下文信息、缓存的数据就不会花太多精力去来回切换保存)
C:调整优先级的本质是更改你所要调度的进程优先被调度,他提升的是局部的效率性能。
下面我们以Linux系统为例,为大家展示,如何查看并修改进程优先级。
3.1 查看进程优先级
3.1.1 认识PRI和NI
我们创建一个test.c和Makefile文件,然后运行,其代码和结果如下:
|
|
|
我们可以查看到进程的相关信息:
UID:进程执行者身份,即进程是由那个用户启动的。
PID/PPID:进程及其父进程的标识符,用来区分不同的进程。
PRI:priority优先级,即进程优先级。
NI:nice值。
TTY:代表进程所对应的终端,一个运行窗口对应一个终端。
在我们的Linux系统中,进程的优先级是由PRI+NI决定的。PRI代表这个进程可被执行的优先程度,其值越小越早被执行;NI代表这个进程的nice值Linux下一般默认PRI为80,nice值为0。
3.1.2 PRI和NI
☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️☀️
PRI and NI
(1)PRI即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小 进程的优先级别越高
(2)那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。
(3)PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
(4)综上,调整进程优先级,在Linux下,就是调整进程nice值 nice其取值范围是-20至19,一共40个级别。
💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥
PRI vs NI
(1)需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。
(2)可以理解nice值是进程优先级的修正修正数据
3.2 修改进程优先级
上一节中出现了PRI(new)和PRI(old)的概念,那么我们再ps -la时PRI那一列是old还是new呢?换句话说,我们ps -la看到的PRI是CPU真实看到的优先级数值吗?是old+nice还是其他呢?这就需要我们实际验证了。
调整进程优先级的方法有很多,我们今天使用top命令来调整进程优先级。top我们就相当于调出了linux系统下的一个任务管理器。它会每隔一段时间刷新系统中当前所处的一些状态,类似于windows下的任务管理器。
但是这样我们想找到我们刚刚运行的进程是比较麻烦的,此时我们top + r,然后出现一行:PID to renice,即你想renice哪一个进程,然后输入刚刚运行进程的PID,然后回车,出现renice PID to value,即想把nice值设为多少,刚刚为0,然后我们随便设置一个数,然后回车,然后退出top界面。
|
|
为了让大家有一个更清晰的认识,我们继续进行上述操作,将NI值改为100,我们知道NI的范围是[-20,19],我们强行输入100,查看结果。
我们发现myproc进程的NI值为-20,PRI值为60,这个60怎么来的呢?这是因为我们的PRI初始值为80,NI为0,然后NI最低为-20,当我们设置-100时,也是最小-20,所以80-20等于60。即我们每次设置NI,其PRI都是从80+NI,跟我们上一次设置无关。这也验证了我们的结论,每次的PRI都是从默认的80开始的。
❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️
以上,我们就介绍了什么是进程优先级、进程优先级的意义,以及怎么查看和修改进程优先级,如果大家看了文章后进行操作有问题或者不懂得地方,及时私聊作者。如果文章对你有帮助,快点三连吧!!!
以上是关于我某某人不允许还有人不了解《进程优先级》的主要内容,如果未能解决你的问题,请参考以下文章