请教下各位高手,默认情况下 linux 里内核线程的优先级是不是始终比应用程序的优先级高?
我试着将内核进程和应用程序的优先级使用 cat /proc/pid/stat 打印出来看,结果如下:
root@am335x-evm:~# ./procstat 1
                 pid: 1
               tcomm: (init)
               state: S
                ppid: 0
                pgid: 1
                 sid: 1
              tty_nr: 0
            tty_pgrp: -1
               flags: 4194560
             min_flt: 54
            cmin_flt: 19277
             maj_flt: 97
            cmaj_flt: 477
               utime: 0.090000
               stime: 5.550000
              cutime: 0.410000
              cstime: 1.420000
            priority: 20
                nice: 0
        
         rt_priority: 0
              policy: 0
root@am335x-evm:~# ./procstat 682
                 pid: 682
               tcomm: (HMI_V2)
               state: S
                ppid: 1
                pgid: 628
                 sid: 628
              tty_nr: 0
            tty_pgrp: -1
               flags: 4194560
             min_flt: 5014
            cmin_flt: 1497
             maj_flt: 3248
            cmaj_flt: 455
               utime: 3756.070000
               stime: 573.020000
              cutime: 0.040000
              cstime: 0.160000
            priority: 1
                nice: -19
         
                 cpu: 0
         rt_priority: 0
              policy: 0从上面可以看出:
内核线程 init 其 priority 值为20,nice值为0;而应用程序 HMI_V2 其 priority 值为 1,nice值为 -19;我的疑惑是这两个值是如何决定优先级的?我之前的理解是,如果都是用户程序,则可通过 renice 调整其 nice值,值越小优先级就越高;但这个 priority 的值又该如何理解?请各位大侠赐教。