首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解POSIX和Linux/glibc sched_*函数之间的差异

理解POSIX和Linux/glibc sched_*函数之间的差异
EN

Stack Overflow用户
提问于 2012-11-21 05:26:15
回答 1查看 889关注 0票数 13

POSIX XSH 2.8.4进程调度定义了线程和进程调度属性的行为。指定sched_*接口是为了影响进程的调度属性,而不是线程。以下段落对此作了澄清:

POSIX模型将“进程”视为系统资源的聚合,包括操作系统在其控制的处理器上调度的一个或多个线程。尽管进程有自己的调度属性集,但这些属性对单个线程的调度行为有间接影响(如果有的话),如下所述。

对于具有系统调度争用范围的线程,进程调度属性不应影响该线程或专用于该线程的底层内核调度实体的调度属性或行为。

我对此的解读是,在一个只支持“系统调度争用范围”(Linux/glibc就是这样一个系统)的系统上,sched_*函数应该没有明显的效果。

这与Linux/glibc上当前行为的实际情况相反,其中sched_*设置了特定线程的调度属性。

除了想更好地了解这种情况外,我想我还有以下几个关键问题:

  1. 是否有任何文件说明这一差异的理由?
  2. 我对标准的解读正确吗?特别是,在我看来,sched_setparamsched_setscheduler在单线程应用程序(主线程使用不可更改的默认调度策略和系统争用范围)中没有任何影响,这让我感到非常惊讶。
  3. 标准的sched_*函数有什么用处?在我看来,它们对大多数实现没有影响,甚至对支持流程争用范围的实现也没有任何影响。有人能描述一下它们的用途吗?
EN

回答 1

Stack Overflow用户

发布于 2012-11-21 14:10:22

在Linux中,sched_setparam等行为的基本原理是线程实际上是由clone(2)系统调用cf创建的进程。glibc/nptl/sysdeps/pthread/createthread.c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13486889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档