POSIX組込みOS探し
需要のわりに良く対応できていないのは、"シングルプロセス/マルチスレッド"ユースケース。Windows、LinuxやBSDのようなOSは、マルチプロセス/マルチスレッドであり、普通の処理系はそのような環境を想定して標準ライブラリがデザインされている。
いくつか移植候補を出してみた。特にOSvはLinux APIの多くをサポートしている(もともとJavaVMが載る程度のサポートを既に持つ)のでサポートを検討したい。
重要な問題は、これらに移植したとしてどうやってCI/QAするかという点で、今のところ良い解が無い。シングルプロセス環境では追加のテストコードを実行することができない、要するにテストまで全て含めたOSイメージを生成し、ターゲットハードウェアで動作させる必要が有る。
(OSv)
OSvは最初からLinux代替OSとして企画されているのでAPIサポートは申し分ない。
ここで取り挙げる他のOSと異なり、OSvはエンタープライズアプリケーション向けで、XenやVirtualBoxのようなHypervisor上での動作となる。当然マイコン向けの移植も今のところ無い(ARMサポート自体は企画されている)。
RIOT
- http://www.riot-os.org/
- LGPL2
- 独自 network(INRIA)
- libcなし
- POSIX風wrapper: pthread、socket
INRIA製の組込みOSであるRIOTは、それなりのPOSIXサポートを備えている。ただし、(この手のOSでは典型的な制約だが、)libcやファイルシステムは無い。例えば、mallocは有るがfreeが無いので動的なメモリ管理はできない。ただし外部パッケージとしてメモリアロケータであるTLSF( http://tlsf.baisoku.org/ )が提供されている。
開発はそれなりに活発に見えるが、Design winを知らない。ContikiやFreeRTOSと比べて歴史は浅いが、現代っ子として期待させる。
eCos
現在はeCos centricでeCos proとして営業されているeCosは、POSIXとITRONのデュアル実装でそれなりに採用されている。Redbootの基盤部分として使用されていることでも知られる。
SourcewareのCVSはnot foundになっているが、eCos centricのHgでコード等は見ることができる( http://hg-pub.ecoscentric.com/ecos/ )。
実は、eCosはここで挙げるカーネルで唯一GitHubにホストされていない。
RTEMS
RTEMSはかなりのPOSIXをサポートしている。ファイルシステムのサポートも比較的充実していて、eCosのようなJFFS2に加えてNFSをサポートしている。NFSはSunRPC移植と自前のアダプタで実装されている( http://git.rtems.org/rtems/tree/cpukit/libfs/src/nfsclient )。
ちなみに、RTEMSは次のリリース(4.11)でITRONサポートを廃止する。また、近年の開発ではPOSIXへの傾倒を強めている。