組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて
3. リアルタイムOSは普通のOSと何が違うか?
ここでいうOSとは,UNIX系OSやWindows,MacOSに代表されるパソコンあるいはワークステーション(WS)上で広く使われているOSを想定しています.この記事の中で「普通のOS」と呼ぶときは,パソコン用のOSやWS用のOSを指しています.
●リアルタイムOSの特徴
では,リアルタイムOSは普通のOSと比べ何が違うのでしょうか?ここではその特徴や違いについて考えてみたいと思います.
1) リアルタイムOSは普通のOSより時間に非常に厳しいOSである
飛行機の管制システムや医療システムなど,人命に関わるようなシステムでは,「最悪この時間までにできあがってないとまずい」というデッド・ラインが守られない場合は,システムが正常に動かないばかりか,大事故を引き起こしかねません.
このようなシステムにOSを搭載する場合,各処理のスケジュールを厳しく管理する必要があります.そのための機能を持っているOSがリアルタイムOSなのです.
2) 遅刻,遅延が許されない,早すぎてもいけない
遅刻・遅延は理解しやすいと思います.最悪,その時刻までに作業が完了しなければ,その後の作業に結果を引き継げないということであり,システム全体に致命的な影響を及ぼします.では,完了時刻が早すぎてもいけないとはどういうことでしょうか.
ご存じのとおり,組み込みシステムなどの,デスクトップ・パソコン環境と比べてシステムの拡張性や柔軟性が制限されるようなシステムでは,搭載しているメモリが最初から限られている場合がほとんどです.たいていの場合,あとから増設することも不可能です.炊飯器のような家電製品を考えていただければ理解しやすいと思います.このような場合には,「なるべく処理を速く終わらせて結果をメモリに蓄えておき,処理完了予定時刻がきたら,次のプロセスに渡す」という方法の実現が非常に難しくなります.無制限に処理結果を蓄えておくことが事実上不可能だからです.また,結果出力を定期的に行うシステムの場合,前段階の処理が早く終わってしまうと,結果出力がそのまま外に流れ出てしまいます.これは期待されていないことです.非常に時間に厳しいシステムの場合,むしろ悪い影響を及ぼしかねません.
このような理由で,遅刻厳禁はもとより,早すぎる処理も組み込みシステム向けのリアルタイム・システムでは許容できない場合があるのです.
3)複数のプロセスが同期または協調して動作しなければいけない場合も多い
リアルタイムOSは,ミッション・クリティカルなシステムに適用される場合も多々あります.「ミッション・クリティカルである」とは,次のように説明できます.
(a)ある期限までに仕事Aが終わっていないとその後行われるはずの仕事Bが開始できないような場合
(b)仕事Aそのものが破綻をきたすとシステム全体に悪影響を及ぼすような場合
こうしたケースの場合,仕事Aはミッション・クリティカルであるといいます.広義には,社会的にもっとも重要な基幹システム(銀行のオンライン・システムなど)を「ミッション・クリティカルなシステム」という場合もあります.いずれも複数のプロセスが協調して動作しなければならない処理です.
●リアルタイム性が必要な身近な事例
リアルタイム性が必要な身近な例の一つとしては,DVDに利用されているMPEG-2デコーダが挙げられます.MPEG-2の動画処理においては,時間どおりにデコード(decode:復号)処理が終わらないと動きがなめらかに見えなくなるといった不都合が生じます.最悪の場合は,まったく画像が表示されないことになります.