我想研究如何将线程手动分配给多核机器上的特定内核。我发现 include/sched.h 定义了一些可以对此有所帮助的宏和函数(sched_setaffinity 等)。但是,这些函数是外部的,我找不到它们的定义。这些功能是否在任何地方实现?如果是,在哪里以及是否可以覆盖默认实现?如果没有,我该如何实施它们?
添加新的实现是否意味着我必须重新编译我的 Linux 内核?
检查BFS的代码,它应该向您展示如何实现自己的 CPU 调度程序。
//edit yes 添加一个新的调度器 impl 意味着你必须重新编译你的内核,但是你总是可以只用它来测试它,qemu -kernel /path/to/new/kerenl -initrd something
以确保你的代码在真实机器上测试之前不会立即崩溃。
sched_setaffinity 的代码在内核中。头文件只是提供原型来调用它,满足它的库只是将调用转发给系统。