Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何检查内核是否对线程执行本地或全局调度_C_Multithreading_Process_Linux Kernel_Scheduler - Fatal编程技术网

C 如何检查内核是否对线程执行本地或全局调度

C 如何检查内核是否对线程执行本地或全局调度,c,multithreading,process,linux-kernel,scheduler,C,Multithreading,Process,Linux Kernel,Scheduler,我看到kernel/sched/core.c中的代码的哪一部分可以告诉我内核使用哪种类型的调度来调度线程。还是我找对了地方?一个多进程可以有多个线程,这些线程是如何调度的?基于进程(本地)或线程池(全局) 编辑: 我目前正在录制core.c文件中出现的context\u切换,以查看进程是如何切换的。但当我试图分析这些数据时,它变得太复杂了。有谁能建议一个更简单的方法吗 我在 但是我看不到它在任何地方以我能理解的方式被使用。我不是这方面的专家,但是你确定“内核正在使用哪种类型的调度”是一个明智的问

我看到
kernel/sched/core.c
中的代码的哪一部分可以告诉我内核使用哪种类型的调度来调度线程。还是我找对了地方?一个多进程可以有多个线程,这些线程是如何调度的?基于进程(本地)或线程池(全局)

编辑:

我目前正在录制
core.c
文件中出现的
context\u切换
,以查看进程是如何切换的。但当我试图分析这些数据时,它变得太复杂了。有谁能建议一个更简单的方法吗

我在


但是我看不到它在任何地方以我能理解的方式被使用。

我不是这方面的专家,但是你确定“内核正在使用哪种类型的调度”是一个明智的问题吗?我的理解(如果我错了,请纠正我)是调度程序是一个固定的算法,它的状态是您必须使用的。我收集的这些常量是可以通过每个进程查询的,而不是“每个内核”。@HostileFork我想知道线程的情况。对不起,我问了个模棱两可的问题。我已经编辑了这个问题,您是否查看了我上面评论中的链接?而且,它很旧,但是可以访问…而且可能很多它仍然适用。@HostileFork我确实看过那个文件。但我感到困惑,我需要一些关于何处是什么的提示和指针。这篇文章可能也会有帮助:
  /*
   * Scheduling policies
  */
  #define SCHED_NORMAL            0
  #define SCHED_FIFO              1
  #define SCHED_RR                2
  #define SCHED_BATCH             3
  /* SCHED_ISO: reserved but not implemented yet */
  #define SCHED_IDLE              5