Linux環境でのハードリアルタイムを実現する「RTAI」リアルタイムOS列伝(27)(1/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第27回は、Linux上でRTOS環境を提供する「RTAI」紹介する。

» 2022年10月13日 07時00分 公開
[大原雄介MONOist]

 前回はWindows上でリアルタイムOS(RTOS)環境を提供する「RTX64」をご紹介したが、今回ご紹介するのはLinux上でRTOS環境を提供する「RTAI」である(図1)。

図1 図1 「RTAI」のWebサイト[クリックでWebサイトへ移動]

⇒連載記事「リアルタイムOS列伝」バックナンバー

Linux環境で何とかハードリアルタイム処理を動かしたい

 RTAIをもともと開発したのは、Dipartimento di Ingegneria Aerospaziale del Politecnico di Milano(DIAPM:ミラノ工科大学航空宇宙工学科)のPaolo Mantegazza氏らのチーム「らしい」(少なくともRTAI 0.1におけるアクセス先はMantegazza氏になっている)。

 そもそものRTAIの目的だが、要するにLinux環境で何とかハードリアルタイムの処理を動かしたかった、ということらしい。ちょっと後になるが、2006年に“CACSD under RTAI Linux with RTAI-LAB”という論文が出ている(南スイス応用科学芸術大学のRoberto Bucher氏とDIAPMのLorenzo Dozio氏の共著)。これはCACSD(Computer Aided Control System Design)ソフトウェアとしてRTAI-LABと呼ばれるツールをLinux上で動かすための実装を論じたものだが、名前の通りCACSDというのは単純なデバイスだけでなく、複雑なシステムをリアルタイム制御するためのソフトウェアであり、ただしComputer Aidedという用語から分かるように、これをGUIベースで簡単にユーザーが認識したり操作したりできるようにするためのものだ。

 GUIを作るという観点では、UNIXなどのGUI構築に用いられてきたX Window Systemはお手軽であり、そのためのプラットフォームとしてLinuxを使うのは妥当な選択である。ただ通常Linuxではハードリアルタイム性に欠ける。一番手っ取り早いのは、GUI用のLinuxマシンとは別に、RTOSが動作する制御専用マシンを用意して、これらの間を専用リンクか何かでつなぐ(Ethernetでもいいだろうがレイテンシが気になるところで、シリアル通信か何かを用意するのが普通だろう)という形になるが、当然スマートとはいえない。Linux上でハードリアルタイムを扱える「何か」が欲しい、というあたりがRTAIの開発動機になったようだ。

 実はこうした目的を実現するためのものとして「RT-Linux」が存在する。ただこちらはそのハードリアルタイムを実現するための仕組みが特許(“Adding real-time support to general purpose operating systems”)として成立しており、しかもまずFSMLabsという会社によって商用化された上、そのFMSLabsがWind River Systemsに買収されており、商用システムはともかく研究用にいじり倒すには不向きであった。

 そこで、Mantegazza氏らは別の方法を取った。それが「ADEOS(Adaptive Domain Environment for Operating Systems)」を利用するというものだ。ADEOSとは何か? を簡単に言えば、CPUとOSの間に介在するNano Kernel(ナノカーネル)である(図2)。

図2 図2 この図は簡略化しすぎていて、ハイパーバイザーとと何が違うのかよく分からない[クリックで拡大]

 ハイパーバイザーと異なるのは、各OSが直接ハードウェアをたたくこともできる他、ADEOS経由でのアクセスもサポートしていることだろうか(図3)。そもそも一般的なハイパーバイザーの場合、特定の処理だけを優先すること自体はQoS(Quality of Service)的な要素で実装は可能だが、それをハードリアルタイムレベルで優先する機能はあまり聞いたことがない。加えるとハードウェア割り込みの優先的な伝達なども実装として必要になるから、実際にはハイパーバイザーというよりは本当にもうNano KernelのOSが動き、その上でゲストOSが動く、という感じに近い。

図3 図3 A〜DがPIPEで、このPIPE経由での通信となる[クリックで拡大]
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.