Linux-进程优先级
2018-03-15 14:56
134 查看
为什么要有优先级
显然,在多任务操作系统中,进程占用cpu必须需要人为能够控制。原因是因为:有的进程非常重要,有些进程当下来看没有那么重要。
所以就需要有优先级来区分他们。
进程是需要切换的,意味着在同一个调度周期中,优先级高的占用cpu的时间就长,优先级低的占用就短些。
NI and PRI
用ps -l命令可以查看以上字段,对他们都加以说明:
F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S 代表这个程序的状态 (STAT);
UID 代表执行者身份
PID 进程的ID号!底下的 PPID 则父进程的ID;
C CPU 使用的资源百分比
PRI指进程的执行优先权,其值越小越早被执行;
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序,一般就是『 - 』
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY 登入者的终端机位置;
TIME 使用掉的 CPU 时间。
CMD 所下达的指令名称
我们这里只对PRI和NI做详解,其他字段以后会说明。
先来解释PRI与NI是什么含义:
PRI:就是进程的优先级,其值越小,优先级越高 NI:即nice值。表示进程可被执行的优先级的修正数值 PRI(new)=PRI(old)+NI PRI与NI不是一个概念,是两个不同的概念。
修改NI
nice值的取值范围是:-20~19;一共40个级别。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。该值是可以命令修改的。
方法一
在程序运行前修改:
#include <stdio.h> #include <stdlib.h> int main() { while(1) { sleep(1); } return 0;
使用以上命令,在程序运行之前修改其nice值。
以上可查看到nice与PRI都被改掉了。
方法二:
调整已运行的程序的nice值:renice
查看当前运行中的进程的优先级:
修改正在运行的进程的优先级:
以上可看到nice值和PRI都被修改了。
方法三
用top命令,进入以后按r,输入pid号,在输入修改的nice值。可以看到以及被修改。
注意:虽然我们一直在说nice值,但是nice值并不是优先级,但他却能影响优先级的值。
引用网上的一个例子:(非常形象)
在英语中,如果我们形容一个人nice,那一般说明这个人的人缘比较好。什么样的人人缘好?往往是谦让、有礼貌的人。
比如,你跟一个nice的人一起去吃午饭,点了两个一样的饭,先上了一份后,nice的那位一般都会说:“你先吃你先吃!”,这就是人缘好,这人nice!但是如果另一份上的很晚,那么这位nice的人就要饿着了。
这说明什么?
越nice的人抢占资源的能力就越差,而越不nice的人抢占能力就越强。这就是nice值大小的含义,nice值越低,说明进程越不nice,抢占cpu的能力就越强,优先级就越高。
动态优先级与静态优先级
在原来使用O1调度的Linux上,我们还会把nice值叫做静态优先级,这也基本符合nice值的特点,就是当nice值设定好了之后,除非我们用renice去改它,否则它是不变的。而priority的值在之前内核的O1调度器上表现是会变化的,所以也叫做动态优先级。
在内核中,进程优先级的取值范围是通过一个宏定义的,这个宏的名称是MAX_PRIO,它的值为140。而这个值又是由另外两个值相加组成的,一个是代表nice值取值范围的NICE_WIDTH宏,另一个是代表实时进程(realtime)优先级范围的MAX_RT_PRIO宏。
总结:正常情况下,任何一个进程的优先级都是这个值,即使我们通过nice和renice命令调整了进程的优先级,它的取值范围也不会超出100-139的范围,除非这个进程是一个实时进程,那么它的优先级取值才会变成0-99这个范围中的一个。
详细可查看深入Linux的进程优先级
相关文章推荐
- Linux进程优先级的调整方法
- linux 使用nice命令设置进程优先级
- 16、在Linux下改变进程的优先级
- linux下设置进程优先级方法!
- LINUX进程优先级的设置和一些注意地方
- linux下关于进程优先级
- Linux进程优先级和nice值
- linux 进程优先级设置
- linux 提高进程优先级nice
- Linux下进程调度与优先级的深入分析
- linux进程优先级、进程nice值(转载)
- linux 进程优先级
- Linux进程优先级的处理--Linux进程的管理与调度(二十二)
- 进程和线程(修改优先级 Windows IPC 应用移植到 Linux)
- linux 进程优先级设置
- Linux改变进程优先级的nice命令
- linux 进程优先级设置
- linux CPU隔离和进程调度优先级设置
- Linux改变进程优先级的Nice命令
- linux ---进程优先级