内核线程和用户程序的优先级的问题;请教高手

yjzl1911 2017-10-26 11:16:57
请教下各位高手,默认情况下 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 的值又该如何理解?请各位大侠赐教。
...全文
427 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjpcn 2017-10-30
  • 打赏
  • 举报
回复
init不是内核进程,而是用户态的进程,内核进程的优先级总是高于用户进程的, 至于 priority 和nice之间的联系,得好好研究一下,网上有很多文章, 大致应该是priority+nice是最后的优先级,至于细节,你得结合着代码来看,并且不同的kernel版本,调度策略也不一样,

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧