关于更改Linux调度程序/任务结构

83qze16e  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(132)

我正在做一个关于修改linux调度器的uni作业。
一般的想法是在每个任务的结构上添加一个整数,该整数将被初始化为零。
当调度程序被调用来执行这些任务时,如果整数为零,则应用正常的linux调度程序。如果它是一个,那么调度程序不会选择另一个任务,而是将控制权交还给该任务。
所以我遇到的问题是:
1.需要在task_struct上添加一个整数
1.需要创建一个终端命令,可以改变上述整数的值
1.需要在linux调度器上进行修改
我完全不知道如何做到这一点,甚至找不到内核代码中的task_struct定义。任何提示,答案或指南将不胜感激:)
已尝试从kernel.org下载所有内核代码(版本6.0.8)。搜索有用的资源,但没有找到。

cgh8pdjw

cgh8pdjw1#

对你的问题的一些回答

  1. task_struct位于/include/linux/sched. h文件中。
    1.解决方案之一是在用户空间创建一些程序,这些程序将调用内核模块中的一些函数
    1.当上下文执行从TASK_PLANNING更改为TASK_RUNNING时,可能需要更改变量值。这可以在/kernel/sched/core. c中完成。在代码中查找。
    注意事项:
  • 不要忘记在function *copy_process(kernel/fork.c)中初始化你的值。
  • 如果你需要在模块中获取值。请使用asm/current.h lib和var current。它是task_struct的示例。

相关问题