Linux中进程的优先级
2014-05-07 23:36
330 查看
Linux采用两种不同的优先级范围,一种是nice值,另一种是实时优先级。
对于上述的两个问题,最好的回答方式就是用代码说话。
Linux 3.6内核中,关于进程的优先级,include/linux/sched.h文件中有如下的一段描述:
通过上述的描述和代码,我们可以看出:
1)
实时优先级的范围是0~99,nice值得范围是100~139。
2)实时优先级的优先级别要高于nice值。
那么如果几个进程同时含有上述两种优先级会怎么样呢?
优先级,而普通进程对应的则是nice值。这样的话,理论上就不会出现一个进程同时含有两种不同的优先级。那事实是不是这样的呢?再重复一遍上面的一句话:Linux中的进程分为实时进程和普通进程。其中实时进程对应的就是实时优先级,而普通进程对应的则是nice值。这样的话,理论上就不会出现一个进程同时含有两种不同的优先级。那事实是不是这样的呢?
可以使用如下命令来查看进程的优先级:
1.nice值
nice值得范围是-20~19,默认值是0。越大的nice值意味着更低的优先级,也就是说nice值为-20的优先级最高。2.实时优先级
实时优先级的范围是0~99,其值得意义与nice值相反。即:越高的实时优先级数值意味着进程优先级越高。Linux的进程可分为普通进程和实时进程,实时进程都是一些对响应时间要求比较高的进程,因此实时进程的优先级比普通进程的优先级要高。3.优先级比较
Linux中的这两种优先级划分,是不是难以理解?到底哪种优先级高?如果一个进程同时含有上述两种优先级呢?对于上述的两个问题,最好的回答方式就是用代码说话。
Linux 3.6内核中,关于进程的优先级,include/linux/sched.h文件中有如下的一段描述:
1597 /* 1598 * Priority of a process goes from 0..MAX_PRIO-1, valid RT 1599 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH 1600 * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority 1601 * values are inverted: lower p->prio value means higher priority. 1602 * 1603 * The MAX_USER_RT_PRIO value allows the actual maximum 1604 * RT priority to be separate from the value exported to 1605 * user-space. This allows kernel threads to set their 1606 * priority to a value higher than any user task. Note: 1607 * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO. 1608 */
1610 #define MAX_USER_RT_PRIO 100 1611 #define MAX_RT_PRIO MAX_USER_RT_PRIO 1612 1613 #define MAX_PRIO (MAX_RT_PRIO + 40) 1614 #define DEFAULT_PRIO (MAX_RT_PRIO + 20)
通过上述的描述和代码,我们可以看出:
1)
实时优先级的范围是0~99,nice值得范围是100~139。
2)实时优先级的优先级别要高于nice值。
那么如果几个进程同时含有上述两种优先级会怎么样呢?
优先级,而普通进程对应的则是nice值。这样的话,理论上就不会出现一个进程同时含有两种不同的优先级。那事实是不是这样的呢?再重复一遍上面的一句话:Linux中的进程分为实时进程和普通进程。其中实时进程对应的就是实时优先级,而普通进程对应的则是nice值。这样的话,理论上就不会出现一个进程同时含有两种不同的优先级。那事实是不是这样的呢?
可以使用如下命令来查看进程的优先级:
ps -eo state,uid,pid,ppid,rtprio,time,comm在我的机器上执行结果为:
[tuzhu@CentOS linux-3.6]$ ps -eo state,uid,pid,ppid,rtprio,ni,time,comm S UID PID PPID RTPRIO NI TIME COMMAND S 0 1 0 - 0 00:00:03 init S 0 2 0 - 0 00:00:00 kthreadd S 0 3 2 99 - 00:00:00 migration/0 S 0 4 2 - 0 00:00:00 ksoftirqd/0 S 0 5 2 99 - 00:00:00 migration/0 S 0 6 2 99 - 00:00:00 watchdog/0 S 0 7 2 99 - 00:00:00 migration/1 S 0 8 2 99 - 00:00:00 migration/1 S 0 9 2 - 0 00:00:00 ksoftirqd/1 S 0 10 2 99 - 00:00:00 watchdog/1其中RTPRIO表示的是实时优先级,NI即nice值。我们可以很清楚的看出,实时优先级和nice值是绝对不会重复存在的。
相关文章推荐
- linux下的core 文件
- linux之磁盘管理(四)
- Windows TortoiseSVN和Linux SVN入门
- LINUX进程通信--消息队列
- 美国军方无人机系统从Solaris切换到Linux
- 【Linux视频教程-韩顺平】常用命令
- linux下设备device_register和驱动driver_register先后注册的影响和关系
- Linux将进程写入开机自启动
- linux中断嵌套以及中断丢失
- centos6.4 安装Eclipse
- centos6.4 搭建JDK环境
- linux下关掉占用某端口的进程
- centos下安装eclipse
- vmware esxi5.1下的vmdk扩容(CENTOS)
- linux压缩、解压缩 命令总结
- (RHCE笔记)linux基础之四 权限详解
- Linux 中断实现
- Linux下删除文件之彻底删除文件(shred)
- linux上传war文件到服务器的简要步骤
- (RHCE笔记)linux基础之三 用户、组及权限