Sha*_*han 6 c linux operating-system pthreads scheduled-tasks
线程(或任务)将通过使用大量CPU来丢失动态优先级,并通过使用较少的CPU获得优先级.如何为n个线程计算这些优先级(使用正常调度策略SCHED_OTHER)?
引用本文档第 5.4.2 节:
\n\n\nLinux 2.6.8.1 调度程序通过添加或减去任务\xe2\x80\x99 的静态\n优先级来奖励 I/O 密集型任务并惩罚\nCPU 密集型任务。调整后的优先级称为任务\xe2\x80\x99s 动态优先级,\n并且可以通过任务\xe2\x80\x99s
\nprio变量访问(例如p->prio,其中p\n 是一个任务)。如果任务是交互式的(I/O 绑定的调度程序\xe2\x80\x99s 术语),则其优先级会提高。如果它是一个CPU hog,它将受到\n惩罚。在 Linux 2.6.8.1 调度程序中,最大优先级奖励为 5,最大优先级惩罚为 5。由于调度程序使用奖励和惩罚,因此会考虑对任务\xe2\x80\x99s 静态优先级的调整。良好值为 -2 的轻度 CPU 占用可能具有动态优先级 0,这与既不是 CPU 也不是 I/O 占用的任务相同。
我觉得这个解释很公平。优先级是根据它是 CPU 密集型线程还是 I/O 密集型线程来计算的。关于您在问题中提到的内容,通过使用更少的 CPU 来获得优先级,而不是通过交互(I/O 限制)来获得优先级。我希望这段摘录能够回答您的疑问......
\n