Linuxでは、どのスケジューリングアルゴリズムが使用されますか?

Linuxでは、どのスケジューリングアルゴリズムが使用されますか?

最近のインタビューでは、Linuxオペレーティングシステムで使用されるスケジューリングアルゴリズムについて質問がありました。どのアルゴリズムが使用され、その理由は何ですか?

また、リアルタイムオペレーティングシステムはどのアルゴリズムを使用しますか?なぜ?

答え1

現在、LinuxタスクスケジューラはCFS(Completely Fair Scheduler)と呼ばれています。あなたは少し見なければなりません。http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt詳細については。私の考えでは、デザインはかなり複雑で、RTOSには適していません。

リアルタイムシステムの一般的な技術は、特定の仮定(静的タスクの優先順位、固定の実行時間と速度など)が維持されている場合に強力な保証があるため、スピード鍛造スケジューリングです。他にも多くのアルゴリズムがあり、それについて多くの研究がありました。したがって、基本的には、必要な属性、タスクについて知っている内容、変更する必要があるものについてです。

答え2

ラウンドロビンアルゴリズムは通常、時間共有環境で使用されます。

答え3

カーネル I/O スケジューリングについて考えているかどうかはわかりません。そうでない場合:この回答を無視してください。

ウィキペディアでは、次のように言います。CFG(完全に公正なキューイング)カーネル 2.6.18 以降のデフォルトです。

私のopenSUSE(カーネル2.6.37を実行)では、CFGでコマンドを実行できます。いいえそして締め切り

答え4

これはあなたの他の質問への答えです。リアルタイムシステム(RTS)には、ハードリアルタイムシステムとソフトリアルタイムシステムの2種類があります。ハードRTSのCPUスケジューリングアルゴリズムは優先順位ベースのプリエンプティブアルゴリズムであり、ソフトRTSのCPUスケジューリングアルゴリズムは非プリエンプティブ優先順位です。

関連情報