为什么Linux允许线程设置调度策略和优先级



我曾经认为线程调度策略和优先级由linux内核确定,当我们在Linux上编写应用程序时,我们无法通过代码更改它们,直到我看到系统调用像 sched_setscheduler 。我想知道为什么Linux会为应用程序提供此类界面,如果开发人员希望他的应用程序具有更好的用户体验,以使他在应用程序中运行的线程具有更高的计划优先级,那么他可以通过<strong等接口尽可能多地使用。> sched_setscheduler 将使其他应用程序在同一操作系统上运行。

以相反的方式考虑一下:如果OS 未提供,您将如何 ever 设置调度策略和优先级意味着这样做?用户/管理员做这些事情的任何工具都需要API。

当然,对于许多操作,您需要特权,例如设置实时调度策略和更高的优先级。与往常一样, root(uid 0)可以做任何事情,但是通过(允许 CAP_SYS_NICE可以做任何事情)和资源限制允许访问给定优先级。有关详细信息,请阅读sched(7)," 特权和资源限制"部分。

如果您尝试更改任何您没有特权的任何内容,sched_setscheduler()只会返回-1 END将errno设置为EPERM

最新更新