タスクのコントロール

タスクのコントロール

タスクとはたとえばEXCELとかWORDとかPhotoShopとかその他CPUの計測プログラムとかを実行したとき、メモリーに乗りCPUの実行対象になったものを指します。またWORDなどのアプリケーションプログラムでプリンターを出力装置として使う場合、プリンターには直接出力しないで一時的にプリントイメージをディスク装置に出力します。このときのプリントイメージファイルをプリンターに出力するのもタスク(スプーラー)です。 一台のコンピュータで同時に複数の処理をこなすマルチタスク処理の実現方法のうち、CPUをOSが管理する方式をプリエンプティブなマルチタスク処理といいます。OSがCPUの処理能力(CPU Time)をそれぞれのアプリケーションソフトに割り当てて同時実行させるマルチタスク方式です。OSはハードウェアタイマーを参照しながら(タイムスライスヴァリュー)、実行待ち命令のあるアプリケーションソフトに短時間ずつCPUの実行権限を与えます。これをラウンドロビン方式と呼びます。OSが完全にCPUの割り当てを管理しているため、高い負荷のかかるアプリケーションソフト(入出力処理をあまり使わず、演算処理を多く行う)が動作していても他のアプリケーションソフトを動作させることが可能です。また、一つのアプリケーションソフトが異常終了してもシステム全体が影響を受けることはありません。このタスクのスイッチングロジックをスイッチャまたはディスパッチャと呼びます。ディスパッチャはOSの中核部分です。プリエンプティブマルチタスクを実装するとOSの処理が複雑になり、CPUを占有するアプリケーションソフトを切り替えるごとに処理が必要になりますが、現在のCPU性能ではこれらの処理によって生じる負荷は問題にならないほど小さいものとなっています。これに対してOSがCPUを管理せずに、実行中の各アプリケーションソフトで、自分が処理を行なわない「空き時間」を自発的に開放することによって、他のアプリケーションソフトと同時実行できるようにする方式は「ノンプリエンプティブマルチタスク」といいます。ノンプリエンティブなOSとしてはWindows3.1以前のもの、Mac OS 9以前のものなどがあり、OS/3、Windows/XP、Mac OS X、UNIXなどがプリエンプティブマルチタスクといえます。

イベントドリブン方式のOS

組み込み機器とリアルタイムOS(Real-time Operating System)とには密接な関係があります。
組み込み機器のプログラムメモリサイズが、64KB(キロバイト)未満では約20%、64~256KBでは50%、1MB以上ではほぼ100%にOS(Operating System)が組み込まれていて、そのほとんどがリアルタイムOSを採用しています。
ソフトウェアをうまく機能させるためには、必要なコンピュータ資源(CPU割り当て時間、メモリ、外部I/O機器)の割り当てを有効に管理する必要があります。ソフトウェアの規模が大きく、複雑になれば、必要な資源を管理することが困難になります。資源の管理を容易にしてくれるのがOSの役割です。
では、なぜ組み込み機器ではリアルタイムOSが必要になってくるのでしょうか。
組み込み機器の多くは、特定のイベントに対して、一定時間内に定められた処理を行うことが必要です。これら時間的要求の管理を容易にしてくれるOSがリアルタイムOSです。したがって、リアルタイムOSは実時間処理OSとも呼ばれています。
リアルタイムというと応答速度が速いことと誤解される場合が多いですが、そうではなくシステムが要求する時間的制約を満足できるかどうかで、リアルタイム性があるか否かが決まります。
通常は十分に速い応答速度だが時々遅くなるとか、周期的に動作するタスクの周期性のばらつきが大きすぎるとか、そのシステムが要求する時間的制約条件を満たさない場合は、リアルタイム性がないということになります。
この時間的制約条件を満足させるためには、システムの各処理(タスク)に優先度を付けて、優先度の高い順から効率よく切り替えて、各タスクの時間制約を守ろうとする機能が必要になります。そのために、リアルタイムOSでは、WindowsやUnixなどのOSとは異なり、事象駆動(イベントドリブン)型の優先度ベーススケジューリングを行うのが一般的です。