トロンフォーラム

Chap1:パソコンOSと組み込みOSの違い

1. 制御システムはイベントドリブン

ボタンが押された、データを受信した、センサが感知した・・・
このように、何らかの処理の切っ掛けになる出来事をイベント(事象)といいます。制御システムでは、このようなイベントが随時発生したり、周期的に発生したりします。イベントが発生してそれに対する処理が起動されるシステムをイベント駆動 (イベントドリブン Event driven)型のシステムといいます。

2. イベントの検知と処理の起動

制御システムのイベントは物理的には信号の変化、例えば電位パルスの発生によってもたらされます。マイコンで検知するにはマイコンの割込み機能を利用する方法があります。これは割込み用端子の信号レベルが変化すると特定のプログラムを起動するというしくみを利用します。 また、端子の信号レベル(Low またはHigh)を監視するプログラムを実行させ変化のあった時に該当する処理を起動させる方法があります。この監視操作をポーリング(polling)と呼びます。

3. イベントごとの処理時間は限られている

制御システムでは、「いつか処理が開始される」、「いずれ終了する」といった時間制約のない処理はほとんどありません。限られた時間内にデータを入力し、出力しなければならない一連の動作がイベントごとに生じます。これらの動作が複合してシステム全体が機能します。限られた時間内に応答するシステムをリアルタイムシステムといいます。必ずしも高速で処理しなければならないということではなく、定められた時間内に収まることがあくまでも要件です。制御のタイムオーダは制御対象によって異なり、人間の知覚レベルは数百ミリ秒、 時計の精度は100分の1秒、ハードウェアの制御はマイクロ秒といった具合です。これらが混在するシステムではイベントに応じて処理をうまく切り替えないとシステムとして成り立たちません。

4. ハードリアルタイムな処理とソフトリアルタイムな処理

時間制約にはそれが守られないとシステムの機能に影響を及ぼしてしまう場合もあれば、多少遅れても機能自身には問題がない場合もあります。前者の例としては入力信号の取りこぼしや信号の出力が間に合わないなど主にハードウェアを制御する場合に見られます。後者の例はキーや表示のレスポンスなどマンマシンインターフェースの処理に見られます。確実に時間制約を厳守しなければならない処理をハードリアルタイムな処理、そうでないないものをソフトリアルタイムな処理といいます。組込みシステムでは、ハードリアルタイムな処理をこなしながら、ソフトリアルタイムな処理を同時に行うことが要求されます。

5. 制御システムはマルチタスク

マイコン組込み機器では1つのCPUで複数のイベント処理を同時にこなすことが多く、時には一連の動作が平行して進行する場合もあります。しかし、 CPUは複数の命令系列を同時に実行することができません。では、1つのCPUでどのように並列実行させるのでしょうか。

  • 処理の待ち時間を利用する方法
    一連の処理の中には、さまざまな待ち状態が発生します。入力待ち、出力完了待ち、時間待ち、処理完了待ち、・・・etc。これらの待ち状態の間はCPUはフリーです。この間に他のイベント処理にCPUを割り当てる(処理プログラムを切り替える)と、並列実行、つまり「~しながら、~する」ことが可能になります。このCPU割り当ての処理単位をタスクといい、同時並行に処理することをマルチタスクといいます。 この方法はCPUの遊び時間を小さくし仕事時間を大きくすることができます。
  • 時間で処理を切り替える方法
    待ちが発生しなくとも、一定時間ごとにタスクを強制的に切り替えて寸断的に複数のタスクを平行処理します。

6. ハードリアルタイム処理には優先処理が必須

タイミングのズレがシステムに致命的な影響を及ぼすハードリアルタイムな処理では、実行中の処理が何らかの待ちに入らなければ切り替えられなかったり、一定のループ時間まで切り替えが待たされるようでは用を足しません。順番待ちを優先させる優先度処理が必要です。このような優先処理をプライオリティベースの切り替え処理といいます。さらに、必要に応じて、実行中の処理を中断してでも切り替えることが必要です。このような優先処理のことをプリエンプティブ(preemptive 先取り)な切り替え処理といいます。

※以上述べた組込みシステムでのタスクオペレーションの要件を備えたOSがμITRONに代表される組込みリアルタイムOSです。以上の機能を兼ね備えたリアルタイムOSを次のように表現します。

プリエンプティブでプライオリティベースのマルチタスク・リアルタイムOS

リアルタイムOSの製品カタログなどによく見かけられます。
これらの特徴は複数のユーザやアプリケーションにCPUを平等に割り当てることを基本的な目的としたUNIXやパソコンOSと異なるところです。このように、リアルタイム処理を主目的としたオペレーティングシステムとして、リアルタイムOSがあります。

Return Top