ユーザープロセスが自分に最高の優先順位を割り当てることを防ぐために、どのようなセキュリティ制御がありますか?

ユーザープロセスが自分に最高の優先順位を割り当てることを防ぐために、どのようなセキュリティ制御がありますか?

私はLinuxプロセススケジューラについて学び、pthread_setsched関数について読みました。https://man7.org/linux/man-pages/man3/pthread_setschedparam.3.html

私を驚かせる一つのことは、スレッドが独自の優先順位/カテゴリを変更できることです。プロデューサーやコンシューマーなどの特定のマルチスレッドアプリケーションを構成するためにこれがどのように妥当であるかを知ることができますが、すべてのプロセスが独自の優先順位設定を要求する可能性があるため、システムの安定性のリスクがあるようです。私のhelloworld.outが最高の優先順位でSCHED_FIFOを要求できないのはなぜですか?これにより、システムが完全にロックされる可能性があります。

それでは、プロセスがスケジューラを完全に制御するのを防ぐメカニズムは何ですか?システムエラーEPERMを設定できるようですが、これはどこで構成されていますか?

答え1

カーネルはこれを行います。ルールについては後で詳しく説明します。「権限とリソースの制限」セクションman 7 sched;簡単に言えば:

  • SCHED_DEADLINEポリシーは、権限のあるスレッドによってのみ変更(使用)できますCAP_SYS_NICE
  • 0に設定されたリアルタイムスレッドは、RLIMIT_RTPRIO優先順位を下げるか、非リアルタイムポリシーに切り替えることができます。
  • ゼロ以外の値を持つスレッドは、優先RLIMIT_RTPRIO順位が高く設定されていない限り(権限のあるスレッドによって)この制限の対象となります。

スレッドはCAP_SYS_NICE必要なものは何でもできますが、他のすべては厳密に制御されます。

関連情報