連載
FDDからブートできる「MenuetOS」とCPUキャッシュにOSが載る「KolibriOS」:リアルタイムOS列伝(46)(2/3 ページ)
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第46回は、フロッピーディスク(FD)1枚にOSとアプリケーション一式が収まる「MenuetOS」と、MenuetOSからフォークした「KolibriOS」について紹介する。
「MenuetOS」の特徴
MenuetOSの特徴は以下の通り。なかなかキマった特徴を持つOSとなっている。
- Monolithic Kernel、Pre-emptive Kernelで、Multi-Taskをサポートする。ProcessやThreadではなく、あくまでもTaskレベルである。またRing-3保護(ユーザープログラムはRing-3、KernelはRing-0で動作)が提供される
- Schedulerはデフォルトで1kHz(つまり1msのTime Slice)、オプションで100kHz(10μsのTime Slice)まで引き上げられる。ただしTime critical process supportがあり、任意のプロセッサ上で割り込みを一切入れない形でTaskを実行できる
- Hard real-time data fetchのサポート
- SMP対応。最大32CPUまで管理できる
- APIに当たるものは全てSystem Call 0x60で実装される。つまりMS-DOSで使っていたInt 60Hである。このため、アプリケーション開発時にSystem LibraryなどをLinkする必要がない(というか、できない)。System Callの一覧はWebサイトで公開されている。OSの機能やGUI、USBの制御など、全てSystem Callで実装される
- アプリケーションはFASMではなく、C/C++やその他の言語を使って開発することが可能。というかInt xxHのSystem Callが実行できれば問題ない。ただし、提供されるサンプルコードは当然全てFASMを利用したアセンブラで提供される。一応Cのライブラリは存在するが、バージョンはかなり古い
- Function Callを使っているが故に、既存のOSのAPI(POSIXやWin32など)とは一切互換性がない。ネットワークI/Fも同じで、TCP/IPのSocket I/Fをサポートしているものの、呼び出しはInt 60HのFunction 53を利用する形になっているため、コードそのものは既存のSocket Libraryと互換性がない
- GUIに対応しているが、グラフィックはVBE(VESA Bios Extensions)を利用して表示される。つまりグラフィックハードウェアは利用しない(つまり、どんなGPUであってもVBEに対応していれば利用できる)
- USB 1.1(Keyboard&Mouse)とUSB 2.0(Storage/Printer/Webcam/TV/Radioの各Class対応)
標準でGUIが提供されるが、別にGUIが必須というわけではなく、Time critical process supportやHard real-time data fetchなどの機能に加え、メモリ/ストレージのフットプリントが小さいことを含めて、RTOSというよりも組み込み向けに最適といえるだろう。2024年3月にリリースされたVersion 1.50.00でもBoot Imageは1.44MBに収まっているほどだ。
対応しているハードウェアはやや古いものが多いが、逆に言えばIntelのAtomベースの組み込み向けCPUなどでも十分なスピードで動作するという言い方もできる。QEMUやVirtualBoxなどでも動作するので、簡単に試せることも長所といえるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.