gpt4 book ai didi

c - 如何知道 Darwin 内核调度程序时间片?

转载 作者:太空狗 更新时间:2023-10-29 17:13:47 25 4
gpt4 key购买 nike

在 Linux 上,sched.h 包含

的定义


int sched_rr_get_interval(pid_t pid, struct timespec * tp);

获取进程的时间片。然而,OS X El Capitan 随附的文件不符合该定义。

在 OS X 上有替代方案吗?

最佳答案

与这些东西相关的 API 非常复杂且文档很少,但这是我发现的。

首先,与 RR 调度相关的数据类型似乎在 /usr/include/mach/policy.h 中,大约在第 155 行。有这个结构:

struct policy_rr_info {
...
integer_t quantum;
....
};

quantum 是,我认为,时间片(不确定单位。)然后四处寻找在同一个地方定义的这个或相关类型,我发现了文件 /usr/include/mach/mach_types.def,其中说明类型 struct thread_policy_t 在第 203 行包含一个字段 policy_rr_info_t

接下来,我在 /usr/include/mach/thread_act.h 中找到了公共(public)函数 thread_policy_get,它可以将有关线程策略的信息检索到 结构 thread_policy_t *.

因此,向后工作。我认为(但根本没有尝试过)你可以

  1. 使用 thread_policy_get() 例程将有关线程调度状态的信息返回到 thread_policy_t
  2. 该结构似乎有一个policy_rr_info_t 子子结构
  3. 该子结构应该有一个 quantum 字段。
  4. 该字段似乎是时间片,但我不知道单位。

这部分 API 没有手册页,但是 this Apple Developer页面至少解释了一点有关如何使用此 API 的信息。

请注意,这一切都是从 grep 各种内核头文件中收集到的,我绝对没有尝试在任何实际代码中使用这些 API。

关于c - 如何知道 Darwin 内核调度程序时间片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com