RTOS(リアルタイムOS/Real-Time Operating System)とは
「RTOS」とは「Real-Time Operating System」の略で、汎用OSとは異なる、組込みシステム向けのOSの一種です。制約のある処理を実施するための予測性能を持つことから、適切な時間内に適切な処理を完了させられるように組み込まれています。このようなリアルタイム性の実現を目的に、敏速なスケジューリングや中断処理、タスク管理などの機能を備えていることが前提です。
また、自動車や家電製品、医療機器など、リアルタイム性が要される組込みシステムで幅広く使用されています。例えば、自動車の場合、エンジンやブレーキなどの制御システムに使用され、敏速な処理を実施しています。
プロジェクトによって、異なる機能や性能が求められるため、適切な選定が非常に重要です。RTOSの組込みや開発においては、メモリ効率や省電力性など、組込みシステムに求められる要件を満たさなければなりません。
組込み開発でRTOSが必要な理由
組込み開発では、特定の範囲内であるイベントが発生した場合、車用ECUや産業用ロボットなどのアプリケーションでは、システムの正常な動作が必須です。したがって、汎用OSではなく、あらかじめ設定された時間内に処理を実施する、リアルタイム性の高いRTOSが求められます。そして、緊急停止などの処理が実施されるまでの時間が確保されることにより、安全性が保障されます。
リアルタイム性は大きく分けて、時間に対して厳密な処理を実施できる「ハードリアルタイム」と、時間の遅延が許容される処理を実施できる「ソフトリアルタイム」の2種類です。
1.ハードリアルタイム
設定された時間内に確実に処理を完了させる、リアルタイム性の一種です。例えば、自動車のECUなど、致命的な事故を防ぐ用途に適用されますが、処理の完了期限を過ぎると、システム全体が停止してしまう可能性があります。このような用途では、汎用OSの場合は確実な処理が保証されません。RTOSは、時間の制約を考慮した上で組み込まれ、特定のハードウェアやアプリケーションへの最適化を目指し、信頼性の厚いシステムの組込みに使用します。
2.ソフトリアルタイム
処理にかかる時間を緩和する制約があり、処理を一定時間内に完了させる必要がないため、一定の妥協が許容されます。例えば、銀行のATMや自動販売機、座席予約システムなどが該当し、一定時間内に処理が完了しなくても、何らかの解決策が見つかることが多いです。また、リトライ機能によって、問題が発生した場合に処理の再試行が可能なので、より柔軟に処理を提供できます。
RTOSの6つの特徴
RTOSはさまざまな特徴を持ち、自動車や航空機、医療機器、工場制御などの幅広い分野において、高度なリアルタイム処理を実現しています。
1.最悪応答時間の保証
汎用OSでは、処理が完了するまでの時間が延びる場合があり、最悪の場合は応答が遅れる可能性を否めません。一方、RTOSはリアルタイム性の要件を満たすために、処理の完了に要する時間を予測し、最悪応答時間を確保するように組み込まれており、この問題が解決されます。
2.高パフォーマンス
敏速で応答性に秀でており、汎用OSより短時間でアクションを実施できる点がポイントです。リアルタイム処理に最適化されたアーキテクチャが、アクションが実施されるまでの時間を最小限に抑えられます。例えば、RTOSの使用により、複数のタスクを同時にこなせば、処理時間の短縮が可能です。
3.ディターミニズム(決定論性)
何度繰り返しても、同じインプットに対して同じ結果を出力するように組み込まれています。このディターミニズムをもとに、アプリケーションが想定外の結果を出力することを防ぎつつ、信頼性を高めます。工場オートメーションや航空宇宙など、厚い信頼性が求められる産業に欠かせません。
4.優先度によるスケジューリング
優先度の高いタスクから順番に実施されるスケジューリングにより、リアルタイム性が求められるシステムでも、正確なタイミングにおける処理が可能です。各タスクに優先度が設定され、高いタスクが実施されるまで、低いタスクはスタンバイ状態になります。
5.スモールフットプリント
リアルタイムで処理を実施するためのOSであり、小規模なものでも安定して稼働するように組み込まれています。このスモールフットプリントが備わっていれば、メモリやストレージ容量の制限がある組込みシステムでも、効率的に実施できます。また、小さなコードサイズにより、ハードウェア資源の節約を促すことから、省電力性も優秀です。
6.安全性およびセキュリティ
RTOSは、クリティカルなシステムに使用されることが多く、故障が大きなトラブルを引き起こす可能性があるため、高度な安全性と堅牢なセキュリティが求められます。したがって、脆弱性や攻撃に対する防御策を持ち、システム障害を最小限に抑えることを目的とした、さまざまな機能を提供しています。例えば、特定のメモリ領域にのみにアクセスしたり、外部からの不正なアクセスを検出したりするなどです。これらは、安全でセキュアなシステムに欠かせない要素となっています。
RTOSのアーキテクチャ(設計思想)について
RTOSのアーキテクチャには、それぞれの部品が自立するスペースに仕切られた「マイクロカーネルシステム」と、いずれも異なるシステム構造で成り立ち、単独のスペースで動作する「モノリシックシステム」の2種類があります。
マイクロカーネルシステム
OSの中核機能であるプロセス管理をはじめ、メモリやタスク、割り込みの管理など、カーネル内の機能を最小限に抑える点が特徴です。それぞれの部品は自立したスペースに仕切られており、カーネルの外側でドライバーやネットワークスタック、ファイルシステムなどの機能を提供します。柔軟性や拡張性、保守性に秀でていますが、敏速性が求められる場合には向いていません。
モノリシックシステム
マイクロカーネルシステムとの相違点は、単独のスペースで動作するため、OS全体がひとつのカーネルとして成り立っている点です。一般的に敏速でリアルタイムシステムに向いていますが、開発の複雑さや拡張性の欠如が課題となっています。一部を変更する場合、OS全体に影響を及ぼすリスクが考えられます。
RTOSの種類について
RTOSにはさまざまな種類がありますが、特に広く使用されている代表的なものを以下より5つを紹介します。
ERIKA Enterprise
「ERIKA Enterprise」は車載向けのフリーRTOSであり、欧州では車載向けの他に、産業機械への組込み用としてシェアが高いです。オープンソースで開発されており、「AUTOSAR(Automotive Open System Architecture/オートザー)」に対応しているため、車載ソフトウェアに使用されます。最新のバージョンでは、「ARM Cortex?Mシリーズ」も対象として加わっています。
TOPPERS(トッパーズ)
「TOPPERS」は、C言語でプログラムを記述できる、AUTOSAR仕様に準拠したRTOSです。現在、さまざまな用途に対応しており、多数のプラットフォームで使用されています。また、TOPPERSプロジェクトには、それぞれ特徴が異なる、「ATK2カーネル」をはじめとした複数のカーネルがあります。オープンソースなので、幅広い開発者によるコミュニティに支えられています。
VxWorks(ブイエックスワークス)
「VxWorks」は30年以上もの歴史を経て、現在も流通しているRTOSの中で最古モデルのひとつです。優秀なリアルタイム処理性能や厚い信頼性、堅牢なセキュリティ、さまざまなアーキテクチャのサポートなどが特徴です。また、C言語でプログラムされており、開発者が非常に使いやすい環境を提供することから、RTOSのエキスパートだけではなく、一般的な組込みシステムの開発者にも扱われています。
Azure RTOS(アジュール/旧:ThreadX)
「Azure RTOS」は、かつて「Express Logic社」が開発していた「ThreadX(スレッドエックス)」をMicrosoftが買収しました。ThreadXは小規模なデバイス向けのRTOSであり、組込みシステムやIoT、産業自動化などの分野で使用されています。C言語で開発されており、スレッドやセマフォ、キューなどの機能を備え、敏速性や信頼性、省電力性が優秀です。
FreeRTOS(現:Amazon FreeRTOS)
「FreeRTOS」は、2017年にAmazonが買収したオープンソースのクラウド型で、多くのハードウェアプラットフォームに対応しています。C言語でプログラミングされ、軽量でありながら機能が豊富です。組込み開発に要される機能が充実しており、ネットワーキングやファイルシステム、セキュリティなどサポートされています。
まとめ
RTOSは、高パフォーマンスやディターミニズム、スモールフットプリントなどの特徴があり、リアルタイム性を要する組込みシステムで幅広く使用されています。リアルタイム性とアーキテクチャはそれぞれ2種類に分類され、目的に合わせた対応が可能です。
本記事はRTOSを中心に解説しましたが、車載システムの開発にはRTOSだけではなく、AUTOSARを使用する場合もあります。NECソリューションイノベータが提供する車載系組込みソリューションは、車載システム開発に関するさまざまな課題を解決するソリューションです。以下の資料ダウンロードページにて、より詳細を得られるので是非ご覧ください。