12

スケジューラーをスケジュールするのは誰ですか?

最初に作成されたタスクはどれですか? この最初のタスクはどのように作成されましたか? それに必要なリソースやメモリはありませんか? 鶏が先か卵が先か、みたいなシナリオじゃない?

スケジューラはタスクではありませんか?どのタスクに CPU を割り当てる必要があるかを確認するために、各タイム スライスの最後に CPU を取得しますか?

心のこもった理論をこぼすのではなく、これらすべての概念を深く考えて理解させる良いリンクはありますか?

4

2 に答える 2

15

スケジューラーは

  • 割り込みなどの (外部) イベント (ディスク完了、マウス クリック、タイマー ティック)
  • または内部イベント (スレッドの完了、何かを待機する必要があるというスレッドによるシグナル、リソースを解放したというスレッドのシグナル、または次のような違法なことを行うスレッドによって引き起こされるトラップなど)ゼロ除算)

つまり、一連のタスクの実行や、それらのタスクの優先度の再評価が必要になる可能性のあるイベントによってトリガーされます。スケジューラは次に実行するタスクを決定し、制御を次のタスクに渡します。

通常、スケジューラのこの「スケジューリング」は、ハードウェア割り込みに関連付けられたコード、またはシステム コールに関連付けられたコードによって引き起こされます。

スケジューラは実際のスレッドと考えることができますが、実際にはそのように実装する必要はありません...他のタスクよりも高い優先度で実行されるためです。実際、洗練された OSは、スケジューラである特別なスレッドを脇に置き、スケジューラが制御を取得したときにビジーとマークする場合があります。それはきれいですが、偽のスレッドはスケジューラによってスケジュールされていません

複数のスケジューラーを持つことができます: 最も優先度の高いスケジューラー (たとえば、先ほど説明したもの) と、実際にはスレッドであり、他のユーザー タスクのように実行される他のスケジューラーです。このような優先度の低いスケジューラは、バックグラウンド ジョブなど、より長い間隔で発生するアクションを管理するために使用される傾向があります。

于 2010-02-12T08:38:42.187 に答える