• Linux中进程的优先级


    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值是绝对不会反复存在的。



  • 相关阅读:
    【转】C#中Invoke的用法
    SQLite判断某表是否存在
    qemu-kvm安装and配置桥接和SR-IOV
    Linux内核模块开发(简单)
    NetSpectre:通过网络读取任意内存
    Packet Chasing:通过缓存侧信道监视网络数据包
    Mastik:微体系结构侧信道攻击工具包
    infiniband网卡安装、使用总结
    NetCAT:来自网络的实用缓存攻击
    从线性回归案例理解深度学习思想
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6825138.html
Copyright © 2020-2023  润新知