【问题标题】:preemption in FreeBSDFreeBSD 中的抢占
【发布时间】:2012-01-11 14:22:59
【问题描述】:

我现在正在寻找一段处理 FreeBSD 中内核抢占的源代码。

在 Linux 内核中,有一个名为“sched.c”的 c 源文件,其中 set_current_state() 宏用于设置进程的状态(TASK_RUNNING、TASK_INTERRUPTIBLE 或其他)。这些宏在“sched.h”中定义。您能告诉我 FreeBSD 内核源代码树中对应的源文件(如果它们存在于 FreeBSD 中,则包含这些宏的定义)?

【问题讨论】:

    标签: kernel freebsd


    【解决方案1】:

    相关文件为src/sys/kern/sched_4bsd.c(4BSD 调度程序)和src/sys/kern/sched_ule.c(ULE 调度程序)。但是没有 TASK_* 定义或 set_current_state() 宏,因为 FreeBSD 和 Linux 使用不同的调度程序。

    您可能需要阅读其中之一(我推荐 4bsd,因为它更简单)才能找到您感兴趣的内容。

    顺便说一句,有一个移植 Linux 的 BFS 调度程序的项目,代码在那里 http://rudot.blog.com/。您可能会发现它很有用。

    【讨论】:

    • 您好,感谢您的信息,抱歉回复晚了。 BFS 项目对我来说也很有趣。
    • 补丁正在github 上维护,使用 10.1-rc/amd64 对我来说可以正常工作。问候
    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2011-11-23
    相关资源
    最近更新 更多