今回は,組込みリアルタイムの基礎に関しての例題を取り上げます。いずれもTRON系OSでの開発に限らず,組込みリアルタイムOSを用いたシステム開発における基礎的な知識ですので,第一区分の問題になります。

例題1 テーマ:リアルタイムシステムとは何か

【問題】
リアルタイムシステムに関する説明として正しいものを,選択肢の中から一つ選べ。

【選択肢】

  1. 特定の処理を要求された時に,即座に反応して高速で処理するシステムのことをリアルタイムシステムという。ハードリアルタイムシステムとは,即座に反応して処理できなかった場合に,致命的なダメージを与えるシステムのことをいう。逆に,ソフトリアルタイムシステムとは,即座に反応して処理できなかった場合でも致命的なダメージを与えないシステムのことをいう。
  2. 決められた時間内に特定の処理を終了しなければならないといった,時間による制約が存在するシステムのことをリアルタイムシステムという。リアルタイムシステムの例としては,エンジン制御などの厳しい時間制約が必要なシステムがあげられる。
  3. リアルタイムシステムにおいて重要なのは,タスクスケジューリング時のスケジューリングアルゴリズムである。ラウンドロビンスケジューリングは,タスクの時間を均等に割り当てるため,タスクの実行時間予測が行いやすい。そのため,リアルタイムOSでは多く採用されている方式である。
  4. リアルタイムOSに要求される一般的な事項として,イベントに相当する割り込みに対する処理の高速性が重視される。ここでいう高速性とは,処理速度の平均値が特に重視され,最悪値は問われない。

正解(マウスでドラッグして文字を反転させてください)= 2

【解説】
 この問題は,リアルタイムシステムに関しての基本的な概念を問うものです。

 リアルタイムシステムとは,高速に処理を行うシステムという意味ではありません。リアルタイムシステムとは,例えば,事前に定められたデッドラインまでに必ず結果を出す,あるいは,決められた時刻に合わせて結果を出すといった,時間や時刻に関しての制約条件が要求されるシステムのことです。

 この時間制約は,ミリ秒やマイクロ秒のオーダーでの条件が必要とされることもありますし,逆に,数秒,数十秒という長いオーダーでの条件が要求される場合もあります。このような様々な時間制約条件を持ったタスクが組み合わさり,全体のリアルタイムシステムが構築されています。

 また,そのような時間制約が守られなかった場合に,致命的な障害となるシステムをハードリアルタイムシステム,時間制約が守られなくても致命的な障害にならないシステムをソフトリアルタイムシステムと呼びます。

---

 選択肢1は,「特定の処理を要求された時に,即座に反応して高速で処理するシステムのことをリアルタイムシステムという」と定義していますが,時間制約に関しては全く触れていないため,誤りとなります。

---

 選択肢2は,リアルタイムシステムの定義に合致しています。また,エンジン制御などの厳しい時間制約が必要なシステムは,まさにリアルタイムシステムが対象としている代表的なシステムですので,これが正解となります。

---

図1●「プリエンプティブな優先度ベース・スケジューリング」
図1●「プリエンプティブな優先度ベース・スケジューリング」
優先度の高いタスクが実行可能になると,実行中の優先度の低いタスクがプリエンプトされ,優先度の高いタスクが実行される

 選択肢3は,リアルタイムシステムのスケジューリングに関しての記述ですが,ラウンドロビンスケジューリングという部分が誤りです。多くのリアルタイムシステムでは,プリエンプティブな優先度ベース・スケジューリングが採用されています。

 「優先度ベース・スケジューリング」とは,実行可能なタスクの中で最も高い優先度のタスクから実行し,優先度の高いタスクが実行できなくなるまで,優先度の低いタスクは実行されないというスケジューリングです。また,「プリエンプティブ」とは「先取り可能」という意味で,優先度の高いタスクが実行可能になると,優先度の低いタスクが実行途中であってもタスク切り替えが発生して,優先度の高いタスクの実行が開始されることを指します。

 例えば図1では,最初は中優先度のタスクが実行されていますが,(A)の時点で高優先度のタスクが実行可能となるためプリエンプトされ,高優先度のタスクの実行が開始されます。

---

 選択肢4は,「処理速度の平均値が特に重視され,最悪値は問われない」という部分が誤りです。リアルタイムシステムでは,定められたデッドラインまでに必ず結果を出す必要があるわけですから,最悪値がどのくらいかということが重要となります。