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