- リアルタイム性とマルチタスクの関係性は何でしょうか?
- リアルタイム性とは、要求される期限までに処理が実行できる性質のことです。このリアルタイム性を実現するためにはいくつか方法がありますが、そのうちの一つにマルチタスクという機能があります。
マルチタスクとは、複数の作業を同時並行的に行うことです。
リアルタイム性とは
リアルタイム性とは、要求される期限までに処理が実行できる性質のことです。
リアルタイム性とは
リアルタイム性とは、要求される期限までに処理が実行できる性質のこと。また、リアルタイム性を実行するシステムを「リアルタイムシステム」と呼ぶ。
ロボット掃除機、洗濯機、ゲーム機、インターホンといった家電機器から医療機器、自動改札機、発電機器、監視カメラなどの産業機器などの組み込み分野では、処理の完了に期限が設定されます。
例えば、自動車に使用されている組み込みシステムを具体例として考えます。自動車には、自動車を制御するためのCPUが多く使用されています。これらのCPUは、ドライバーのアクセルコントロール量によって、エンジンの回転数や、噴出するガソリンの量をコントロールします。
この時、もしも自動車のエンジン制御で規定された期限内に処理ができなければ、エンジンの停止が起こるかもしれません。これにより、事故が発生してしまうリスクもあります。
上記のように、多くの組み込み機器は、リアルタイム性を要求します。しかし、要求される期限は機器によって異なります。このため、処理時間を機能仕様で厳密に定義することが重要です。
リアルタイム性については、以下の記事をご覧ください。
ポイント
- リアルタイム性とは、要求される期限までに処理が実行できる性質のこと
- リアルタイム性は、多くの組み込み機器で要求される
- 処理時間を機能仕様で厳密に定義することが重要
マルチタスクとは
マルチタスクとは、複数の作業を同時並行的に行うことです。
一般的には、ビジネス用語として使用されていますが、元々はコンピュータ用語として使用されています。
コンピュータにおけるマルチタスクとは、複数のタスクを並列して処理するために、CPUを仮想化、多重化するシステムのことです。
タスクとは
タスクとは、OSが処理するプログラムの最小単位のこと。
通常はシングルプロセッサシステムでは、1つのCPUにつき1つのタスクしか実行できませんが、マルチタスクにより複数のタスクを並列して処理できます。
このため、厳しいリアルタイム性を要求する組み込み機器においては、いかにマルチタスク機能を実現できるかが重要になります。
ポイント
- マルチタスクとは、複数のタスクを並列して処理するために、CPUを仮想化、多重化するシステムのこと
- 厳しいリアルタイム性を要求する組み込み機器においては、マルチタスク機能の実現が重要
マルチタスクを可能にするOS「マルチタスクOS」
マルチタスクを可能にするOSは、マルチタスクOSと呼ばれます。
一方、タスクを逐次処理することしかできないOSは、シングルタスクOSと呼ばれます。
マルチタスクOSの機能
前述の通り、マルチタスクとは、複数のタスクを並列して処理するために、CPUを仮想化、多重化するシステムのことです。これにより、複数のタスクを並列して処理できます。
しかし、厳密には、CPUは1度に1つのタスクしか処理できません。このため、正確には、タスクの実行を短い期間で切り分けることにより、疑似的に複数のタスクを同時実行させています。
では、どのようにして複数の処理を並行で実行するのでしょうか。
マルチタスクOSには、以下の2種類の方式があります。
- プリエンプティブ方式
- ノンプリエンプティブ方式
プリエンプティブ方式
プリエンプティブ方式では、優先度に応じてタスクを処理します。
プリエンプティブ方式
プリエンプティブ方式とは、マルチタスクの方式の一つ。優先度に応じてタスク処理のスケジューリングを行う方式。OSがタスクの切り替えを処理する。プリエンプティブ方式に対し、OSがタスクを管理しない方式は、ノンプリエンプティブ方式と言う。
実行可能状態の同一優先度のタスクが複数ある場合、プリエンプティブ方式では、先着順にタスクを実行状態に遷移させます。
また、実行中のタスクよりも優先度が高いタスクが実行可能状態になった場合、タスクの切り替えることで、優先度の高いタスクを優先的に実行します。
以上のタスクのスケジューリングや、タスクの切り替え(=ディスパッチ)は、OSによって制御されます。
プリエンプティブ方式は、OSの処理は複雑になりますが、1つのアプリケーションがエラーを起こしても、ほかのアプリケーションは影響を受けることなく処理を実行できます。
プリエンプティブ方式は、μITRONなどのリアルタイムOS(RTOS)で使用されています。
ノンプリエンプティブ方式
ノンプリエンプティブ方式は、疑似的なマルチタスクです。
OSがCPUの管理をせず、各プログラムが自発的にOSに制御を返し、他のプログラムへの切り替えを行います。
1つのプログラムが実行されていると、その他のプログラムの実行が制限されます。
このため、ノンプリエンプティブ方式は、プログラムに不具合が発生すると、特定の箇所で無限ループしたり、OSごとシステム全体が停止してしまうというリスクがあります。
ノンプリエンプティブ方式は、性能の低いCPUでも実現可能ですが、高いリアルタイム性が必要とされる組込み機器には適さない方式と言えます。
以前のMac OSや、Windows 3.1では、ノンプリエンプティブ方式を採用していました。
以上のことから、高いリアルタイム性が必要とされる組込み機器には、マルチOSの中でも、プリエンプティブ方式を採用としたRTOSが適しています。(RTOSにつきましては、後ほど説明します)
プリエンプティブ方式とノンプリエンプティブ方式の比較・違い一覧
プリエンプティブ方式とノンプリエンプティブ方式の特徴を纏めると、以下の通りです。
プリエンプティブ方式 | ノンプリエンプティブ方式 | |
---|---|---|
概要 | 優先度に応じてタスクを処理する方式 | 各プログラムが自発的にOSに制御を返し、他のプログラムへの切り替えを行う方式 |
メリット | 1つのアプリケーションがエラーを起こしても、ほかのアプリケーションは影響を受けることなく処理を実行し続ける | 性能の低いCPUでも実現可能 |
デメリット | OSの処理が複雑になる | プログラムに不具合が発生すると、特定の箇所で無限ループしたり、OSごとシステム全体が停止してしまうリスクがある |
RTOSへの適正 | 高 | 低 |
具体例 | μITRON | 以前のMac OS、Windows 3.1 |
ポイント
- マルチタスクを実現するOSはマルチタスクと呼ばれる
- 高いリアルタイム性を必要とする組込み機器には、プリエンプティブ方式を用いたRTOSが適している
リアルタイムOS(RTOS)とは
リアルタイムOS(以下、RTOS)は、リアルタイム性を持ったOSのことです。
リアルタイムOS(RTOS)とは
リアルタイムOS(RTOS)は、リアルタイム性を持ったOS。主に組込み機器に使用される。
RTOSは、プリエンプティブ方式を採用しています。
既に述べた通り、多くの組み込み機器は、リアルタイム性を要求しています。プリエンプティブ方式は、1つのアプリケーションがエラーを起こしても、ほかのアプリケーションは影響を受けることなく処理を実行し続けるため、ノンプリエンプティブ方式に比べて、リアルタイム性を担保できます。
この点、ノンプリエンプティブ方式は、プログラムに不具合が発生すると、特定の箇所で無限ループしたり、OSごとシステム全体が停止してしまうリスクがあります。
このため、RTOSは、リアルタイム性を要求する多くの組込み機器に採用されています。
RTOSの詳細は、以下の記事をご覧ください。