検索
ニュース

UNIXを逆順で読んだ「Xinu」は教育向け、RTOS開発者のレファレンスにもリアルタイムOS列伝(41)(3/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第41回は、パデュー大学 教授のDouglas Comer氏が開発した、教育向けのRTOS「Xinu」はを取り上げる。

Share
Tweet
LINE
Hatena
前のページへ |       

ソースコードのほとんどをC言語で記述

 他にも幾つかの事例(どんな用途だったのかは不明だが、三菱電機が自動車向けにXinuを採用した、ゲーム機メーカーのBallyがピンボールゲーム機の制御にXinuを利用した、といった話も挙がっている)が聞こえてきており、2019年にはSTM32にXinuが移植され、現在も公開されている図4)。また、教材という意味では、2021年にXinuを利用した授業が少なくとも3つあったことは明らかにされている。教育用だけでなく実際の機器の制御にも使えるレベルのRTOSであることの傍証にはなるだろう。

図4
図4 STM32に移植されたXinuのWebサイト[クリックでWebサイトへ移動]

 Xinu自身はプリエンプティブなカーネルを持ち、プロセスベースの制御を行う。マルチプロセッサシステムへの対応は(標準では)備えておりらず、プライオリティベースでのスケジューリングが実装されている。プロセス間通信としてはセマフォとメッセージが用意されている程度であるが、その一方で仮想記憶やファイルシステム、リモートディスク/リモートファイル、名前空間などへの対応が用意されているというあたりはいかにも教育用という感じではある。APIは独自のものなので、POSIXへの対応とかはちょっと骨だろう。

 前述の「Operating System Design: The XINU Approach」には、ドライバの書き方やArmとx86での割り込みの処理の仕方の違い、システム初期化の中で行う処理の一覧、シェルの実装例、他のプラットフォームへの移植の方法なども説明されており、この本を読みながらソースコードを眺めると、その処理の意味や目的などが分かるような配慮がなされている。その意味でもこれは教科書であって、逆にソースコードだけ眺めていてもちょっと分かりづらい。ちなみにコードはほとんどがCで記述されており、例えばBeagleBone Black向けのカーネルの中でアセンブラで記述されているのはシステム初期化(intr.S)と、この中から呼ばれるメモリ初期化(start.S)、それとコンテキストスイッチ(ctxsw.S)の3つだけしかない。

 ソースコードやバイナリは、パデュー大学のXinuのWebサイトから今もダウンロード可能だが、現状はBeagleBone Black用Galileo用、それとOracleのVirtualBox Hypervisor上で動作するものが用意されており、いずれも2015年リリースとなっている(逆に言えばその後のアップデートはない)。

 ただし、古いコードも公開されている他、先述したようにSTM32への移植例もあるので、他の環境で使うことも不可能ではないだろう。RTOSの勉強用、というよりもRTOSを自分で作る人向けの教材として今後もXinuは参考にされていくものと思われる。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る