検索
連載

欧州の航空宇宙分野で名を馳せるRTOS「PikeOS」の出自はL4 KernelにありリアルタイムOS列伝(52)(2/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第52回は、欧州の航空宇宙分野で広く利用されている「PikeOS」を紹介する。

Share
Tweet
LINE
Hatena

L4 KernelからカーネルもAPIもかけ離れていく流れに

 さてそれではもう少しPikeOSの中身を。SYSGOのRobert Kaiser博士(当時はManaging Director兼取締役であった。2009年からドイツのビンゲン応用科学工科大学教授、その後2011〜2023年にドイツのラインマイン大学教授を務める)とStephan Wagner氏による論文によれば、SYSGOは当初P4と呼ばれるL4 version 2.0のAPIに互換な独自のマイクロカーネルを、開発していたそうだ。L4そのものではないのは、組み込み向けに移植性を高めるために完全にC言語で記述され、また完全なPre-emptive性を備えた構成になったからだ。ただしこれを利用して作成したP4であるが、実際に組み込み向けに投入して利用すると、L4 KernelのAPIに色々問題があることが分かったそうで、最終的にPikeOSではL4 Kernelとは全く異なるAPIを提供することになった。

 カーネルそのものもスクラッチから書き直され、APIも異なるとなると、もうL4 Kernelをベースとしたという表現そのものが怪しいのだが、ただSYSGOはPikeOSの開発にあたり、L4 Kernelの元々の開発者であった(連載第19回の冒頭でも出てくる)Jochen Liedtke博士の「On micro-kernel construction」という論文で提示された原則に基づいて行われた、としているあたりは間接的にL4 Kernelの影響を受けていると言ってもよいかもしれない。

 そんなPikeOSの概略がこちら(図2)。これだとPikeOSがやたらに大きいように思えるが、ここはマイクロカーネルベースの本当に薄い層で、プリミティブなカーネルとタイプ1(ベアメタル)ハイパーバイザーのみで構成される。

図2
図2 「PikeOS」の構成[クリックで拡大] 出所:SYSGO

 そのPikeOSのカーネルとハイパーバイザーの上に、複数のGuest OSやUser Mode Driverが動作する、という形になっている。このGuest OSはそれぞれ異なるパーティションに割り振られる形になっているが、それらのスケジューリングもTime-triggeredとEvent-triggeredの両方がサポートされており、またマルチプロセッサ環境であれば任意のパーティションに必要な数のCPUコアを固定的に割り当てることも可能である。

 それぞれのパーティション自体は完全にアイソレーションされており、完全に独立して動作できるようになっている。ちなみにI/Oに関してはこの手の方法だと直接ハードウェアを触るのは厳禁なので、一度PikeOSでリクエストを受けて、それをPikeOSが改めて実行する形になる。ただし、利用するプロセッサがIOMMUに対応している場合は、IOMMU Managerで不正なDMA転送などを防止することで、安全性を担保しながらゲストOSが直接DMAを発行できるため、性能の向上が図れるようになっている。

 ちなみにゲストOSとしては、2005年にPikeOSが初めてリリースされた時にはLinuxの他にPOSIXとOSEKのAPIに対応していた。OSEKは連載第9回のERIKA Enterpriseの所で少し触れたが、欧州の車載向けOSである。

 POSIXの方は、これに対応したRTOSが結構色々あるから、ポーティングは難しくないとしていた。現在は? というと、ElinOSを含むLinux、(ホストがx86に限られるが)Windows、POSIX API、ARINC 653(航空機のアビオニクス向けOSの仕様)準拠OS、PikeOS Nativeがサポートされるほか、その他のOS/RTOSの対応も可能とされる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る