在freeBSD中更改调度优先级

时间:2014-04-16 11:36:12

标签: c multithreading kernel freebsd

我正在尝试更改在freeBSD中运行线程的调度方案。 freeBSD的默认线程调度基于线程的优先级,但我想将其更改为另一个条件。我想知道以下哪个函数负责此调度,sched_ule.c中的tdq_runq_add()或kern_switch.c中的runq_choose()

2 个答案:

答案 0 :(得分:0)

选择下一步运行的胎面将在choosethread()的{​​{1}}中完成。这反过来调用/usr/src/sys/kern/kern_switch.c。根据您使用的调度程序,这位于sched_choose()(对于旧调度程序)或/usr/src/sys/kern/sched_4bsd.c(ULE调度程序,现在是默认调度程序)。

答案 1 :(得分:0)

这个问题的答案是改变了函数runq_choose()。因为此函数准确显示应如何选择将线程放入正在运行的队列中。另一个函数只是确保整个排队过程正在完成。 &t'qdq_runq_add()'用于处理时间共享和实时队列之间的合作。因此,为了更改优先级,我们最好更改runq_choose()