Linux用のスケジューリングアルゴリズムでSJFを使用できないのはなぜですか?
答え1
突然多くの理由が思い出されました。最短職業優先汎用システムでは完全に許可されていません。
最初の問題はすぐに名前にあります。 「最も短い」操作を事前に決定できる必要があります。ローカルディレクトリ内のプロセスはls
非常に短くてもかまいませんが、たとえば、シェルプロセスは1秒未満(短いスクリプトの場合)から数週間または数ヶ月(対話型シェルの場合)まで実行できます。オペレーティングシステムではこれは不明であり、ほとんどの場合、ユーティリティ自体も同様です。同時に実行できる多くの対話型ユーティリティが必要な場合が多いことは言うまでもありません。 (また、私がSJFを基本的な形で理解している限り、これはすべての関連問題を抱えている非線点型です。)
もちろん、「作業」という概念をプロセス全体よりも小さい単位に細分化すると、より便利になる可能性があります。ただし、これは新しい「作業」の始まりを知ることができないプロセスの概念にはまったく合いません。あるとしても、勤務期間がどれくらいになるかを知る必要があります。プロセスが通知する内容は信頼できますが、マルチユーザーシステムはいくつかの不公平を招く可能性があります。または、広告された作業長が実際の作業長と一致することを確認するためにいくつかのチェックを実行する必要がありますが、これは実際のOSスケジューラのように聞こえ始めます。
しかし、同様の概念が使用されていないという意味ではありません。私が覚えている限り、Linuxスケジューラには、インタラクティブプロセス(長期間アイドル状態であるが高い優先順位を持つ必要がある短期タスクを実行する)と非対話型プロセス(長い間アイドル状態でなければならない)を区別する機能があります。一定の速度で仕事をしてください。)