MST'97 リアルタイムシステム特別セミナー

RTOS
RTOS を用いたを用いたリアルタイムシステムの開発手法
14th
14th Nov.
Nov. 1997
1997

高田高田 広章
広章
ITRON専門委員会／東京大学
ITRON専門委員会／東京大学 理学部
理学部
hiro@is.s.u-tokyo.ac.jp
hiro@is.s.u-tokyo.ac.jp
http://tron.um.u-tokyo.ac.jp/~hiro/
http://tron.um.u-tokyo.ac.jp/~hiro/

リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

はじめにリアルタイムシステムとは?
… いくつかの定義がある

処理結果の正しさが、出力される結果値の正しさに加えて、結果を出す時刻にも依存するようなシステム
多くの組み込みシステムはリアルタイムシステム
一部のタスクのみにリアルタイム性が求められる場合も! 単に高速なシステムをリアルタイムシステムと呼ぶわけではない

リアルタイムシステムの設計手法
システム設計時からリアルタイム性を考慮すべきリアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナーこの講演の目的
RTOS を使ったシステム設計における基本課題に1つの解1つの解どのようにタスク分割するか？
どのように優先度を付けるか？
リアルタイムスケジューリング理論からのアプローチ
タスク分割を行う理由
モジュール化のための分割 … 以下では扱わない
生産性, 保守性, 信頼性の向上- 異なる機能単位は別タスクへ- 開発者 (グループ) 毎にタスクを分ける
リアルタイム性向上のための分割
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

前提知識
RTOS のスケジューリング方式
優先度ベーススケジューリング
- 最も優先度の高いタスクが実行される- 優先度の高いタスクが実行できなくなるまで、優先度の低いタスクは実行されない- 同優先度間では FCFS (First Come First Served)
プリエンプティブスケジューリング
- 優先度の高いタスクが実行可能になると、優先度の低いタスクが実行途中であっても、タスク切替が起こる- 実行可能になるきっかけは割り込み! TSS のためのスケジューリングとは大きく異なる
リアルタイムシステムの開発手法

Hiroaki TakadaMST'97 リアルタイムシステム特別セミナー

タスク分割によるリアルタイム性の向上（例）タスクA … 処理時間：短，デッドライン：短タスクB … 処理時間：長，デッドライン：長タスクA
プリエンプトタスクB

RTOS なしで実現するためには…
タスクB の中で定期的にタスクA の実行が必要かをチェックする必要応答性が低下，チェックのオーバヘッドが増える
タスクB を改造するチェック箇所の見直し
リアルタイム性を持ったプログラムの保守性が向上
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

結論から言うと…

どうやって判定するか？

優先度割付
すべてのタスクが時間制約を守って実行できるなら急ぐタスクに高い優先度
時間制約を守れないタスクが出てくる場合には重要なタスクに高い優先度タスク分割
上記の優先度割付を可能にするようにタスクを分割する
急ぐ度合いが違う処理は別タスクに重要度合いが違う処理は別タスクに具体的にどうすれば良いか？
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

システム分析
システム → 機能 → 処理
ここでは、システムが機能を経て、個々の処理 (関数程度の大きさ, タスクより小さい) に分割されたところから考え始める
担当者/グループへの作業割り振りの単位

（例）
システム
FAXマシン機能- 通信機能- スキャン機能- プリント機能- ユーザインタ
フェース機能リアルタイムシステムの開発手法

処理- 1ライン分のデータを読み込む
指令を出す- 読み込んだデータをバッファに入れる- 紙を1ライン分送る指令を出す- 紙を終わりを検出する- 紙詰まりを検出する- ……
Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

処理の性質の洗い出し
起動タイミング/条件
その処理をいつ実行する必要があるか？
起動要因
外部イベント，時間，他の処理最大起動頻度
最大実行時間時間制約とその厳しさ

この2つの積がシステムにかける最大負荷処理の重要性処理をさぼることは可能か？
排他制御条件

リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

時間制約とは?
＝ 処理の実行完了時刻に関する制約
時間制約のタイプ
ある時刻までに実行完了しなければならない
本質的ある時刻以降に実行完了しなければならない「ある時刻」に実行開始すればよい
ある時間区間内に実行完了しなければならない
上の2つの組み合わせ出所に着目した分類(a) アプリケーションシステムの要請からくる本質的な時間制約(b) 用いるハードウェア構成の制限からくる時間制約(c) 用いるソフトウェア部品の制限からくる時間制約
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

体系的に洗い出すには?
(A) 入出力の時間的関係に対する制約(B) 入力間の時間的関係に対する制約(C) 出力間の時間的関係に対する制約
時間制約の厳しさ
ハードリアルタイム
ファームリアルタイム
ソフトリアルタイム
非リアルタイム
時間駆動型の処理に対する時間制約! この場合、本質は制御の精度
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

タスク分割の基本
同じ性質を持つ処理は同一のタスクへ
除: 最大実行時間，排他制御条件同一の起動タイミング/条件
同一の時間制約とその厳しさ
同一の処理の重要性! 分割しすぎはオーバヘッドの増大を招く
性質が少し違うだけの処理は、厳しい方の性質にあわせるなどの方法で、同一タスクに入れることが可能

優先度割付の基本
急ぐタスク程、高い優先度
リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

スケジュール可能性の解析
すべての処理のすべての性質がわかっていれば、時間制約を満たせるか（スケジュール可能性）を数学的に検証できる

過負荷対策
すべての処理を時間制約を満たすには、プロセッサの能力が足りない場合プロセッサを高速のものにする
バッファを使って負荷を均す
いずれかの処理をさぼる (QOS制御)

リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

負荷を均す【例】時間区間 [t1, t2] に実行完了すべき処理
時刻 t1 に実行開始すると、t2 までに実行を完了できない可能性
プロセッサに対する負荷が [t1, t2] に集中したため、処理能力をオーバーした処理を計算部分と結果を出力する部分に分割[t1, t2] には出力処理のみ行えばよいバッファを使って負荷を均すことができた

QOS制御
重要でない処理, さぼっても良い処理の優先度を下げる
重要なタスク程、高い優先度リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

その他の話題
排他制御
優先度逆転の問題に注意が必要
バッファの実現
RTOS のメイルボックス機能を使うのが手軽
他の処理による起動
RTOSのタスク間同期・通信機能を使うモードの導入システムの状態によって、動作するタスクの種類、タスクの振舞が大きく変化する場合
割り込みハンドラ

リアルタイムシステムの開発手法

Hiroaki Takada

MST'97 リアルタイムシステム特別セミナー

おわりにRTOS … 拡張性・保守性の高いリアルタイムシステムを実現する上で重要
RTOS の利点を活かす設計が必要- タスク分割- 優先度割付
ITRONプロジェクトでの取り組み
ITRONハードリアルタイムサポート研究会
リアルタイムスケジューリング理論に基づいたアプリケーション構築ガイドラインの作成 (ソフトウェア部品を重視)
それをサポートするためのカーネル仕様の検討
リアルタイムシステムの開発手法

Hiroaki Takada