【问题标题】:Changing scheduling priority in freeBSD在 freeBSD 中更改调度优先级
【发布时间】:2014-05-31 06:13:29
【问题描述】:

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

【问题讨论】:

    标签: c multithreading kernel freebsd


    【解决方案1】:

    choosethread()/usr/src/sys/kern/kern_switch.c 中选择接下来要运行的胎面。这反过来又调用sched_choose()。根据您使用的调度程序,它位于/usr/src/sys/kern/sched_4bsd.c(用于旧调度程序)或/usr/src/sys/kern/sched_ule.c(ULE 调度程序,现在是默认设置)。

    【讨论】:

      【解决方案2】:

      这个问题的答案是改变函数runq_choose()。因为这个函数准确地显示了应该如何选择线程来放入运行队列。另一个功能只是确保整个排队过程正在完成。 'tdq_runq_add()' 用于处理分时和实时队列之间的协作。因此为了改变优先级,我们最好改变runq_choose()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-24
        • 2012-11-22
        • 2012-03-03
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 2012-03-06
        • 2023-04-08
        相关资源
        最近更新 更多