2017-09-04 1 views
0

私は、スレッドスケジューリングの方針と優先順位はLinuxカーネルによって決まり、sched_setschedulerのようなシステムコールが表示されるまでは、Linuxで実行されているアプリケーションを書くときにコードで変更することはできません。私はなぜLinuxがアプリケーション用のこの種のインターフェイスを提供しているのだろうか。なぜなら、開発者が自分のアプリケーションのユーザーエクスペリエンスを向上させ、アプリケーションで実行されているスレッドのスケジューリング優先度をできるだけ高くするようにしたいのであれば、sched_setschedulerこれは、同じOS上で実行されている他のアプリケーションを飢えさせることになります。Linuxでスレッドがスケジュールポリシーと優先度を設定できるのはなぜですか?

答えて

3

は、周りのことについて、他の方法を考える:どのようになりますこれまでセットのスケジューリングポリシーと優先順位OS は、あなたがそれを行うには手段を提供しなかった場合は?ユーザー/管理者がこれらの作業を行うためのツールには、そのようなAPIが必要です。

はもちろん、あなたがリアルタイムにスケジューリングポリシーと高い優先順位を設定するように、多くの操作のための権限を必要としています。いつものように、root(UID 0)は何もすることができますが、能力てはるかにきめ細かい制御があります(CAP_SYS_NICEを持つプロセスは、すべての作業が許されている)と優先へのアクセスを許可するリソース制限 。詳細については、sched(7)のセクション「特権とリソースの制限」を参照してください。

あなたがのための権限を持っていない何かを変更しようとすると、sched_setscheduler()はちょうど-1最後はEPERMerrnoを設定戻ります。

関連する問題