Instiq
第3章 · リアルタイムOSとタスク管理·v1.0.0·更新 2026/7/10·読了目安 約17分

変更要約: 初版

3.2スケジューリング

この節の要点

優先度ベーススケジューリングラウンドロビンの違い、固定優先度方式の代表であるレートモノトニック(RM)とそのスケジュール可能性の利用率上限(Liu&Laylandの式)、動的優先度方式のEDF(Earliest Deadline First)、そしてプリエンプションの有無が応答性に与える影響を、実際の周期タスク集合が締め切りを守れるかという判断とともに学びます。

複数のタスクが同時に「動きたい」と主張するとき、RTOSのスケジューラはどのタスクに次のCPU時間を渡すかを決めなければなりません。組込み設計者にとって重要なのは、アルゴリズムの名前を暗記することではなく、与えられた周期タスク集合が本当に全ての締め切りを守れるかを事前に計算で保証できるかという一点です。この節ではレートモノトニックとEDFという2大方式を、スケジュール可能性判定の実例とともに深掘りします。

3.2.1優先度ベースとラウンドロビン

  • 優先度ベーススケジューリング=各タスクに優先度を割り当て、常に実行可能な中で最も優先度の高いタスクにCPUを割り当てる方式。組込みRTOSの標準的な方式で、優先度が固定(静的)の場合と、実行時に動的に変化する場合がある。
  • ラウンドロビン=同一優先度のタスクが複数存在するとき、一定のタイムスライス(時間量子)ずつ順番にCPUを割り当てて公平性を保つ方式。優先度ベースと組み合わせ、「異なる優先度間は優先度で決定、同一優先度内はラウンドロビンで公平配分」とするのが一般的。

3.2.2レートモノトニック(RM)とスケジュール可能性

  • レートモノトニック(RM)周期が短いタスクほど優先度を高く固定的に割り当てる方式。周期が実行中に変化しない周期タスク集合に対しては、この割当が最適な固定優先度方式であることが理論的に証明されている。
  • スケジュール可能性の十分条件(Liu & Laylandの利用率上限)=各タスクの実行時間Ciと周期Tiについて利用率 U = Σ(Ci/Ti) を計算し、U ≤ n(2^(1/n) - 1)nはタスク数)を満たせば、その集合は必ずRMでスケジュール可能。n=2で約0.828、n=3で約0.780、n→∞で約ln2≒0.693に漸近する。
  • この上限を超えても直ちにスケジュール不能とは限らない(あくまで十分条件であり必要条件ではない)。より精密な判定には応答時間解析(RTA)を用いる。逆に上限以下なら無条件にスケジュール可能と断言できるのが実務上の価値。

3.2.3EDF(Earliest Deadline First)

  • EDF=優先度を固定せず、その時点で締め切り(デッドライン)が最も近いタスクに動的にCPUを割り当てる方式。単一プロセッサでは利用率 U ≤ 1(100%)であれば必ずスケジュール可能という、RMより緩い(有利な)十分十分条件を持つ理論上最適な動的優先度方式。
  • EDFは理論上RMより高い利用率まで許容できる(CPUを無駄なく使える)が、優先度が実行時に変化するため実装が複雑になりオーバーヘッドが増える過負荷時の挙動が予測しにくい(ドミノ的に複数タスクが遅延しうる)という実務上のデメリットがあり、組込みRTOSの多くは実装の単純さと過負荷時の予測可能性を優先しRMを採用する。
試験ポイント

「RMは周期が短いほど優先度が高い固定優先度方式」「Liu&Laylandの利用率上限はn=2で約0.828、n→∞で約0.693」「EDFは利用率100%までスケジュール可能だが過負荷時の挙動が予測しにくい」が最頻出です。利用率が上限を超えても即不能ではない(十分条件)点、EDFがRMより高い利用率を許すが実装が複雑になる点を混同しないこと。

あるファームウェア開発者が、モータ制御用の組込みシステムで2つの周期タスクを設計しているとします。タスクAは周期T1=20msで最悪実行時間C1=3ms(電流センサの読み取りとPID制御演算)、タスクBは周期T2=50msで最悪実行時間C2=10ms(通信インタフェースへのステータス送信)です。まず利用率を計算すると U = C1/T1 + C2/T2 = 3/20 + 10/50 = 0.15 + 0.20 = 0.35 となります。タスク数n=2のLiu&Layland上限は 2×(2^(1/2) - 1) ≈ 2×0.414 = 0.828 なので、U=0.35 ≤ 0.828 を満たし、RMで両タスクとも必ず締め切りを守れると設計段階で保証できます。ここでレートモノトニックの原則に従い、周期の短いタスクA(20ms)に高優先度、タスクB(50ms)に低優先度を割り当てます。もし将来、通信量の増加でタスクBの実行時間がC2=25msに増えたとすると、U = 0.15 + 0.5 = 0.65となり依然0.828以下でRMスケジュール可能ですが、さらにタスクCとして周期T3=100msC3=30msの処理を追加するとn=3となり上限は3×(2^(1/3)-1) ≈ 3×0.26 = 0.78に下がります。この時点の合計利用率U=0.15+0.5+0.3=0.95は0.78を超えるため、RMの十分条件では「スケジュール可能」と断言できず、より精密な応答時間解析(RTA)で個々のタスクの最悪応答時間を計算するか、EDFへの変更(EDFならU=0.95≤1でスケジュール可能と即断できる)を検討する必要があります。このように、タスクを追加するたびに利用率を再計算し、上限を超えたら安易に「間に合うだろう」で済ませず、RTAかEDFへの切替を検討するのが実務上の正しい判断です。

観点レートモノトニック(RM)EDF
優先度の決め方周期が短いほど高い(固定・静的)締め切りが近いほど高い(動的に変化)
スケジュール可能の十分条件U ≤ n(2^(1/n) - 1)(n=2で約0.828)U ≤ 1(100%まで理論上可能)
実装の複雑さ単純(優先度が固定でオーバーヘッド小)複雑(毎回デッドラインを比較し優先度を再計算)
過負荷時の挙動低優先度タスクから予測可能に遅延複数タスクが連鎖的に遅延しうる(予測しにくい)
注意

ひっかけ: 「利用率がLiu&Laylandの上限を超えた時点でそのタスク集合は必ずスケジュール不能である」は誤りです——上限は十分条件であり必要条件ではないため、上限超過でも実際にはスケジュール可能な場合があります(正確な判定にはRTAが必要)。また「EDFは実装が単純なので組込みRTOSで広く使われる」も誤り=EDFは動的優先度のため実装が複雑になりやすく、多くの組込みRTOSは実装の単純さからRMを採用します。

優先度/レートモノトニック/EDFの図。
期限を守る順番付け

3.2.4この節のまとめ

  • レートモノトニック(RM)は周期が短いほど優先度を高く固定する方式で、U ≤ n(2^(1/n)-1)を満たせば必ずスケジュール可能(十分条件)
  • EDFは締め切りが近いタスクを動的に優先しU ≤ 1まで理論上スケジュール可能だが、実装は複雑で過負荷時の挙動が読みにくい
  • 上限を超えても即不能と断定せず、応答時間解析(RTA)での精密判定やEDFへの切替を検討するのが実務上の判断

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 周期タスクA(T1=20ms, C1=3ms)とタスクB(T2=50ms, C2=10ms)の2つをレートモノトニックでスケジューリングしたい。利用率によるスケジュール可能性判定として正しいものはどれか。

Q2. モータ制御システムに3つ目の周期タスクを追加した結果、利用率がU=0.95、タスク数n=3となった(n=3の上限は約0.78)。この状況で取るべき最も適切な対応はどれか。

Q3. 過負荷が生じた際の挙動の予測しやすさを重視し、実装もできるだけ単純にしたいという要件がある。レートモノトニック(RM)とEDFのどちらを選ぶべきか、その理由とともに最も適切なものはどれか。

理解度を確認第3章「リアルタイムOSとタスク管理」の問題を解く