Fork me on GitHub

NICE与静态优先级的关系

在Linux系统中,nice值和静态优先级用于控制进程调度的优先级,但它们的范围和含义有所不同。让我们详细解释一下两者的区别和联系。

1. Nice值

  • 范围nice值的范围是从 -20 到 19。
    • -20:最高优先级。
    • 19:最低优先级。
  • 作用nice值用于调整进程的相对优先级。nice值越低,进程的优先级越高,调度程序会更频繁地调度该进程。
  • 修改方式:可以通过命令行工具如 nicerenice 来修改进程的 nice 值。

2. 静态优先级

  • 范围:静态优先级的范围是从 0 到 139。
    • 099:实时进程的优先级。
    • 100139:普通进程的优先级(由 nice 值确定)。
  • 关系:普通进程的静态优先级是由 nice 值计算得来的。计算公式是:
    静态优先级 = nice值 + 20 + 100
    
    因此:
    • nice 值为 -20 的进程,静态优先级为 -20 + 20 + 100 = 100(最高优先级)。
    • nice 值为 19 的进程,静态优先级为 19 + 20 + 100 = 139(最低优先级)。

区别与联系

  • nice值:是一个用户友好的方式,用于设置和调整进程优先级。用户可以方便地通过调整 nice 值来影响进程的优先级。
  • 静态优先级:是内核实际使用的优先级数值,用于调度程序决定进程的执行顺序。普通进程的静态优先级是由 nice 值换算而来的,范围在 100 到 139 之间。

示例

其中DEFAULT_PRIO的默认值为120,对应于Nice值为0。

NICE_TO_PRIO(nice) = nice + DEFAULT_PRIO
PRIO_TO_NICE(prio) = prio - DEFAULT_PRIO
  • 一个进程的 nice 值为 0,它的静态优先级为:
  -20 + 120 = 100
  • 一个进程的 nice 值为 -10,它的静态优先级为:
    -10 + 120 = 110
    

总结一下,nice 值是用户设置的相对优先级,而静态优先级是内核使用的绝对优先级。普通进程的静态优先级是通过 nice 值计算得来的,用于确定进程的调度顺序。

posted @ 2024-07-16 23:08  yooooooo  阅读(10)  评论(0编辑  收藏  举报