
リアルタイムOS(RTOS)は、要求される時間内に処理が実行できるシステム(=リアルタイムシステム)を構築するためのOSのことです。RTOSは、産業ロボットや輸送機械など、主に組み込み機器向けのOSとして使用されています。
リアルタイムOS(RTOS)とは
リアルタイムOS(RTOS)とはリアルタイムシステムを構築するためのOS
リアルタイムOS(RTOS)は、要求される期限までに処理が実行できるシステム(=リアルタイムシステム)を構築するためのOSのことです(以下、RTOS)。
リアルタイムシステム
リアルタイムシステムとは、要求される期限までに処理を実行するシステムのこと。また、この要求される期限までに処理を実行できる性質を「リアルタイム性」と呼ぶ。
RTOSは、ロボット掃除機、洗濯機、ゲーム機、インターホンといった家電機器から医療機器、自動改札機、発電機器、監視カメラなどの産業機器などで使用されています。
組み込み分野では、処理の完了に期限が設定されます。この期限内の処理に応えるよう設計されたOSがRTOSです。
例えば、自動車に使用されている組み込みシステムを具体例として考えます。自動車には、自動車を制御するためのCPUが多く使用されています。これらのCPUは、エンジンの回転や、噴出するガソリンの量をコントロールします。
この時、もしも自動車のエンジン制御で規定された期限内に処理ができなければ、エンジンの停止が起こるかもしれません。これにより、事故が発生してしまうリスクもあります。
上記のように、多くの組み込み機器は、リアルタイム性を要求します。しかし、要求される期限は機器によって異なります。このため、処理時間を機能仕様で厳密に定義することが重要です。
リアルタイム性の種類
既に述べた通り、多くの組み込み機器は、リアルタイム性を要求しますが、要求される期限はそれぞれの機器によって異なります。
リアルタイム性は、「ハードリアルタイム」と「ソフトリアルタイム」という2種類に大別されます。
- ハードリアルタイム:厳しいリアルタイム
- ソフトリアルタイム:緩いリアルタイム
ハードリアルタイムとソフトリアルタイムは、具体的な時間を境に分けられるものではありません。もしもその期限内に処理を行えなかった場合、致命的な事故が起こるかどうかによって決まります。
ハードリアルタイムは、厳しいリアルタイム
「ハードリアルタイム」は、定められた期限内に確実に処理を完了しなければならないものを指します。もしもその期限内に処理が完了しなかった場合、致命的な事故が発生したり、壊滅的な結果となるリスクがあります。また、ハードリアルタイムは、その即時性が守られなかった瞬間に、その処理やシステム、機器の価値がゼロになってしまいます。
例えば、先程紹介した自動車のエンジンの事例は、ハードリアルタイム性を必要とします。このほか、自動車のエアバッグ機能や、航空機の航法システムなどもハードリアルタイムと言えます。
ソフトリアルタイムは、緩いリアルタイム
ハードリアルタイムに対し、比較的期限の制約が緩く、利用者が許容できる範囲で処理が完了すれば良いものや、リトライ(やりなおし)によって機能を修復できるものを「ソフトリアルタイム」と言います。
ハードリアルタイムでは、即時性が守られなかった瞬間に機器やシステムの価値がゼロになったのに対し、ソフトリアルタイムは、遅れた時間によって徐々に価値が減少していく性質を持ちます。
例えば、銀行のATMなどは、多少即時性が守られなかったとしても、大きな事故や損失には繋がらないため、ソフトリアルタイムと言えます。また、自動販売機や、座席予約システムなどもソフトリアルタイムです。
既に述べた通り、ソフトリアルタイムは、万が一定められた期限を守れなかったとしても、致命的な事故が発生するリスクはありません。
しかしながら、ソフトリアルタイムであっても、基本的には期限内で処理が完了できるように設計する必要があります。ソフトリアルタイムシステムのプログラムの構成によっては、処理の遅延が累積してしまうと、正常に動作できなくなるリスクもあるのです。
ハードリアルタイムとソフトリアルタイムの違い・比較表
上記で述べたハードリアルタイムとソフトリアルタイムの違いを比較表として纏めると、以下の通りです。
ハードリアルタイム | ソフトリアルタイム | |
---|---|---|
リアルタイム性 | 最重要 | 重要 |
回線の安定性 | 高 | 低 |
即時性が守られなかった場合の事故リスク | 高 | 低 |
即時性が守られなかった場合のシステムや機器の価値 | すぐにゼロになる | 徐々に減少する |
ポイント
- RTOSは、リアルタイムシステムを構築するためのOS
- RTOSは、多くの組み込み機器で要求されるリアルタイム性に応えるよう設計されている
- 「ハードリアルタイム」は、定められた期限内に確実に処理を完了しなければならないリアルタイム
- 「ソフトリアルタイム」は、比較的期限の制約が緩く、利用者が許容できる範囲で処理が完了すれば良いリアルタイム
リアルタイムOS(RTOS)の機能
リアルタイムOS(RTOS)の構成
RTOSは、カーネルとドライバによって構成されます。
- カーネル:タスクをスケジューリングするプログラム
- ドライバ:各種入出力の制御、ファイルシステム、ネットワークプロトコル
RTOSを含むリアルタイムシステムの構成は、以下の通りです。
カーネル=タスクをスケジューリングする部分
RTOSの中心機能を果たしているプログラムを、カーネルと呼びます。組み込みシステム開発では、カーネルは、タスクのスケジューリング機能(=どのタスクを実行するか決定する機能こと)を持っています。
タスクとは
タスクとは、OSが処理するプログラムの最小単位のこと。
カーネルはタスクを管理し、優先度に応じて処理を制御しています。
ドライバ=入出力制御、ファイルシステムを担う部分
RTOSの中心部分がカーネルであるのに対し、ドライバはその周辺機能を果たしています。ドライバは、入出力制御、ファイルシステム、ネットワークプロトコルなどを含み、主にハードウェアへのアクセス機能を提供しています。
カーネル・ドライバの機能
カーネルやドライバは、以下の機能を提供しています。
カーネルの機能
- 割り込み管理・処理
- 同期制御
- 通信制御
- 排他制御
- タスクスケジューリング
ドライバの機能
- ハードウェア制御
RTOSの中心機能であるカーネルは、タスクの優先度に応じて、スケジューリングを行います。このスケジューリングをタスクスケジューリングと呼びます。
カーネルが優先度の低いタスクを実行待ちに変化させ、順番に処理されるよう制御しています。
これらの機能をまとめた図が、以下のものです。
出典:独立行政法人情報処理推進機構『OSSモデルカリキュラムV2(2011年5月公開)8-1-基 組み込みシステム開発に関する知識p.8-1-基 – 7』
リアルタイムOS(RTOS)が持つマルチタスク機能
RTOSの中心部分であるカーネルが持つ主な機能の一つに、マルチタスク機能があります。
マルチタスク機能とは、複数のタスクを並列して処理するために、CPUを仮想化、多重化するシステムのことです。
通常はシングルプロセッサシステムでは、1つのCPUにつき1つのタスクしか実行できませんが、これにより複数のタスクを並列して処理できます。
リアルタイムOS(RTOS)の割り込み管理・処理
カーネルが持つ機能として、割り込み管理・処理機能があります。
割り込みとは
実行中の処理とは異なる、優先度や緊急度の高い処理を実行するよう要求すること。発生要因がプログラム内部にある場合は内部割り込み、外部にある場合は、外部割り込みと呼ぶ。
割り込みが発生した際、割り込み管理機能により、実行されるプログラムを管理します。この時実行されるプログラムを、割り込みサービスルーチン、または割り込みハンドラと言います。
具体的には、プログラムの生成・削除、状態参照、割り込みの禁止・許可などを行います。
ポイント
- RTOSは、カーネルとドライバの2つの部分によって構成される
- RTOSは、マルチタスク機能や割り込み管理・処理機能などを提供している
リアルタイムOS(RTOS)のメリット
RTOSのメリットは、以下の通りです。
- 複数の機能を並列実行できる
- 大規模な開発が可能
- メンテナンス性(保守性)の向上
【メリット1】複数の機能を並列実行できる
RTOSの持つマルチタスク機能により、複数の機能を簡単に並列実行できるようになります。また、優先度の高いタスクから実行することができるため、組み込み機器に必要とされるリアルタイム性を確保できるようになります。
【メリット2】大規模な開発が可能
RTOSのタスク機能により、プログラムをタスクに分割することができます。これにより、機能のモジュール化が行いやすくなるため、シンプルなプログラム構成を維持できます。このため、ソフトウェアの開発規模が大きくなったとしても、シンプルな構成を維持しやすくなります。
【メリット3】メンテナンス性(保守性)の向上
前述の通り、RTOSのタスク機能により、プログラムをタスクに分割し、機能のモジュール化が可能になります。これにより、可読性が向上し、メンテナンス性(保守性)も向上します。
リアルタイムOS(RTOS)のデメリット
ここまでRTOSのメリットを挙げてきましたが、反対にデメリットも存在します。
RTOSのデメリットは、以下の通りです。
- ハードウェアの資源を消費する
- RTOSを扱うためのスキル、習得に伴うコストがかかる
【デメリット1】ハードウェアの資源を消費する
RTOSの1つ目のデメリットは、CPUメモリを消費することです。
RTOSは、プログラムによって記述されています。その結果、RTOSを搭載すると、短い時間CPUが占有され(オーバヘッド)、メモリも消費されます。
このため、限られたリソースの中で動作するよう設計されたコンパクトなRTOSを選択することが重要になります。
【デメリット2】RTOSを扱うためのスキル、習得に伴うコストがかかる
RTOSの2つ目のデメリットは、RTOSを扱うためのスキル、習得に伴うコストがかかることです。
RTOSは、通常のOSとは異なり、RTOS特有の作法を理解した上でプログラミングをする必要があります。
このため、RTOSを扱うためのスキルが必要になります。スキルがない場合、習得するための時間・費用コストがかかってしまいます。
リアルタイムOS(RTOS)と汎用OSであるLinux・Windowsの違い
ここまでRTOSを紹介してきましたが、汎用OSとはどのような違いがあるのでしょうか。
RTOSの中でも代表的なμITRONを例に、RTOSと汎用OSであるLinuxやWindowsと比較を行います。
μITRON(読み方:マイクロアイトロン)とは
μITRONとは、RTOSの仕様の一つ。トロン協会が仕様を定めており、API仕様はオープンになっている。
μITRON・Linux・Windowsの違い・比較表
μITRON | Linux | Windows | |
---|---|---|---|
メモリ使用量 | 数Kバイト~1Mバイト | 数Mバイト~数十Mバイト | 数Mバイト~数十Mバイト |
利用できるCPU | 16bit〜64bit | 32bit以上 | 32bit以上 |
ライブラリ | 少ない | 豊富 | 豊富 |
リアルタイム性能 | 高い | 低い | 低い |
利用目的 | 機械を制御 | 人が機械を制御 | データを処理 |
μITRON・Linux・Windowsのメモリ使用量の違い
μITRON | Linux | Windows | |
---|---|---|---|
メモリ使用量 | 数Kバイト~1Mバイト | 数Mバイト~数十Mバイト | 数Mバイト~数十Mバイト |
μITRON・Linux・Windowsは、それぞれメモリ使用量容量が異なります。
μITRONは、数Kバイト~1Mバイトのメモリ容量です。RTOSは、限られたメモリで動作するように設計されているため、RTOSであるμITRONも、小さなメモリで動作します。
一方、汎用OSであるLinuxやWindowsは、数Mバイト~数十Mバイトの容量を必要とします。このため、小規模な組み込みシステムに搭載すると、激しいメモリ消費を必要するため、不向きです。
μITRON・Linux・Windowsの利用できるCPU
μITRON | Linux | Windows | |
---|---|---|---|
利用できるCPU | 16bit〜64bit | 32bit以上 | 32bit以上 |
μITRON・Linux・Windowsは、利用できるCPUのbit数が異なります。
μITRONは、16bit〜64bitのCPUが用意されています。一方、Linux・Windowsは32bit以上です。
μITRON・Linux・Windowsのライブラリの違い
μITRON | Linux | Windows | |
---|---|---|---|
ライブラリ | 少ない | 豊富 | 豊富 |
μITRON・Linux・Windowsは、用意されているライブラリの量が異なります。
ライブラリとは
ライブラリとは、汎用的に使うプログラム、機能、データを纏めたもの。ライブラリ単独では起動しない。
μITRONは、LinuxやWindowsと比較すると、ライブラリの数が少ないです。
μITRONを含むRTOSは、限られたリソースの中で動作するよう、必要な機能だけに絞り込んで設計されているため、汎用OSと比較するとライブラリの数が少ないです。このため、TCP/IPなど、別途ミドルウェアを搭載する必要があります。反対に、必要な機能だけを選択し、システムを最適化できるというメリットであるとも言えます。
一方、LinuxやWindowsなどの汎用OSは、元々ライブラリの数が豊富であり、また、PC用のソフトウェアに対応しているなどのメリットもあります。
μITRON・Linux・Windowsのリアルタイム性能の違い
μITRON | Linux | Windows | |
---|---|---|---|
リアルタイム性能 | 高い | 低い | 低い |
μITRON・Linux・Windowsは、リアルタイム性能が異なります。
μITRONは、LinuxやWindowsと比較すると、RTOSであるため、リアルタイム性能が高いです。組み込みシステム向けに設計されているため、当然と言えます。
一方LinuxやWindowsは、元々PC向けに開発されているため、μITRONほどのリアルタイム性能はありません。
しかし、最近では、組み込みLinuxやWindows Embedded、LinuxとRTOSの共存ソリューションなど、組み込みシステム向けの製品も出てきています。とは言え、高いリアルタイム性能が必要とされる場合、RTOSを採用した方が良いと言えます。
μITRON・Linux・Windowsの利用目的の違い
μITRON | Linux | Windows | |
---|---|---|---|
利用目的 | 機械を制御 | 人が機械を制御 | データを処理 |
μITRON・Linux・Windowsは、それぞれ利用される目的が異なります。
μITRONは機械を制御するOS、Windowsは人が機械を制御(man machine)するOS、Linux(Unix)はデータを処理するOSです。
リアルタイムOS(RTOS)のシェア
以下は、トロンフォーラムが行った「2019年度組み込みシステムにおけるリアルタイムOSの利用動向に関するアンケート調査報告書」の結果です。
出典:組み込みOSのAPIはTRON系OSがシェア60%、24年連続トップ
μITRONを含むITRON仕様のRTOSが1位であり、45%のシェアを占めています。
ITRONは、以下の2つのメリットがあります。
- OSの仕様が特定の会社の利益や特定の国の政策に縛られない
- 仕様がオープンになっているため利用者が手を加えられる
このため、シェアがトップであると考えられます。
リアルタイムOS(RTOS)の種類
主なRTOSの種類として、以下が挙げられます。
- FreeRTOS
- TOPPERS
- eT-Kernel
- embOS
- ThreadX
- μC3(マイクロ・シー・キューブ)/Compact(弊社製品)
- μC3(マイクロ・シー・キューブ)/Standard(弊社製品)
- μC3(マイクロ・シー・キューブ)/Standard+M(弊社製品)
- μC3(マイクロ・シー・キューブ)+Linux(弊社製品)
弊社製品「μC3(マイクロ・シー・キューブ)」のご紹介
マイコン向け超軽量カーネルを採用したRTOS「μC3(マイクロ・シー・キューブ)/Compact」
μC3(マイクロ・シー・キューブ)/Compactは、マイコン内蔵の小さなメモリだけで動作するように最適化された、コンパクトなμITRON4.0仕様のRTOSです。
μC3/Compactは、ソースコードに直接コンフィグレーションを行うのではなく、付属のコンフィグレータによりGUIベースでRTOS、TCP/IP、デバイスのコンフィグレーションからベースコードの自動生成まで行います。
- 小さいフットプリント
- マイコンの小さなROM/RAMのみで動作するように最適化された最小2.4Kbyteのコンパクトなカーネル。メモリ容量が小さい安価なデバイスを使用する事ができます。
- μC3/Configurator付属
- 選択・設定するだけでベースコードが生成できるコンフィギュレーションツール。開発時間の大幅な短縮や、コーディングミスの減少が可能。RTOSの初心者でも簡単に開発をスタートすることができます。
- 豊富なCPUサポート
- 業界随一のCPUサポート実績があり、技術サポートも充実しています。CPUの選択肢を広げ、機会費用を抑える事ができます。業界随一のCPUサポート実績があり、技術サポートも充実しています。ご使用予定のデバイスで直ぐに開発着手が可能で、ご質問に対して24時間以内の1次回答を徹底しています。
- 省電力対応
- デフォルトで省電力機能がついているため、システム全体の省電力に貢献します。
詳しい資料をご希望の方は、下記より製品ガイドをダウンロードしてください。
高性能リアルタイム処理向けRTOS「μC3(マイクロ・シー・キューブ)/Standard」
μC3(マイクロ・シー・キューブ)/Standardは、μITRON4.0のスタンダードプロファイルをベースに、32/64ビットプロセッサが搭載された組込みシステム向けのRTOSです。
μC3/Standardは、高性能プロセッサがより高度なリアルタイム制御に耐えられるよう、割込み禁止時間を極力なくし、割込み応答性を最重要課題として設計したRTOSです。
ARM Cortex-Aシリーズ、ARM Cortex-Rシリーズだけでなく、高性能な ARM Cortex-MやRenesas RXシリーズにも対応しています。
- 32/64bitの高性能プロセッサに最適化
- 割り込み応答性を高め、32/64bitの高性能プロセッサ向けに最適化されたμITRON4.0仕様のカーネル。
- 豊富なプロセッサ・サポート
- 業界随一のプロセッササポート実績があり、技術サポートも充実しています。CPUの選択肢を広げ、機会費用を抑える事ができます。業界随一のCPUサポート実績があり、技術サポートも充実しています。ご使用予定のデバイスで直ぐに開発着手が可能で、ご質問に対して24時間以内の1次回答を徹底しています。
- マルチコア対応
- 組込み機器向けに最適なAMP型カーネル。マルチコアによって、リアルタイム性能を強化します。
- 豊富なデバイスドライバを用意
- I2C, SPI, GPIO, SDなどのデバイスドライバをオプションで用意。(UART, Timer, INTCはμC3に、EthernetドライバはμNet3に付属しています。)
詳しい資料をご希望の方は、下記より製品ガイドをダウンロードしてください。
マルチコアAMP拡張版RTOS「μC3(マイクロ・シー・キューブ)/Standard+M」
μC3/Standard+Mは、μC3/StandardにAMP型のマルチコア拡張を追加したマルチコアプロセッサ向けのリアルタイムOSです。
μITRON4.0のスタンダード・プロファイルをベースに、AMP型の特徴を活かしたコア毎の処理・リソースの割り当て、コア間連携のためのAPIを追加しています。
ARM Cortex-Aシリーズを中心にマルチコアのMPUをサポートしています。
- リアルタイム処理に最適なAMP型カーネル
- 自由にタスクや資源を各CPUに割り当てることで、システムの負荷分散が容易に実現できます。
- μITRON APIによるCPU間通信機能
- タスク間通信などの機能をCPU間通信でも実現ができ、シングルコアと同様にプログラミングができます。
- 一括リンクによるコード効率の向上
- コア別のプログラムを一括リンクすることで、より効率の良いプラグラミングができます。
- 多彩なミドルウェアや豊富なデバイスドライバを用意
- μC3/Standard対応のミドルウェアやデバイスドライバを利用できます。
詳しい資料をご希望の方は、下記より製品ガイドをダウンロードしてください。
LinuxとRTOSの共存ソリューション「μC3(マイクロ・シー・キューブ)+Linux」
μC3+LinuxはマルチコアCPUにLinuxとRTOSを共存させ、OS間の通信を可能にするソリューションです。
種類の異なった2つのOSを共存させることで、RTOSのリアルタイム性能とLinuxが持つ豊富なソフトウェア資産を有効に活用することができます。
- 異なったタイプのマルチコアCPUに対応
- ホモジニアス(同一プロセッサ・コアによる構成)とヘテロジニアス(異なるプロセッサ・コアによる構成)の両方に対応しています。
- メーカー提供のLinuxディストリビューションに対応
- CPUベンダーが標準でサポートするLinuxに対応し、アプリケーションの開発が迅速にできます。
- OS間通信をサポート
- メッセージ形式のAPI(RPMsg)を使って、OS間の通信を容易に実現できます。
- OpenAMP仕様を採用
- Multicore Associationによって標準化されたOpenAMPの仕様に対応しています。
- RTOSによる高速ブート
- μC3を先に起動することで高速起動ができます。
詳しい資料をご希望の方は、下記より製品ガイドをダウンロードしてください。
【無料】リアルタイムOS(RTOS)入門者向け資料
弊社主催のウェビナー「RTOSをマスターしたい人のための体験セミナー」の講演資料を無料ダウンロードできます。
プログラムは、以下の通りです。
プログラム
- RTOSって何?
- RTOSのメリットとは?RTOSがあればこんな事ができます
- RTOSを利用した開発イメージ
- 組込み機器で利用できるRTOSについて
- μITRONについて
- μC3(弊社製品)とは?
講演資料をご希望の方は、以下よりダウンロードしてください。