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中进程的优先级的更多相关文章

  1. linux中进程控制

    1.进程标识 每个进程都有一个非负整型表示的唯一的进程ID.进程ID标识符总是唯一的.  虽然进程ID是唯一的,但某个ID被回收后,ID号是可以复用的. ID为0的进程通常是调度进程(其常常被称交换进 ...

  2. 第11讲- Android中进程及其优先级

    第11讲Android中进程及其优先级 进程与线程: 进程:操作系统结构的基础,资源分配的最小单元,一个操作系统包括多个进程: 线程:线程存在于进程当中,是操作系统调试执行的最小单元,一个进程包括多个 ...

  3. [转]Linux中进程内存与cgroup内存的统计

    From: http://hustcat.github.io/about/ Linux中进程内存与cgroup内存的统计 在Linux内核,对于进程的内存使用与Cgroup的内存使用统计有一些相同和不 ...

  4. android中进程的优先级

    android中进程的优先级

  5. Linux中进程控制块PCB-------task_struct结构体结构

    Linux中task_struct用来控制管理进程,结构如下: struct task_struct { //说明了该进程是否可以执行,还是可中断等信息 volatile long state; // ...

  6. 『学了就忘』Linux系统管理 — 82、Linux中进程的查看(ps命令)

    目录 1.ps命令介绍 2.ps aux命令示例 3.ps -le命令示例 4.pstree命令 1.ps命令介绍 ps命令是用来静态显示系统中进程的命令. 不过这个命令有些特殊,它部分命令的选项前不 ...

  7. 『学了就忘』Linux系统管理 — 83、Linux中进程的查看(top命令)

    目录 1.top命令介绍 2.top命令示例 3.top命令输出项解释 4.top命令常用的实例 1.top命令介绍 top命令是用来动态显示系统中进程的命令. [root@localhost ~]# ...

  8. Linux 中进程的管理

    Linux 的进程信号 1  HUP  挂起 2  INT  中断 3 QUIT  结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能终止 17 STOP 无条件终止运 ...

  9. Linux中进程与线程的概念以及区别

    linux进程与线程的区别,早已成为IT界经常讨论但热度不减的话题.无论你是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.对于一般的程序员,搞清楚二者的概念并在工作中学会运用是 ...

随机推荐

  1. wampSever的mysql操作

    单击wampserver图标,选择mysql console 输入密码 123qwe,root用户默认密码为空 mysql客户端管理工具使用wampserver自带的phpmyadmin

  2. P2134 百日旅行 (斜率优化,DP)

    题目链接 Solution 斜率优化\(DP\). 今天下午才打的第一道题 QwQ... \(90\) 分很简单,一个简单的递推. 令 \(f[i]\) 为最后一天旅游的花费, \(g[i]\) 为最 ...

  3. js中的clientHeight和offsetHeight的区别如

    如图所示:

  4. Linux System Programming 学习笔记(九) 内存管理

    1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系 ...

  5. vue2.0组件入门

    如何定义一个组件 在根目录src/components/文件夹下新建组件的文件夹Footer.vue组件 在Footer.vue中 <template> <div class=&qu ...

  6. 应用css3制作loading效果

    参考秒味课堂 代码发出来备忘 html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  7. vue.js源码学习分享(二)

    /** * Check if value is primitive//检查该值是否是个原始值 */ function isPrimitive (value) { return typeof value ...

  8. luogu 1325 雷达安装

    题目链接 题意 在\(x\)轴上方有\(n\)个海岛,要在\(x\)轴建雷达,每个雷达的覆盖范围为半径为\(d\)的圆,问至少要建多少个雷达能覆盖所有海岛. 思路 对于每个海岛计算出雷达建立在什么范围 ...

  9. 40深入理解C指针之---指针与单链表

    一.指针与单链表 1.定义:通过使用指针将节点(结点)链接起来成为链表 2.节点(结点): 1).数据域:主要用来存储数据,可以基本数据类型,也可以是构造数据类型: 2).指针域:主要用来当前节点(结 ...

  10. hdu 3605 /状态合并最大流

    题意:N个人去m个星球,给出n个人可以去哪些星球的01矩阵.求是否能满足所有人都去.(n到10万,m<=10) 一看,起先一瞬间就建图,准备秒了,人向星球连边,直接最大流判断是否为n,提交超时. ...