为什么Linux的允许线程设置调度策略和优先级?
问题描述:
我曾经以为,线程调度策略和优先级是由Linux内核决定的,当我们写在Linux上运行,直到我看到了系统调用像sched_setscheduler的应用程序,我们无法通过代码进行更改。我不知道为什么会的Linux提供了这种接口的应用程序,如果开发者想要他的申请有更好的用户体验,使他做出了他的申请正在运行的线程具有更高的调度优先级,他也同样可以通过类似sched_setscheduler接口这将使得在同一操作系统上挨饿运行其他应用程序。为什么Linux的允许线程设置调度策略和优先级?
答
想想周围的其他方法:你将如何曾经集调度策略和优先级,如果操作系统没有为您提供手段来做到这一点?任何用户/管理员执行这些操作的工具都需要这样的API。
当然,你需要权限许多操作,例如设置实时调度策略和优先级越高。与往常一样,root
(UID 0)可以做任何事情,但有通过能力一个更细粒度的控制(即具有CAP_SYS_NICE
一个进程被允许做任何事情)和资源限制允许访问到一个优先。有关详细信息,请阅读sched(7)
,部分“特权和资源限制”。
如果试图改变什么,你没有特权,sched_setscheduler()
只返回-1
年底成立errno
到EPERM
。