最近のインタビューでは、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 以降のデフォルトです。
答え4
これはあなたの他の質問への答えです。リアルタイムシステム(RTS)には、ハードリアルタイムシステムとソフトリアルタイムシステムの2種類があります。ハードRTSのCPUスケジューリングアルゴリズムは優先順位ベースのプリエンプティブアルゴリズムであり、ソフトRTSのCPUスケジューリングアルゴリズムは非プリエンプティブ優先順位です。