Comments
Description
Transcript
プロセスのスケジューリング2
プロセスのスケジューリング2 リアルタイムスケジューリング もう少し違ったスケジュール法 もう少し違ったスケジュール法 • 要求条件が違うと、 スケジュール法も違ったものが欲しくなる • 例: リアルタイム要求 もう少し違ったスケジュール法 • 要求条件が違うと、 スケジュール法も違ったものが欲しくなる • 例: • ⇒ リアルタイム要求 リアルタイムって? リアルタイムとは • 訳すると 「実時間」 リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 • 「タイマーをかけた」というよりは、 その時間内にコンピュータが反応して欲しい リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 • 「タイマーをかけた」というよりは、 その時間内にコンピュータが反応して欲しい 例: 戦闘機の防御システム 攻撃を受けてからある時間内に反応しないと こちらが被害を受ける リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 • 「タイマーをかけた」というよりは、 その時間内にコンピュータが反応して欲しい 例: エンジンの燃料噴射制御 状況を0.x秒で分析して、噴射に反映したい 遅いとレスポンスが悪くなる リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 – 2)「やたら長くはない (適当な) 時間までに」 • 銀行のATMやみどりの窓口 5分も待たせたら客は帰ってしまうだろう リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 – 2)「やたら長くはない (適当な) 時間までに」 • 銀行のATMやみどりの窓口 5分も待たせたら客は帰ってしまうだろう 間に合わなくても破壊的なことにはならないが リアルタイムとは • 訳すると 「実時間」 • 「締切時間を気にする」ということ – ある時間までに処理して欲しい – 1)「3秒後までに」 「X時Y分までに」 – 2)「やたら長くはない (適当な) 時間までに」 –… いろいろあるだろう (前の到着順や処理時間順スケジューリングは いつ実行するのでもよかった) ことば(覚えておこう) • ハードリアルタイム – その時間までに処理できないと 壊滅的な打撃を受けるようなリアルタイム • 兵器の例、機械の制御の例 ことば(覚えておこう) • ハードリアルタイム – その時間までに処理できないと 壊滅的な打撃を受けるようなリアルタイム • 兵器の例、機械の制御の例 • ソフトリアルタイム – その時間までに処理できて欲しいが できなくても壊滅的な打撃は受けない リアルタイム • ATMや窓口の例 リアルタイム・スケジューリング リアルタイム・スケジューリング • リアルタイム(締切)の要求がある時の スケジューリング リアルタイム・スケジューリング • リアルタイム(締切)の要求がある時の スケジューリング 「デッドライン」と呼ぶ リアルタイム・スケジューリング • リアルタイム(締切)の要求がある時の スケジューリング • 先着順 や 処理時間順 は リアルタイムではない リアルタイム・スケジューリング • リアルタイム(締切)要求がある時の スケジューリング • 先着順 や 処理時間順 は リアルタイムではない、なぜなら – 先着順で、前の人の処理が非常に長いと、 自分は何時になるか、分からない リアルタイム・スケジューリング • リアルタイム(締切)要求がある時の スケジューリング • 先着順 や 処理時間順 は リアルタイムではない – 先着順で、前の人の処理が非常に長いと、 自分は何時になるか、分からない – 処理時間順では、処理時間が短い人が 後から次々と到着すると、先に入られて 自分は何時になるか、分からない リアルタイム・スケジューリング • リアルタイム(締切)要求がある時の スケジューリング • 先着順 や 処理時間順 は リアルタイムではない – 先着順で、前の人の処理が非常に長いと、 自分は何時になるか、分からない – 処理時間順では、処理時間が短い人が 後から次々と到着すると、先に入られて 自分は何時になるか、分からない 別のスケジューリング方法が必要 ラウンドロビン・スケジューリング • 一定時間ずつ順番にCPUを割り当てる A B C F E D 順番に割り当てる 一定時間経ったら次の人へ ラウンドロビン・スケジューリング • 一定時間ずつ順番にCPUを割り当てる – 一定時間=「タイムスライス」と呼ぶ – 一定時間CPUを使うと強制的に交代させる A B C F E D 順番に割り当てる 一定時間経ったら次の人へ ラウンドロビン・スケジューリング • 一定時間ずつ順番にCPUを割り当てる – 一定時間=「タイムスライス」と呼ぶ – 一定時間CPUを使うと強制的に交代させる A B C F E D 順番に割り当てる 一定時間経ったら次の人へ ラウンドロビンの語源は 自分で調べてみよ ラウンドロビンの性質は? • リアルタイムか? A B C F E D ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる A B C F E D ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる A B C F E D ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる – ⇒ (Nが一定なら) 一定時間内に処理される A B C F E D ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる – ⇒ (Nが一定なら) 一定時間内に処理される A B C F E D ある人がCPUを長時間占有する ことはない (必ず取上げ) ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる – ⇒ (Nが一定なら) 一定時間内に処理される A B C F E D ある人がCPUを長時間占有する ことはない (必ず取上げ) プリエンプション ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる – ⇒ (Nが一定なら) 一定時間内に処理される A B C F E D ある人がCPUを長時間占有する ことはない (必ず取上げ) Nが増えれば、時間は延びる ⇒ 必ずしも締切は守られない ラウンドロビンの性質は? • リアルタイムか? – 各人は必ずタイムスライス経過で打ち切られる – タイムスライス×N人で必ず廻ってくる – ⇒ (Nが一定なら) 一定時間内に処理される A ある人がCPUを長時間占有する ことはない (必ず取上げ) B C F E D Nが増えれば、時間は延びる ⇒ 必ずしも締切は守られない リアルタイムだが、ハードではない ラウンドロビンの性質は? • ハードリアルタイムにしたければ? A B C F E D ラウンドロビンの性質は? • ハードリアルタイムにしたければ? – 人数を制限する A B C F E D ラウンドロビンの性質は? • ハードリアルタイムにしたければ? – 人数を制限する • Nを超えないようにする • ⇒ 参加する時の手続きに「関門」を設け、 Nを超えるときは参加させず、 参加をあきらめさせる A B C F E D ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている – Windows ⇒ 複数の窓を開く・裏で印刷… • ユーザをあまり待たせずに応答する ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている – Windows ⇒ 複数の窓を開く・裏で印刷… • ユーザをあまり待たせずに応答する – Linux ⇒ サーバーでは多数の相手からの要求を 同時並行に処理するために使う • ユーザをあまり待たせずに応答する ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている – Windows ⇒ 複数の窓を開く・裏で印刷… • ユーザをあまり待たせずに応答する – Linux ⇒ サーバーでは多数の相手からの要求を 同時並行に処理するために使う • ユーザをあまり待たせずに応答する どちらも、ハードリアルタイムではない。 ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている – Windows ⇒ 複数の窓を開く・裏で印刷… • ユーザをあまり待たせずに応答する – Linux ⇒ サーバーでは多数の相手からの要求を 同時並行に処理するために使う • ユーザをあまり待たせずに応答する どちらも、ハードリアルタイムではない。 (参加プロセス数を制限していない) ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – WindowsやLinuxで普通に使われている – Windows ⇒ 複数の窓を開く・裏で印刷… • ユーザをあまり待たせずに応答する – Linux ⇒ サーバーでは多数の相手からの要求を 同時並行に処理するために使う • ユーザをあまり待たせずに応答する どちらも、ハードリアルタイムではない。 人間を相手にしているので、ソフトで間に合う ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – 銀行のATMやみどりの窓口など ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – 銀行のATMやみどりの窓口など – 人間が相手の場合、3~5秒程度は待たせてOK • それ以上になると文句を言う • ATMや予約窓口のアプリは、1つ1つの操作が 中断できない (中断すると途中状態が保存される) ので、タイムスライスによる中断は要注意 ラウンドロビンの使い道 • 対話型の仕事 (アプリケーション) に使う – 銀行のATMやみどりの窓口など – 人間が相手の場合、3~5秒程度は待たせてOK • それ以上になると文句を言う • ATMや予約窓口のアプリは、1つ1つの操作が 中断できない (中断すると途中状態が保存される) ので、タイムスライスによる中断は要注意 これも、完璧なハードリアルタイムでなくてよい。 人間を相手にしているので、ソフトで間に合う 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 – 装置制御などで周期的に処理が必要な事がある • 例: 0.1秒ごとにチェックして対応する 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 – 装置制御などで周期的に処理が必要な事がある • 例: 0.1秒ごとにチェックして対応する • 「周期スレッド」と呼ぶ 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 – 装置制御などで周期的に処理が必要な事がある • 例: 0.1秒ごとにチェックして対応する • 「周期スレッド」と呼ぶ – 処理の間隔も処理時間も決まっている • 但し、間隔・時間の違う複数の仕事が同時に存在 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 – 装置制御などで周期的に処理が必要な事がある • 例: 0.1秒ごとにチェックして対応する • 「周期スレッド」と呼ぶ – 処理の間隔も処理時間も決まっている • 但し、間隔・時間の違う複数の仕事が同時に存在 • また、リアルハードタイムを要求 周期的な仕事のあるリアルタイム • もう1つのリアルタイム ⇒ 周期的な仕事 – 装置制御などで周期的に処理が必要な事がある • 例: 0.1秒ごとにチェックして対応する • 「周期スレッド」と呼ぶ – 処理の間隔も処理時間も決まっている • 但し、間隔・時間の違う複数の仕事が同時に存在 • また、リアルハードタイムを要求 – これに対するスケジューリングとして • 締切り順、レートモノトニックなどがある 締切り順(EDF)スケジューリング • EDF = Earliest Deadline First 締切り順(EDF)スケジューリング • EDF = Earliest Deadline First • 締切時刻までの時間余裕が短いものほど 優先して先に処理する – Aの余裕が5でBの余裕が3なら、Bを先に実行 締切り順(EDF)スケジューリング • EDF = Earliest Deadline First • 締切時刻までの時間余裕が短いものほど 優先して先に処理する – Aの余裕が5でBの余裕が3なら、Bを先に実行 時間 プロセスA プロセスB 開 始 実行 開 始 残っている処理 実行 実行 実行 残っている処理 次に実行する プロセスを決める 時間余裕(5) 時間余裕(3) 締 切 締 切 締切り順(EDF)スケジューリング • EDF = Earliest Deadline First • 締切時刻までの時間余裕が短いものほど 優先して先に処理する – Aの余裕が5でBの余裕が3なら、Bを先に実行 – 予めプロセスの実行処理時間が分かっていなけ ればならない 締切り順(EDF)スケジューリング • 例: (教科書p32) スレ ッド 実行可能に なった時刻 残りの 実行時間 処理完了 締切時間 A 1 6 18 B 3 8 30 C 4 1 35 D 7 2 13 E 9 4 25 余裕 時間 割当て優先度 小さいほど高優先 締切り順(EDF)スケジューリング • 例: (教科書p32) スレ ッド 実行可能に なった時刻 残りの 実行時間 処理完了 締切時間 余裕 時間 A 1 6 18 18-6 =12 B 3 8 30 30-8 =22 C 4 1 35 35-1 =34 D 7 2 13 13-2 =9 E 9 4 25 25-4 =21 割当て優先度 小さいほど高優先 締切り順(EDF)スケジューリング • 例: (教科書p32) スレ ッド 実行可能に なった時刻 残りの 実行時間 処理完了 締切時間 余裕 時間 A 1 6 18 18-6 =12 2 B 3 8 30 30-8 =22 4 C 4 1 35 35-1 =34 5 D 7 2 13 13-2 =9 1 E 9 4 25 25-4 =21 3 割当て優先度 小さいほど高優先 レートモノトニック スケジューリング • RMS = Rate Monotonic Scheduling レートモノトニック スケジューリング • RMS = Rate Monotonic Scheduling • 起動される頻度が高いプロセス(スレッド)ほど レートモノトニック スケジューリング • RMS = Rate Monotonic Scheduling • 起動される頻度が高いプロセス(スレッド)ほど 高い優先度を割当てる レートモノトニック スケジューリング • RMS = Rate Monotonic Scheduling • 起動される頻度が高いプロセス(スレッド)ほど 高い優先度を割当てる • (ややこしいので詳細は省略) – こんな名前のものがある、程度にしよう レートモノトニック スケジューリング • RMS = Rate Monotonic Scheduling • 起動される頻度が高いプロセス(スレッド)ほど 高い優先度を割当てる • (ややこしいので詳細は省略) – こんな名前のものがある、程度にしよう – (横取り可能&固定優先度) のスケジューリ ングでは「最適」と知られている リアルタイムスケジューリングの 考え方が理解できましたか? 〇 次へ 64 ×