オリジナルOS「MicrOS」の設計と実装(4) ―― リアルタイム性の確保

田口 信夫

tag: 組み込み

技術解説 2008年10月14日

● プリエンプティブ・スケジューリング

 プリエンプティブ・スケジューリングとは,あるタスクが実行中にそれより高いタスクが実行可能状態になったときに優先度の高いタスクに切り替えて実行することです(図2).この動作のきっかけになるのは,割り込みの発生です(内部割り込みと外部割り込みのあるタスクが別のタスクを起動する場合,内部割り込みを使っていることが前提).

zu02_01.gif
図2 プリエンプティブ・スケジューリング
最初はタスクBが実行されていたが,ある瞬間にタスクAも実行可能になったとする.その場合,タスクAの方がタスクBよりも優先順位が高いので,タスクBの実行を中断し,タスクAを実行する.このように,実行権を横取りすることをプリエンプト(プリエンプション)と呼ぶ.

 この二つのスケジューリングは,μITRON系のリアルタイムOSで採用されています.FCFSの代わりにラウンドロビン方式を採用しているリアルタイムOSもあります.ラウンドロビンとは,同じ優先度のタスクに対してはできるだけ並行して処理を進めていくように制御する方式です.

● MicrOSはFCFSとラウンドロビンの両方に対応

 MicrOSはFCFSとラウンドロビンのどちらのスケジューリング方式でも選択できるようになっています.これを切り替えるのは簡単です.実行していたタスクをレディ状態に戻し,さらにプライオリティ・テーブルに戻すときにリンク・セルの先頭に戻すか最後尾に戻すかという違いだけです.このようなタイミングは,外部割り込み処理とタスクのウェイトを解除するようなシステム・コールが発行されたときだけです.いずれも__active関数をコールして処理しています.このなかでMicrOSの定義変数によって処理方法を切り替えることにより対処しています.

● リアルタイム性に関する議論

 リアルタイムOSの定義がタスク・スケジューリングの部分だけであれば,一見,UNIX系OSのリアルタイムOS化はそれほど難しくないように思えます.しかし議論が沸騰しているところをみると,OSのリアルタイム性というのはそれほど単純でないのかもしれません.

 「リアルタイム」は「時間的に処理を間に合わせる(時間通りに処理する)」という意味でした.しかし,特定のシステムを対象としていないOSに対して「リアルタイム」という形容を行うのは,無理があるのかもしれません.やはり,「リアルタイム・システムを制御することができるOS」程度に理解しておく方が安全なのかもしれません.

 リアルタイム性が足りないと表現されたとき,それは単に処理が間に合っていないことが多く,システムのチューニングなどによって解決する場合もあるからです.

● 現実的な「リアルタイム性」の解釈

 しかし,特定の組み込みOSのリアルタイム性について説明を求められたとき,上述のようなあいまいな表現は許されません.そんなときの答え方の一つをここに示しておきましょう.

 リアルタイム性を,タスクが発生し,そのタスク処理を行い,結果を返すまでの時間と仮定します.これをOSの処理に当てはめれば,「割り込みが発生して,それを受け付け,割り込みを処理して,次の処理に移行できるまでの時間」と考えられます.この時間がある一定の時間内に収まっていれば,そのアプリケーション・システムのリアルタイム性が保証できることになります.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日