コース内容#
プロセススケジューリング#
- プロセススケジューリングはカーネルのサブシステムで、ユーザーは管理できない
- プロセススケジューリングの主なタスクは、どの準備完了状態のプロセスを最初に実行するかを決定すること
- 準備完了プロセスは非ブロッキングプロセスで、実行条件を満たしており、ブロックして待つ必要はない
- ブロッキングプロセスは、スリープ中のプロセス [CPU を占有しない] で、カーネルによって起こされる必要があるプロセス
三状態モデル#
- ブロッキング、準備完了、実行
-
- ブロッキングはシステムリソースを占有しない;準備完了はカーネルのスケジューリングを待つ;実行は IO リクエストや特定のイベントを待っているときにブロックされる
👉 五状態モデル
-
- 新規状態、終了状態を追加
単一タスクからマルチタスクへ#
- DOS は単一タスクオペレーティングシステムで、常に 1 つのプロセスだけを実行する
- プロセスは交互に実行され、多タスクのように見える
- マルチプロセッサは真の並列処理を実現できる
- 同時実行 VS 並列
- 同時実行:ある時間内に多くのタスクが進行する
- 並列:CPU の数だけタスクが同時に実行できる
- スケジューリングの核心:どのプロセスを実行し、どれくらいの時間実行するか
タイムスライス#
システムの全体的な動作と性能に強く影響する
- 長すぎる
- 👍:システムのスループットと全体的な性能を向上させる
- × :同時実行が減少する;ユーザーは明らかな遅延を感じる [応答能力が低下し、アプリケーションが多すぎるとスケジューリング間隔が長くなる]
- 短すぎる
- 👍:インタラクティブ性能を向上させる
- × :スケジューリングに多くの時間がかかる;時間局所性による性能向上が大幅に減少する
- 時間局所性:キャッシュ、記憶 [キャッシュは時間とともに徐々に構築される]
- 空間局所性:近接する空間のデータを事前に多く準備する
- 学習や予測の意味を持つ
- したがって、タイムスライスの長さは決定が難しく、解決策はタイムスライスを使用せず、完全公平スケジューリングアルゴリズムを採用すること
- システムは準備完了キューと優先度に基づいて調整する
- スケジューリング時間と優先度の配分は、本質的にユーザーにより良いサービスを提供するためのものであり、不公平ではない
- 詳細は以下の完全公平スケジューラを参照
プロセッサ制約型と IO 制約型プロセス#
プロセスが CPU を使用する特徴に基づいて分類され、プロセッサまたは IO の使用が多いかによる
- プロセッサ制約型
- 【常に利用可能なタイムスライスを消費するプロセス】
- 大量の CPU リソースを必要とし、スケジューラが割り当てた全ての CPU を消費する
- 例:while (1);、簡単に CPU 使用率を 100% にする
- タイムスライスの要求
- より長いタイムスライスを期待し、キャッシュヒットを最大化し、タスクをできるだけ早く完了させる [リソースを無駄にしない]
- IO 制約型
- 【大部分の時間がブロッキング状態またはリソースを待っているプロセス】
- ファイル IO 操作で頻繁にブロックされる:ファイル、ネットワーク、キーボード、マウス [音楽を聴いたり、タイピングしたりする場合];またはカーネルに I/O 操作を実行するよう要求する以外は何もしない [cp など]
- タイムスライスの要求
- より短いタイムスライスが必要で、スケジューリングされるのが早ければ早いほど、シームレスな接続の感覚が得られる
- プロセスは非常に短い時間だけ実行され、その後カーネルリソースでブロックされる;割り込みを使用する
スケジューラの分類#
協調型スケジューラ#
[干渉しない型、実用性は低い]
- プロセスは自分で終了するまで実行され続ける
- オペレーティングシステムは何の干渉もしない
強制型スケジューラ#
[タイムスライス型]
- カーネルはプロセスにタイムスライスを割り当て、タイムスライスが終了するとそのプロセスを一時停止 [リソースを占有しない] し、他のプロセスを実行する
- 他に準備完了のプロセスがない場合、カーネルは既に実行されたプロセスに再度タイムスライスを割り当てる
- スケジューラはプロセスの実行順序と時間を決定する
- [PS]
- 新規状態は準備完了キューに入り、終了状態は準備完了キューから退出する [五状態モデル]
- 優先度を考慮し、すべてのプロセスが実行される機会を持つ
完全公平スケジューラ#
[非タイムスライス型]
CFS:完全公平スケジューラ
- N 個のプロセスに対して、各プロセスに 1 / N の CPU 時間を割り当てる
- 優先度と重み
- 優先度が高いほど、値は小さく、重みは大きくなる
- デフォルトの優先度は 0、重みは 1
- 目標遅延:スケジューリングの固定周期
- 最小粒度:目標遅延が小さすぎて各プロセスの実行時間が短くなるのを避ける
👉公平配分
ヒント#
- 私は CPU です:この世界は遅い!死んでしまった!——WeChat 公式アカウント
- 面白い記事で、CPU とハードディスク、ネットワーク間の速度のギャップを理解する